Adam优化方法显存占用情况
AI摘要: Adam优化方法显存占用情况。一般来说,Adam用到的信息更多,所以需要的内存占用更大。曾有个实验,Optimizer选择SGD的时候,Batch Size能选择20,但是换成Adam时候,Batch Size只能选择2。Adam的自适应体现之处在于指数平滑,缓解了梯度方向剧变,使收敛路径更平滑一点。
一般来说,Adam用到的信息更多,所以需要的内存占用更大。曾有个实验,Optimizer选择SGD的时候,Batch Size能选择20,但是换成Adam时候,Batch Size只能选择2
矩的定义
矩来自物理的定义,是距离和物理量的乘积,反映的是物体空间分布;
在数学中,矩表示一种数据测度: 称为 关于 的 阶矩.
特别的,,称为 阶原点矩, 称为中心距
再特别一点, 称为关于 的 阶矩.
如果 ,则称为 阶混合原点矩
如果 ,则称为 阶混合中心距
指数滑动平均
指数滑动平均法简称为指数平滑法。是利用上一次的实际值和预测值(估算值),对它们进行不同的加权分配,求得一个 指数 平滑值,作为下一期预测值的一种预测方法。它的预测公式是:
通常不直接利用一次指数平滑法来预测,而是利用二次指数平滑法,求出平滑系数,建立起预测模型,再进行预测。三次以上指数平滑法几乎适用于所有的时间序列预测.
Adam原理(全称:自适应矩估计优化器)
最关键的地方是:使用指数加权移动平均值来估算梯度的动量和二次矩,状态变量:
可以发现,上面那项 其实就是梯度的一阶矩,下面那项 是梯度的二阶矩。一般来说,, 也就是说,方差估计的移动要远远慢于动量估计的移动。
修正矩估计的偏差
更新方程:
Adam本质是带有动量项的RMSprop,它利用梯度的一阶矩估计和二阶矩估计动态调整
这里的 当做归一化算了,可能的理解是: 只关心方向,范数无所谓了,反正有学习率
理解
其实每次训练的时候都是分批次训练的,从总体样本中抽取一部分作为本次训练的样本。那么用这部分小样本的梯度当做总体样本的梯度就是矩估计(之前一直不清楚自适应矩估计的矩体现在哪里)。然后,如果直接使用样本梯度当做总体梯度又会发现有点问题,那就是方差。很明显,抽取的批样本只是总体样本的一部分,那么批样本的梯度不可能正好就是总体样本的梯度,批样本的梯度服从一个随机分布,其期望是总体梯度,但是这个随机分布是有方差的。(balabalal,胡言乱语)
Adam的自适应的体现之处在于指数平滑,缓解了梯度方向剧变,使收敛路径更平滑一点。
内存占用
既然用了更多信息,那么内存占用自然更多,很明显批训练的Batch_Size 上界会更小.
Adam使用了参数、梯度、动量和二阶动量,所以它的内存占用量是数据的四倍