优化算法-吴恩达学习笔记
1 Mini-batch梯度下降
2 指数加权平均
当较大时,相当于平均较多天数的数据,故会平坦一点,当然了由于平均了前些天的数据,只考虑了的当日数据,故会有延迟。相当于平均天的数据。
从左侧图可以看出,几乎考虑了之前所有天的数据,但是距离今天越远的数据所占权重越小,例如当时,,10之前的数据占比很小,故相当于考虑了最近10天数据的加权平均。
偏差的修正,我们发现刚开始的几天,指数加权平均的值比较小,例如第一天,只有,前几天一直有这种现象,为了使前几天更加准确,我们可以进行修正。当然不修正也行,只是前面的数据不太准确,熬过了前几天,后面的数据较不错了。
3 动量梯度下降
更新梯度的时候借助指数加权平均的思想,例如左图采用的是梯度下降法,可以看出y的梯度方向交替,采用梯度下降,若学习率过大可能导致y方向移动步伐过大,整个损失函数无法收敛,若学习率过小,更新过慢,若采用动量梯度下降更新方向更加一致,正负向相抵消。
指数加权平均
在实际中,常将看作是最近个时间步的值的加权平均,离当前时间步t越近的值获得的权重越大(越接近1)。
动量梯度下降法
使自变量更新的方向更加一致,降低发散的可能性。但各个方向学习率一致,还是会存在有些方向下降的过快,其他方向下降的过慢。
由指数加权平均理解动量梯度下降法,由指数加权移动平均的形式可得,速度变量实际上对序列做了指数加权移动平均。相比小批量梯度下降,动量法在每个时间步的自变量更新量近似于将前者对应的最近个时间步的更新量做了指数加权移动平均后再除以,变大只学习率可以相应变小。
4 AdaGrad算法
AdaGrad算法会使用一个小批量的随机梯度按元素平方的累加变量,这里开方、除法和乘法都是按元素运算的,这些按元素运算使得目标函数自变量中每个元素都分别拥有自己的学习率。若目标函数有关自变量中某个元素的偏导一直都较大,那么该元素的学习率降下降较快;反之,若目标函数有关自变量中某个元素的偏导数一直较小,则该元素的学习率下降的较慢。
由于一直在累加按元素平方的梯度,自变量中每个元素的学习率在迭代过程中一直在降低(或不变)。所以,当学习率在迭代早期降得较快且当前解依然不佳时,AdaGrad算法在迭代后期由于学习率过小,可能很难找到一个有用的解。
5 RMSprop
不同于AdaGrad算法里状态变量是截止时间步t所有小批量随机梯度按元素平方的累加,RMSprop算法借鉴了动量梯度下降和AdaGrad算法,将这些梯度按元素平方做指数加权移动平均,可以看作是对最近个时间步的小批量随机梯度平方项的加权平均。如此一来,自变量每个元素的学习率在迭代过程中就不再一直降低或不变。
例如的梯度比较大,则也比较大,在做更新的时候由于除上了,则其更新幅度也不是很大;的梯度比较小,则也比较小,在做更新的时候由于除上了,则其更新幅度也不会小太多。但是由于一直是整的,且还在不停的累加,故后面的更新幅值会比较小,更新很慢,若刚开始不在最优值附近,可能很难达到最优值。
6 AdaDelta算法
针对AdaGrad算法在迭代后期可能较难找到有用的解做了改进,且其没有超参数。与RMSprop算法一样,也使用了小批量随机梯度按元素平方的指数加权移动平均变量。与RMSprop不同的是,AdaDelta算法还维护了一个额外的状态变量。
7 Adam优化算法
其实就是结合了动量梯度下降法和RMSprop算法
超参:
:需调参
:推荐值(0.9)
:推荐值(0.999)
:推荐值(),主要是为了数值稳定性,避免分母为0
7 学习率衰减