机器学习笔记之优化算法(十八)经典牛顿法

机器学习笔记之优化算法------经典牛顿法

引言

本节将介绍优化算法------经典牛顿法 ( Newton Method ) (\text{Newton Method}) (Newton Method)。

回顾:

下降方向

线搜索方法------方向角度中介绍了下降方向 ( Descent Direction ) (\text{Descent Direction}) (Descent Direction)的概念。首先,通过推导得到如果 更新方向 P k \mathcal P_k Pk与梯度方向 ∇ f ( x k ) \nabla f(x_k) ∇f(xk)之间满足如下关系:

∇ f ( x k ) \] T ⋅ P k \< 0 \[\\nabla f(x_k)\]\^T \\cdot \\mathcal P_k \<0 \[∇f(xk)\]T⋅Pk\<0 那么称将更新方向 P k \\mathcal P_k Pk称作**下降方向** 。 `需要注意的是,`下降方向`是线搜索方法关于方向角度的一个概念,而不是仅存在于梯度下降法。而`最速下降方向`是与梯度方向相反的方向,也是梯度下降法的选择方向。` ### 下降方向的几何意义 观察上述不等式左侧是向量 ∇ f ( x k ) \\nabla f(x_k) ∇f(xk)与向量 P k \\mathcal P_k Pk的内积形式,将其展开: ∣ ∣ ∇ f ( x k ) ∣ ∣ ⋅ ∣ ∣ P k ∣ ∣ ⋅ cos ⁡ θ \< 0 \|\|\\nabla f(x_k)\|\| \\cdot \|\|\\mathcal P_k\|\| \\cdot \\cos \\theta \< 0 ∣∣∇f(xk)∣∣⋅∣∣Pk∣∣⋅cosθ\<0 这意味着向量 − ∇ f ( x k ) -\\nabla f(x_k) −∇f(xk)与向量 P k \\mathcal P_k Pk之间的夹角是**锐角**。后续使用该方法判断**牛顿方向**是否为下降方向。 ## 经典牛顿法整体介绍 在之前的系列中优化算法(十) ⇒ \\Rightarrow ⇒(十七)介绍了梯度下降法。其迭代过程表示如下: x k + 1 = x k − α ⋅ ∇ f ( x k ) x_{k+1} = x_k - \\alpha \\cdot \\nabla f(x_k) xk+1=xk−α⋅∇f(xk) 从上式可以看出:梯度下降法的底层逻辑是**借助了** 函数 f ( ⋅ ) f(\\cdot) f(⋅)的一阶信息------在使用梯度下降法时,其前置条件是:函数 f ( ⋅ ) f(\\cdot) f(⋅)**至少**是一阶可微的。 `如果` f ( ⋅ ) f(\\cdot) f(⋅)`一阶不可微,那么` ∇ f ( ⋅ ) \\nabla f(\\cdot) ∇f(⋅)`不存在,自然也无法实现迭代求解。` 而牛顿法对函数 f ( ⋅ ) f(\\cdot) f(⋅)的要求是: f ( ⋅ ) f(\\cdot) f(⋅)至少**二阶可微**。 而**牛顿法** 同样作为[线搜索方法](https://blog.csdn.net/qq_34758157/article/details/131957193),其数值解的迭代过程表示为如下形式: x k + 1 = x k + α k ⋅ P k x_{k+1} = x_k + \\alpha_k \\cdot \\mathcal P_k xk+1=xk+αk⋅Pk 关于步长 α k \\alpha_k αk,牛顿法与梯度下降法的处理方式相同。如非精确搜索的[Wolfe \\text{Wolfe} Wolfe准则](https://blog.csdn.net/qq_34758157/article/details/132043302),这里不再赘述。作为**经典牛顿法** ,与梯度下降法相反,它的**步长** 并不是重点关注的对象。这里假设每次迭代步骤,其步长 α k = 1 \\alpha_k=1 αk=1: α k = 1 k = 1 , 2 , 3 , ⋯ \\alpha_k = 1 \\quad k=1,2,3,\\cdots αk=1k=1,2,3,⋯ 关于方向 P k \\mathcal P_k Pk,它是牛顿法与梯度下降法作为线搜索方法的**核心区别**: * **梯度下降法** 的方向就是函数 f ( ⋅ ) f(\\cdot) f(⋅)在 x k x_k xk处的负梯度方向: − ∇ f ( x k ) -\\nabla f(x_k) −∇f(xk); * **牛顿法** 的方向被称作牛顿方向。本节将介绍**牛顿方向** 并讨论该方向是否为下降方向。 ### 关于牛顿方向 首先将**步长** α k = 1 \\alpha_k = 1 αk=1代入,得到 x k + 1 x_{k+1} xk+1与 x k x_k xk之间新的关系表达: `在当前迭代步骤下,` P k \\mathcal P_k Pk`并未求解出来,使用变量` P \\mathcal P P`进行替换。` x k + 1 = x k + P x_{k+1} = x_k + \\mathcal P xk+1=xk+P 从而当前迭代步骤下的**最优方向** P k \\mathcal P_k Pk表示为如下形式: P k = arg ⁡ min ⁡ P f ( x k + 1 ) = arg ⁡ min ⁡ P f ( x k + P ) \\begin{aligned} \\mathcal P_k \& = \\mathop{\\arg\\min}\\limits_{\\mathcal P} f(x_{k+1}) \\\\ \& =\\mathop{\\arg\\min}\\limits_{\\mathcal P} f(x_k + \\mathcal P) \\end{aligned} Pk=Pargminf(xk+1)=Pargminf(xk+P) 如果 P \\mathcal P P足够小,可以对 f ( x k + P ) f(x_k + \\mathcal P) f(xk+P)进行泰勒展开(二阶): `其中` O ( ∣ ∣ P ∣ ∣ 2 ) \\mathcal O(\|\|\\mathcal P\|\|\^2) O(∣∣P∣∣2)`表示高阶无穷小;` ∇ 2 P ( x k ) \\nabla\^2 \\mathcal P(x_k) ∇2P(xk)`则表示` x k x_k xk`处的` Hessian Matrix \\text{Hessian Matrix} Hessian Matrix`,一个实对称矩阵。` P k = arg ⁡ min ⁡ P { f ( x k ) + 1 1 ! \[ ∇ f ( x k ) \] T P + 1 2 ! P T \[ ∇ 2 f ( x k ) \] ⋅ P + O ( ∣ ∣ P ∣ ∣ 2 ) } ≈ arg ⁡ min ⁡ P { f ( x k ) + 1 1 ! \[ ∇ f ( x k ) \] T P + 1 2 ! P T \[ ∇ 2 f ( x k ) \] ⋅ P } \\begin{aligned} \\mathcal P_k \& = \\mathop{\\arg\\min}\\limits_{\\mathcal P} \\left\\{f(x_k) + \\frac{1}{1!} \[\\nabla f(x_k)\]\^T \\mathcal P + \\frac{1}{2!} \\mathcal P\^T \[\\nabla\^2 f(x_k)\] \\cdot \\mathcal P + \\mathcal O(\|\|\\mathcal P\|\|\^2)\\right\\} \\\\ \& \\approx \\mathop{\\arg\\min}\\limits_{\\mathcal P} \\left\\{f(x_k) + \\frac{1}{1!} \[\\nabla f(x_k)\]\^T \\mathcal P + \\frac{1}{2!} \\mathcal P\^T \[\\nabla\^2 f(x_k)\] \\cdot \\mathcal P\\right\\} \\end{aligned} Pk=Pargmin{f(xk)+1!1\[∇f(xk)\]TP+2!1PT\[∇2f(xk)\]⋅P+O(∣∣P∣∣2)}≈Pargmin{f(xk)+1!1\[∇f(xk)\]TP+2!1PT\[∇2f(xk)\]⋅P} 由于 x k x_k xk是上一次迭代产生的结果,是已知项;可以将上述**大括号** 内的项看作关于 P \\mathcal P P的函数: { ϕ ( P ) = f ( x k ) + 1 1 ! \[ ∇ f ( x k ) \] T P + 1 2 ! P T \[ ∇ 2 f ( x k ) \] ⋅ P P k ≈ arg ⁡ min ⁡ P ϕ ( P ) \\begin{cases} \\begin{aligned} \\phi(\\mathcal P) \& = f(x_k) + \\frac{1}{1!} \[\\nabla f(x_k)\]\^T \\mathcal P + \\frac{1}{2!} \\mathcal P\^T \[\\nabla\^2 f(x_k)\] \\cdot \\mathcal P \\\\ \\quad \\\\ \\mathcal P_k \& \\approx \\mathop{\\arg\\min}\\limits_{\\mathcal P} \\phi(\\mathcal P) \\end{aligned} \\end{cases} ⎩ ⎨ ⎧ϕ(P)Pk=f(xk)+1!1\[∇f(xk)\]TP+2!1PT\[∇2f(xk)\]⋅P≈Pargminϕ(P) 很明显, ϕ ( P ) \\phi(\\mathcal P) ϕ(P)就是一个关于 P \\mathcal P P的二次函数。并且开口向上,是一个凸二次函数,因此该函数有**最小值** 。因此可以求解 ϕ ( P ) \\phi(\\mathcal P) ϕ(P)的最小值。 `关于`[视频](https://www.bilibili.com/video/BV1fX4y1J7jE/?spm_id_from=333.337.search-card.all.click&vd_source=ee3db26455f240fbeec8f8602f920420)`,这里有一些疑问:`为什么该二次函数开口向上 ? ? ?`作为二次项系数的` 1 2 \[ ∇ 2 f ( x k ) \] \\begin{aligned}\\frac{1}{2} \[\\nabla\^2 f(x_k)\]\\end{aligned} 21\[∇2f(xk)\]`未知,怎么就开口向上了~欢迎小伙伴们一起讨论。` * 求解 ϕ ( P ) \\phi(\\mathcal P) ϕ(P)关于 P \\mathcal P P的梯度 ∇ ϕ ( P ) \\nabla \\phi(\\mathcal P) ∇ϕ(P): ∇ ϕ ( P ) = ∇ f ( x k ) + \[ ∇ 2 f ( x k ) \] ⋅ P \\nabla \\phi(\\mathcal P) = \\nabla f(x_k) + \[\\nabla\^2 f(x_k)\] \\cdot \\mathcal P ∇ϕ(P)=∇f(xk)+\[∇2f(xk)\]⋅P * 令 ∇ ϕ ( P ) ≜ 0 \\nabla \\phi(\\mathcal P) \\triangleq 0 ∇ϕ(P)≜0,有: ∇ 2 f ( x k ) ⋅ P = − ∇ f ( x k ) \\nabla\^2 f(x_k) \\cdot \\mathcal P = -\\nabla f(x_k) ∇2f(xk)⋅P=−∇f(xk) 观察: Hessian Matrix \\text{Hessian Matrix} Hessian Matrix是一个 n × n n \\times n n×n的**实对称矩阵** ; P , − ∇ f ( x k ) \\mathcal P,-\\nabla f(x_k) P,−∇f(xk)均是 n × 1 n \\times 1 n×1的**列向量** ,因而 ∇ 2 f ( x k ) ⋅ P = − ∇ f ( x k ) \\nabla\^2 f(x_k) \\cdot \\mathcal P = -\\nabla f(x_k) ∇2f(xk)⋅P=−∇f(xk)表达的是一个方程组,我们也将方程组本身称作**牛顿方程**。关于**牛顿方程** 的解,自然是 ϕ ( P ) \\phi(\\mathcal P) ϕ(P)的最小值。 从牛顿方程也可以看出:如果 Hassian Matrix ⇒ ∇ 2 f ( x k ) \\text{Hassian Matrix} \\Rightarrow \\nabla\^2 f(x_k) Hassian Matrix⇒∇2f(xk)是正定矩阵,完全可以通过两边求逆的方式求出 P \\mathcal P P的**最小解** : P = − \[ ∇ 2 f ( x k ) \] − 1 ∇ f ( x k ) \\mathcal P = - \[\\nabla\^2 f(x_k)\]\^{-1} \\nabla f(x_k) P=−\[∇2f(xk)\]−1∇f(xk) 相反,如果 Hessian Matrix ⇒ ∇ 2 f ( x ) \\text{Hessian Matrix} \\Rightarrow \\nabla\^2 f(x) Hessian Matrix⇒∇2f(x)是奇异矩阵,也就是说:该矩阵不满秩,无法求逆。那么只能说:牛顿方程 ∇ 2 f ( x k ) P = − ∇ f ( x k ) \\nabla\^2 f(x_k) \\mathcal P = -\\nabla f(x_k) ∇2f(xk)P=−∇f(xk)的解,就是最小解 P k \\mathcal P_k Pk。 ### 判断牛顿方向是否为下降方向 * 如果 ∇ 2 f ( x k ) \\nabla\^2 f(x_k) ∇2f(xk)是正定的,因而本次迭代的最优方向 P k = \[ ∇ 2 f ( x k ) \] − 1 ∇ f ( x k ) \\mathcal P_k = \[\\nabla\^2 f(x_k)\]\^{-1} \\nabla f(x_k) Pk=\[∇2f(xk)\]−1∇f(xk)。将 P k \\mathcal P_k Pk与负梯度方向 − ∇ f ( x k ) -\\nabla f(x_k) −∇f(xk)作**内积** ,观察两向量之间的夹角: \[ − ∇ f ( x k ) \] T ⋅ P k = − \[ ∇ f ( x k ) \] T ⋅ \[ ∇ 2 f ( x k ) \] − 1 ⋅ ∇ f ( x k ) \\begin{aligned} \[- \\nabla f(x_k)\]\^T \\cdot \\mathcal P_k = -\[\\nabla f(x_k)\]\^T \\cdot \[\\nabla\^2 f(x_k)\]\^{-1} \\cdot \\nabla f(x_k) \\end{aligned} \[−∇f(xk)\]T⋅Pk=−\[∇f(xk)\]T⋅\[∇2f(xk)\]−1⋅∇f(xk) 由于 \[ ∇ 2 f ( x k ) \] n × n \[\\nabla\^2 f(x_k)\]_{n \\times n} \[∇2f(xk)\]n×n是正定矩阵,那么它的逆矩阵 \[ ∇ 2 f ( x k ) \] n × n − 1 \[\\nabla\^2 f(x_k)\]_{n \\times n}\^{-1} \[∇2f(xk)\]n×n−1同样也是正定矩阵。根据正定矩阵的性质:如果 A \\mathcal A A是**正定矩阵** ,对于 ∀ x ∈ R n \\forall x \\in \\mathbb R\^n ∀x∈Rn,且 x ≠ 0 x \\neq 0 x=0,均有: x T A x \> 0 x\^T \\mathcal A x \> 0 xTAx\>0 因此,**项** \[ ∇ f ( x k ) \] T ⋅ \[ ∇ 2 f ( x k ) \] − 1 ⋅ ∇ f ( x k ) \> 0 \[\\nabla f(x_k)\]\^T \\cdot \[\\nabla\^2 f(x_k)\]\^{-1} \\cdot \\nabla f(x_k) \> 0 \[∇f(xk)\]T⋅\[∇2f(xk)\]−1⋅∇f(xk)\>0恒成立。从而 \[ − ∇ f ( x k ) \] T ⋅ P k = − \[ ∇ f ( x k ) \] T ⋅ \[ ∇ 2 f ( x k ) \] − 1 ⋅ ∇ f ( x k ) \< 0 \[- \\nabla f(x_k)\]\^T \\cdot \\mathcal P_k = -\[\\nabla f(x_k)\]\^T \\cdot \[\\nabla\^2 f(x_k)\]\^{-1} \\cdot \\nabla f(x_k) \< 0 \[−∇f(xk)\]T⋅Pk=−\[∇f(xk)\]T⋅\[∇2f(xk)\]−1⋅∇f(xk)\<0恒成立。因此 P k \\mathcal P_k Pk一定是下降方向。 * 如果 ∇ 2 f ( x k ) \\nabla\^2 f(x_k) ∇2f(xk)是奇异矩阵,由于目标函数 f ( ⋅ ) f(\\cdot) f(⋅)**未知** ,从而无法得到牛顿方程的具体解结果。因此 P k \\mathcal P_k Pk未必是下降方向。 相关参考: [【优化算法】经典牛顿法-总体介绍](https://www.bilibili.com/video/BV1fX4y1J7jE/?spm_id_from=333.337.search-card.all.click&vd_source=ee3db26455f240fbeec8f8602f920420)

