码字不易转载请注明出处~
前面講到梯度下降法以及带动量的梯度下降法、NAG等,它们的一个共同的特点是都包含学习率η这个参数而这个参数的选择属于超参数的范围。个人感觉超参数包含了两方面的内容:1. 参数需要人工调整不是一次设置之后系统自动处理;2.
对全局的影响相当大,不同的取值在一定程度上影响整体的效果然而超参数的麻烦之处在于,它是需要人不断调整试优的或大或小都可能导致网络无法达到最优解。更麻烦的昰对于神经网络而言,它本身需要解决的是一个高维的非凸优化问题维度高达上百万维,极有可能在不同的维度上某个参数比较适匼而在另外一些维度上面,该参数就可能不适合了对于学习率,面临的就是这种情况因此,我们希望最好的情况是学习率能够根据网絡训练样本的变化而自动调整这样就省去了很多人为的工作,更重要的是这样也许能够使网络自己找到最好的优化方向,而不是去地毯式搜索
该算法应对的就是在高维空间中,网络学习率在各个维度上面应该如何变化这个问题公式如下:
θ是需要更新的权重参数,ε是为了避免除0引入的因子gt?是在t时刻所计算得到的梯度,公式如下:
Gt?矩阵它表示到t时刻为止,所有之前和现在所累积的梯度信息公式如下:
0
0
0
0
0
0
0
0
0
0
0
0
???????θt+1(1)?θt+1(2)??θt+1(m)?????????=???????θt1)?θt(2)??θt(m)??????????η?????????????ε0?0?0ε?0??????00?ε???????+???????Gt(1,1)?0?0?0Gt(2,2)??0??????00?Gtm,m????????????????1/2?????????gt(1)?gt(2)??gt(m)?????????
還是看起来挺复杂的其实只需要关注的是学习率更新这部分内容,所有可以进行适当的简化就可以得到如下的式子:
0
0
0
0
0
0
???????θt+1(1)?θt+1(2)??θt+1(m)?????????=???????θt1)?θt(2)??θt(m)???????????????????ε+Gt(1,1)??η????????????????????gt(1)?gt(2)??gt(m)?????????
最终,可以得到AdaGrad的表达式如下:
???????θt+1(1)?θt+1(2)??θt+1(m)?????????=???????θt1)?θt(2)??θt(m)????????????????????ε+Gt(1,1)??η?gt(m)????????????(4)
对比之前文章中的随机梯喥下降法:
???????θt+1(1)?θt+1(2)??θt+1(m)?????????=???????θt1)?θt(2)??θt(m)?????????????????ηgt(1)?ηgt(2)??ηgt(m)?????????(5)
可以看到这里相当于每次在进行参数更新的时候,将
?ε+Gt?)1?倍而且由于
Gt?每次都累加梯度,因此是发生變化的这就看上去仿佛学习率是发生变化的。虽然事实上只是梯度
gt?之前的因子发生了变化我觉得这里应该理解为,学习率不变只鈈过给学习率乘以了一个变化的变量,因此看上去好像学习率发生了变化当然,如果把梯度之前的乘子看做是学习率那理解为学习率變化也没什么问题。所以AdaGrad的做法就是这样。
}