标签(空格分隔): 梯度下降
以下内容为An overview of gradient descent optimization
algorithms读后笔记.
最经典的梯度下降算法有:1.梯度下降(Batch gradient descent) 2. 随机梯度下降(Batch gradient descent) 3. mini-batch梯度下降(Mini-batch gradient descent)
Batch gradient descent performs redundant computations for large datasets, as it recomputes gradients for similar examples before each parameter update. SGD does away with this redundancy by performing one update at a time.
带有预测的冲量, 想象一下快到最优解附近的时候,如果最优解附近梯度比较大,那么这里步伐就会很大导致很久才收敛,先预测未来的梯度来优化???还没有合理解释,显著增加了RNN的性能
之前所有参数的学习率都是相同的,这显然是不合理的,对于稀疏数据,对变化频率大的数据应该使用小的学习率,变化频率小的数据应该使用大的学习率
这里G是一个对角矩阵, G i i 是 θ t , i G_ii是\theta _{t,i} Gii是θt,i的根号和,这就能反应变化快慢
但是这个算法有一个缺点就是, 他的学习率是一直衰减的!!!
他是Adagrad算法的改进, 主要改进Adagrad算法的激进以及一直衰减的学习率
第二步,作者发现什么了???
假设空间之类的,在分子添加了RMS(delta)
这个算法是Hinton自己独立想出来的一个算法,和上一个算法有着相同想法
这个算法和之前动量想法一样,分别构造了 g , g 2 g, g^2 g,g2的动量
同时为了无偏估计,除以了一个系数
对Adam分母V_t进行了泛化,原来的形式相当于L2正则,现在改为LP正则,并让p趋于无穷大
这里Dozat修改了NAG的算法,将原来对梯度提前的预估改为对动量的预估
这里NAG2在和最原始的冲量对比,发现只是修改了对比the momentum update rule 只是多一个梯度
那么将这种变化应用到Adam就可以得到Nadam
这里只是原本t-1时刻m的估计改为t时刻m的估计
参考文献