机器学习中的数学——牛顿迭代法(Newton‘s Method)

分类目录:《机器学习中的数学》总目录
相关文章:
· 梯度下降法(Gradient Descent)
· 随机梯度下降(Stochastic Gradient Descent, SGD)
· 牛顿迭代法(Newton‘s Method)
· 拟牛顿法(Quasi-Newton Methods)
· Momentum(Gradient Descent with Momentum, GDM)
· Nesterov Momentum
· AdaGrad
· RMSProp
· Adam(Adaptive Moments)
· 共轭梯度法(Conjugate Gradient)
· 遗传算法(Genetic Algorithm)
· 粒子群算法
\qquad · 基础知识
\qquad · 带惯性权重的粒子群算法
\qquad · 改进的粒子群算法
· 模拟退火算法(Simulated Annealing,SA)


牛顿迭代法(Newton’s Method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson Method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。与一阶方法相比,二阶方法使用二阶导数改进了优化,其中最广泛使用的二阶方法是牛顿法。

考虑无约束最优化问题:
min ⁡ θ ∈ R n f ( θ ) \min_{\theta\in R^n}f(\theta) θRnminf(θ)

其中 θ ∗ \theta^* θ为目标函数的极小点,假设 f ( θ ) f(\theta) f(θ)具有二阶连续偏导数,若第 k k k次迭代值为 θ ( k ) \theta^{(k)} θ(k),则可将 f ( θ ) f(\theta) f(θ) θ ( k ) \theta^{(k)} θ(k)附近进行二阶泰勒展开:
f ( θ ) = f ( θ ( k ) ) + g k T ( θ − θ ( k ) ) + 1 2 ( θ − θ ( k ) ) T H ( θ ( k ) ) ( θ − θ ( k ) ) f(\theta)=f(\theta^{(k)})+g_k^T(\theta-\theta^{(k)})+\frac{1}{2}(\theta-\theta^{(k)})^TH(\theta^{(k)})(\theta-\theta^{(k)}) f(θ)=f(θ(k))+gkT(θθ(k))+21(θθ(k))TH(θ(k))(θθ(k))

这里, g k = g ( θ ( k ) ) = ∇ f ( θ ( k ) ) g_k=g(\theta^{(k)})=\nabla f(\theta^{(k)}) gk=g(θ(k))=f(θ(k)) f ( θ ) f(\theta) f(θ)的梯度向量在点 θ ( k ) \theta^{(k)} θ(k)的值, H ( θ ( k ) ) H(\theta^{(k)}) H(θ(k)) f ( θ ) f(\theta) f(θ)的Hessian矩阵:
H ( θ ) = [ ∂ 2 f ∂ θ i ∂ θ j ] m × n H(\theta)=[\frac{\partial^2f}{\partial \theta_i\partial \theta_j}]_{m\times n} H(θ)=[θiθj2f]m×n

在点 θ ( k ) \theta^{(k)} θ(k)的值。函数 f ( θ ) f(\theta) f(θ)有极值的必要条件是在极值点处一阶导数为0,即梯度向量为0,特别是当 H ( θ ) H(\theta) H(θ)是正定矩阵时,函数 f ( θ ) f(\theta) f(θ)的极值为极小值。牛顿法利用极小点的必要条件:
∇ f ( θ ) = 0 \nabla f(\theta)=0 f(θ)=0

每次迭代中从点 θ ( k ) \theta^{(k)} θ(k)开始,求目标函数的极小点,作为第 k + 1 k+1 k+1次迭代值 θ ( k + 1 ) \theta^{(k+1)} θ(k+1)。具体地,假设 θ ( k + 1 ) \theta^{(k+1)} θ(k+1)满足:
∇ f ( θ ( k + 1 ) ) = 0 \nabla f(\theta^{(k+1)})=0 f(θ(k+1))=0

则有:
∇ f ( θ ) = g k + H k ( θ − θ ( k ) ) \nabla f(\theta)=g_k+H_k(\theta-\theta^{(k)}) f(θ)=gk+Hk(θθ(k))

其中 H k = H ( θ ( k ) ) H_k=H(\theta^{(k)}) Hk=H(θ(k))。这样,我们可以得:
g k + H k ( θ ( k + 1 ) − θ ( k ) ) = 0 g_k+H_k(\theta^{(k+1)}-\theta^{(k)})=0 gk+Hk(θ(k+1)θ(k))=0

则:
θ ( k + 1 ) = θ ( k ) − H k − 1 g k = θ ( k ) + p k \theta^{(k+1)}=\theta^{(k)}-H_k^{-1}g_k=\theta^{(k)}+p_k θ(k+1)=θ(k)Hk1gk=θ(k)+pk

这就是牛顿迭代法。

牛顿迭代法
输入:目标函数 f ( θ ) f(\theta) f(θ);Hessian矩阵 H ( θ ) H(\theta) H(θ);精度要求 ϵ \epsilon ϵ
输出: f ( θ ) f(\theta) f(θ)的极小值点 θ ∗ \theta^* θ
(1) 取初始点 θ ( 0 ) \theta^{(0)} θ(0)并置 k = 0 k=0 k=0
(2) 计算 g k = g ( θ ( 0 ) ) = ∇ f ( θ ( 0 ) ) g_k=g(\theta^{(0)})=\nabla f(\theta^{(0)}) gk=g(θ(0))=f(θ(0))
(3) while ∣ ∣ g k ∣ ∣ > ϵ \quad||g_k||>\epsilon gk>ϵ
(4) H k = H ( θ ( k ) ) \quad H_k=H(\theta^{(k)}) Hk=H(θ(k))
(5) θ ( k + 1 ) = θ ( k ) − H k − 1 g k \quad \theta^{(k+1)}=\theta^{(k)}-H_k^{-1}g_k θ(k+1)=θ(k)Hk1gk
(6) g k = g ( θ ( 0 ) ) = ∇ f ( θ ( 0 ) ) \quad g_k=g(\theta^{(0)})=\nabla f(\theta^{(0)}) gk=g(θ(0))=f(θ(0))
(7) k = k + 1 \quad k=k+1 k=k+1
(8) return θ ∗ = θ ( k ) \quad \theta^*=\theta^{(k)} θ=θ(k)

迭代过程可参考下图:
在这里插入图片描述
在《优化技术:深度学习优化的挑战-[高原、鞍点和其他平坦区域]》我们讨论了牛顿法只适用于Hessian矩阵是正定的情况。在深度学习中,目标函数的表面通常非凸(有很多特征),如鞍点。因此使用牛顿法是有问题的。如果Hessian矩阵的特征值并不都是正的,例如,靠近鞍点处,牛顿法实际上会导致更新朝错误的方向移动。这种情况可以通过正则化Hessian矩阵来避免。常用的正则化策略包括在Hessian矩阵对角线上增加常数 α \alpha α。正则化更新变为:
θ ∗ = θ 0 − [ H ( f ( θ 0 ) ) + α I ] − 1 ∇ θ f ( θ 0 ) \theta^*=\theta_0-[H(f(\theta_0))+\alpha I]^{-1}\nabla_\theta f(\theta_0) θ=θ0[H(f(θ0))+αI]1θf(θ0)

这个正则化策略用于牛顿法的近似,例如Levenberg-Marquardt算,只要Hessian矩阵的负特征值仍然相对接近零,效果就会很好。在曲率方向更极端的情况下, α \alpha α的值必须足够大,以抵消负特征值。然而,如果 α \alpha α持续增加,Hessian矩阵会变得由对角矩阵 α I \alpha I αI主导,通过牛顿法所选择的方向会收敛到普通梯度除以 α \alpha α。当很强的负曲率存在时,α可能需要特别大,以至于牛顿法比选择合适学习率的梯度下降的步长更小。

除了目标函数的某些特征带来的挑战,如鞍点,牛顿法用于训练大型神经网络还受限于其显著的计算负担。Hessian矩阵中元素数目是参数数量的平方,因此,如果参数数目为 k k k(甚至是在非常小的神经网络中 k k k也可能是百万级别),牛顿法需要计算 k × k k\times k k×k矩阵的逆,计算复杂度为 O ( k 3 ) O(k^3) O(k3)。另外,由于参数将每次更新都会改变,每次训练迭代都需要计算Hessian矩阵的逆。其结果是,只有参数很少的网络才能在实际中用牛顿法训练。在本节的剩余部分,我们将讨论一些试图保持牛顿法优点,同时避免计算障碍的替代算法。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

von Neumann

您的赞赏是我创作最大的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值