多维优化问题的迭代求解算法中,经常遇到学习率(步长)参数问题,比如线性分类器。一般如果采用固定学习率,那么算法收敛将比较慢,为了提高收敛速度往往需要不断调整学习率。一般多维优化问题中的迭代算法中的迭代公式为:
xk+1=xk+rk dk
其中 xk 从给定的初始搜索点 x0 迭代,rk>=0为第k次迭代的学习率或步长,迭代目的是寻找最优解x*,使得代价函数 J(x) 最小,dk表示搜索方向,下面讨论学习率最优值问题, 定义:
hk(r)= J(xk + r*dk) = J(xk+1) 而 J(x) = J(xk) + delta<J(xk)>T(x-xk) + 1/2 * (x-xk)TH(x-xk)
因此 hk(r) = J(xk+1) = J(xk) + r* delta<J(xk)>Tdk+ 1/2 * r2 *(dk)T H dk
hk(r)表示当前所选的学习率 r 使得下一次迭代xk+1 取得的成本函数值,显然所选取的 r,应使得J(xk+1)尽可能的小,换句话说第 k 次迭代选取的最优 r* 应该使得J(xk+1)最小。H 是海森矩阵,J(x)在 xk 处的二阶偏导。delta<J(xk)>是J(x)在 xk 处的梯度。这是个一维优化问题:
h‘k(r) = delta<J(xk)>dk + r*(dk)T H dk=0
r= - delta<J(xk)>dk / (dk)T H dk
特别地当dk= delta<J(xk)> 时,r为梯度下降法每步迭代的最优学习率或步长。
在实际的多维优化中,这种每次求解最优学习率的方法一般很少使用,因为需要将更多的计算资源配置到多维优化算法中而不是追求高精度的学习率,因此应该为每一步中最优学习率的搜索设定一个停止条件。
Armijo-Goldstein条件:通常选定3个常数,0<ε<1, ε<η<1,要求:
(1) hk(r) <=hk(0) + εrh‘k(0) ,保证学习率r不会太大;
(2)hk(r) >=hk(0) + ηrh‘k(0) , 保证学习率不会太小。
在多维优化问题中,对于每次迭代中的步长或学习率选择方法为:
一开始先为 r 选定一个备选值,如果能够满足(1),则选其为步长;否则,在该备选值上乘以一个系数 τ (0<τ<1),通常选τ=0.5,再次检验其是否能满足停止条件,以此类推直到选择出一个满足条件(1)的步长r。