优化算法 | params | states | hyperparams | optimizer |
---|---|---|---|---|
梯度下降 | - | - | - | - |
随机梯度下降 | - | - | - | - |
小批量随机梯度下降 | - | - | - | - |
动量法 | w, b | 速度变量v | lr, momentum | sgd |
AdaGrad算法 | w, b | 按元素平方的累加变量s | lr | Adagrad |
RMSProp算法 | w, b | 按元素平方的指数加权移动平均s | lr, alpha | RMSprop |
AdaDelta算法 | w, b | s, delta | rho | Adadelta |
Adam算法 | w, b | v, s | lr, t | Adam |
7.4 动量法
背景:梯度下降中,自变量的迭代方向仅仅取决于自变量当前位置。
动量法在每个时间步的自变量更新量近似于将最近1/(1−γ)
个时间步的普通更新量(即学习率乘以梯度)做了指数加权移动平均后再除以1−γ
。所以,在动量法中,自变量在各个方向上的移动幅度不仅取决当前梯度,还取决于过去的各个梯度在各个方向上是否一致。
动量法依赖指数加权移动平均使得自变量的更新方向更加一致。
- 动量法使用了指数加权移动平均的思想。它将过去时间步的梯度做了加权平均,且权重按时间步指数衰减。
- 动量法使得相邻时间步的自变量更新在方向上更加一致。
7.5 AdaGrad算法
背景:梯度下降和动量法中,目标函数自变量的每一个元素在相同时间步都使用同一个学习率来自我迭代。
AdaGrad算法,它根据自变量在每个维度的梯度值的大小来调整各个维度上的学习率,从而避免统一的学习率难以适应所有维度的问题。
- AdaGrad算法在迭代过程中不断调整学习率,并让目标函数自变量中每个元素都分别拥有自己的学习率。
- 使用AdaGrad算法时,自变量中每个元素的学习率在迭代过程中一直在降低(或不变)。
7.6 RMSProp算法
背景:AdaGrad算法,因为调整学习率时分母上的变量st
一直在累加按元素平方的小批量随机梯度,所以目标函数自变量每个元素的学习率在迭代过程中一直在降低(或不变)。因此,当学习率在迭代早期降得较快且当前解依然不佳时,AdaGrad算法在迭代后期由于学习率过小,可能较难找到一个有用的解。
RMSProp算法和AdaGrad算法的不同在于,RMSProp算法使用了小批量随机梯度按元素平方的指数加权移动平均来调整学习率。
7.7 AdaDelta算法
背景:AdaGrad算法在迭代后期可能较难找到有用解。
AdaDelta算法没有学习率超参数,它通过使用有关自变量更新量平方的指数加权移动平均的项来替代RMSProp算法中的学习率。
7.8 Adam算法
背景:Adam算法在RMSProp算法基础上对小批量随机梯度也做了指数加权移动平均。
- Adam算法在RMSProp算法的基础上对小批量随机梯度也做了指数加权移动平均。
- Adam算法使用了偏差修正。