背景介绍
在机器学习中,对每一个数据点,我们通过最小化经验风险
来从数据中学习,其中
是模型的参数。对整个训练集
,目标函数即为
对应的梯度为
然而,当很大的时候,计算
个经验风险函数的梯度将会变得特别低效。因此,一般的我们会采用批次训练方法,每次独立均匀采样
(
),并且计算近似随机梯度
我们有。
Adam(Adaptive Moment Estimation)算法
Adam算法
初始化。对
,梯度、梯度平方的指数移动平均
、
,以及它们的偏差修正
、
由以下递推式给出:
其中代表逐元素乘积,下标
代表第
轮迭代,
(如无特殊说明,本文涉及的向量运算均为逐元素运算)。模型参数
按以下公式进行更新:
其中为步长,
是用来保证分母大于0。
Adam算法的优势:
- 速度快;
- 可用于非平稳的目标函数/数据,即梯度的均值、协方差变化大;
- 可用于有噪声并且/或者稀疏的梯度;
Adam更新规则
我们先忽略,假设
。在时间
,有效步长是
,其有两个上界:当
时,
;否则
。前者对应梯度稀疏的情况。
是不受梯度量级影响的。当更新方向
的模长变小时,有效步长
也变小。
假设的每一个元素
(
),我们可以重写更新方向:
其中是相对方差的估计。