梯度下降法、牛顿法、拟牛顿法 三类迭代法应用场景有何差别?

梯度下降法、牛顿法、拟牛顿法 三类迭代法应用场景有何差别?

By Datawhale知乎内容输出小组D1

问题

梯度下降法一族(如SGD、Adam)、牛顿法一族(如Gauss-Newton Method,LM法)、拟牛顿法一族(如L-BFGS)是机器学习中最常见的三大类迭代法,但三者分别通常擅长解决的应用场景是什么?为什么会这样的呢?谢谢

解答

梯度下降法(SGD为例) 牛顿法 拟牛顿法
时间复杂度(单次迭代) 只需计算1阶导,时间复杂度低,为 O ( n ) O\left( n \right) O(n) 需计算Hessian矩阵及其逆,时间复杂度高,为 O ( n 3 ) O\left( {{n^3}} \right) O(n3) 用正定矩阵近似Hessian矩阵的逆,时间复杂度为 O ( n 2 ) O\left( {{n^2}} \right) O(n2)
收敛速度 收敛慢,迭代次数大 收敛快,迭代次数小 -
初始值要求 无太强要求,容易逃离鞍点 对初始值有一定要求,非凸问题容易陷入鞍点(牛顿法步长会越来越小) -
应用场景 特征维度较大的场景,如特征数>10k 特征维度较小的场景 需满足拟牛顿条件,更适合凸问题

此外,在神经网络(非凸问题)的训练中,大多数都采用梯度下降法一族方法。而在训练逻辑回归(凸问题)等模型时,可采用梯度下降和拟牛顿方法。

关于时间复杂度和收敛速度的差异,起因于求解方法:

机器学习的任务中,是要最小化损失函数 L ( θ ) L\left( \theta \right) L(θ),其中 θ \theta θ 是待求的模型参数。梯度下降法、牛顿法/拟牛顿法都是迭代求解。梯度下降法是梯度求解,而牛顿法/拟牛顿法是用二阶的海森矩阵的逆矩阵或伪逆矩阵求解。

迭代公式 θ t = θ t − 1 + Δ θ {\theta ^t} = {\theta ^{t - 1}} + \Delta \theta θt=θt1+Δθ

求解方法
梯度下降法:一阶泰勒展开
L ( θ t ) = L ( θ t − 1 + Δ θ ) ≈ L ( θ t − 1 ) + L ′ ( θ t − 1 ) Δ θ \begin{aligned} L\left( {{\theta ^t}} \right) &= L\left( {{\theta ^{t - 1}} + \Delta \theta } \right) \\ &\approx L\left( {{\theta ^{t - 1}}} \right) + L'\left( {{\theta ^{t - 1}}} \right)\Delta \theta \end{aligned} L(θt)=L(θt1+Δθ)L(θt1)+L(θt1)Δθ

为使 L ( θ t ) < L ( θ t − 1 ) L\left( {{\theta ^t}} \right) < L\left( {{\theta ^{t - 1}}} \right) L(θt)<L(θt1),可取 Δ θ = − α L ′ ( θ t − 1 ) \Delta \theta = - \alpha L'\left( {{\theta ^{t - 1}}} \right) Δθ=αL(θt1),则 θ t = θ t − 1 − α L ′ ( θ t − 1 ) {\theta ^t} = {\theta ^{t - 1}} - \alpha L'\left( {{\theta ^{t - 1}}} \right) θt=θt1αL(θt1)
其中 α \alpha α 是步长,一般直接赋一个较小的值。

牛顿法:二阶泰勒展开
L ( θ t ) = L ( θ t − 1 + Δ θ ) ≈ L ( θ t − 1 ) + L ′ ( θ t − 1 ) Δ θ + L ′ ′ ( θ t − 1 ) Δ θ 2 2 \begin{aligned} L\left( {{\theta ^t}} \right) &= L\left( {{\theta ^{t - 1}} + \Delta \theta } \right) \\ &\approx L\left( {{\theta ^{t - 1}}} \right) + L'\left( {{\theta ^{t - 1}}} \right)\Delta \theta + L''\left( {{\theta ^{t - 1}}} \right){{\Delta {\theta ^2}} \over 2} \end{aligned} L(θt)=L(θt1+Δθ)L(θt1)+L(θt1)Δθ+L(θt1)2Δθ2

为简化分析过程,假定 θ \theta θ 只有一维,将一阶和二阶导数分别记为 g g g h h h,即:
L ( θ t ) ≈ L ( θ t − 1 ) + g Δ θ + h Δ θ 2 2 L\left( {{\theta ^t}} \right) \approx L\left( {{\theta ^{t - 1}}} \right) + g\Delta \theta + h{{\Delta {\theta ^2}} \over 2} L(θt)L(θt1)+gΔθ+h2Δθ2
为使 L ( θ t ) L\left( {{\theta ^t}} \right) L(θt) 极小,即 g Δ θ + h Δ θ 2 2 g\Delta \theta + h{{\Delta {\theta ^2}} \over 2} gΔθ+h2Δθ2 极小,令
∂ ( g Δ θ + h Δ θ 2 2 ) ∂ ( Δ θ ) = 0 ⇒ Δ θ = − g h {{\partial \left( {g\Delta \theta + h{{\Delta {\theta ^2}} \over 2}} \right)} \over {\partial \left( {\Delta \theta } \right)}} = 0 \Rightarrow \Delta \theta = - {g \over h} (Δθ)(gΔθ+h2Δθ2)=0Δθ=hg


θ t = θ t − 1 − g h {\theta ^t} = {\theta ^{t - 1}} - {g \over h} θt=θt1hg

θ \theta θ 推广到向量形式,迭代公式为
θ t = θ t − 1 − H − 1 g {\theta ^t} = {\theta ^{t - 1}} - {H^{ - 1}}g θt=θt1H1g

此处 H H H 为海森矩阵。

Reference

1.梯度下降、牛顿法、拟牛顿法
2.梯度下降法与牛顿法比较

你可能感兴趣的:(Machine,Learning)