相关推荐
88号技师1 个月前
2025年2月最新SCI-鹰鱼优化算法HawkFish Optimization Algorithm-附Matlab免费代码
开发语言·算法·matlab·优化算法
88号技师1 个月前
2025年2月最新SCI-中华穿山甲优化算法Chinese Pangolin Optimizer-附Matlab免费代码
开发语言·算法·matlab·优化算法
@Mr_LiuYang1 个月前
深度学习pytorch之19种优化算法(optimizer)解析
深度学习·优化算法·adam·optimizer·学习率调整
88号技师1 个月前
2025年2月一区SCI-海市蜃楼搜索优化算法Mirage search optimization-附Matlab免费代码
开发语言·人工智能·算法·机器学习·matlab·优化算法
88号技师1 个月前
2024年中科院一区SCI-雪雁优化算法Snow Geese Algorithm-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
88号技师2 个月前
2025年3月一区SCI-混沌进化优化算法Chaotic evolution optimization-附Matlab免费代码
开发语言·人工智能·算法·数学建模·matlab·优化算法
余胜辉3 个月前
随机梯度下降(SGD)算法的深度剖析与应用探索
深度学习·机器学习·优化算法·sgd·随机梯度下降
88号技师3 个月前
2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码
人工智能·算法·matlab·优化算法
88号技师3 个月前
几款性能优秀的差分进化算法DE(SaDE、JADE,SHADE,LSHADE、LSHADE_SPACMA、LSHADE_EpSin)-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
纪怽ぅ4 个月前
深入傅里叶级数与傅里叶变换:从基础到应用
python·算法·机器学习·优化算法·傅里叶变化