机器学习笔记之优化算法------经典牛顿法
引言
本节将介绍优化算法------经典牛顿法 ( 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(⋅)至少二阶可微。
而牛顿法 同样作为线搜索方法,其数值解的迭代过程表示为如下形式:
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准则,这里不再赘述。作为经典牛顿法 ,与梯度下降法相反,它的步长 并不是重点关注的对象。这里假设每次迭代步骤,其步长 α 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)的最小值。
关于
视频,这里有一些疑问:
为什么该二次函数开口向上 ? ? ?作为二次项系数的
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未必是下降方向。
相关参考:
【优化算法】经典牛顿法-总体介绍