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