UTF8gbsn

一元求根

首先从最简单的牛顿法应用开始.牛顿法最简单的一个应用是去求一个函数的根.其实原理很简单.就是一个迭代.当然这些结论也是凸函数才会成立.

xn+1=xnf(xn)f(xn)x_{n+1}=x_n-\frac{f(x_n)}{f^{'}(x_n)}

比如我们来求y=x2y=x^2的根.如果出发点为x=2.0x=2.0.那么其表现在函数图象上为.

Newton's Method 牛顿法求极值.

一元求极值

那么我们怎么来求极值?怎么用牛顿的方法来求极值?其实很简单.极值存在的点,就是函数二次导为0的点.也就是说,我们可以把求极值的问题回归到求根的问题.比如对于函数
y=1+(x1)2+(x+1)4y=1+(x-1)^2+(x+1)^4

画出它的函数图象

Newton's Method 牛顿法求极值.

请看它的导数的函数图象 y=2(x1)+4(x+1)3y=2(x-1)+4(x+1)^3

Newton's Method 牛顿法求极值.
由此可见原函数的极值出现在,导数的根,也就是导数为0的地方.所以我们回到求根的牛顿法得出下面的迭代函数.

xn+1=xnf(xn)f(xn)x_{n+1}=x_{n}-\frac{f^{'}(x_n)}{f^{''}(x_n)} 画出迭代的图象可得

Newton's Method 牛顿法求极值.

这是一个一元函数的解法.下面我们来看看针对多元函数又怎么利用牛顿法来求极值呢?

多元函数求极值

我们先描述一下多元函数的牛顿法极值的算法步骤.

  • Compute the Newton step and decrement.
    Δxnt:=2f(x)1f(x);λ2:=f(x)T2f(x)1f(x)\Delta x_{\mathrm{nt}}:=-\nabla^{2} f(x)^{-1} \nabla f(x) ; \quad \lambda^{2}:=\nabla f(x)^{T} \nabla^{2} f(x)^{-1} \nabla f(x)

  • Stopping criterion. quit if λ2/2ϵ\lambda^2/2\leqslant \epsilon

  • Line search. Choose step size t by backtracking line search.

  • Update x:=x+tΔxntx:=x+t \Delta x_{\mathrm{nt}}

首先,我们需要分析的前提是函数f(x)f(x)是一个凸函数.因为如果不是凸函数.那么分析的结论将不会成立.所以我们下面的讨论都限制在f(x)f(x)是凸函数的基础上.

牛顿法

如何来理解多元函数的牛顿法?
其实有几种理解的思路.而我们这里主要采用其中一种.也就是二阶泰勒展开.

f^(x+v)=f(x)+f(x)Tv+12vT2f(x)v\widehat{f}(x+v)=f(x)+\nabla f(x)^{T} v+\frac{1}{2} v^{T} \nabla^{2} f(x) v

值得注意的是符号2f(x)\nabla^2f(x)是hessian矩阵. (2fx122fx1x22fx1xn2fx2x12fx222fx2xn2fxnx12fxnx22fxn2)\left( \begin{array}{cccc} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1\partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1\partial x_n} \\ \frac{\partial^2 f}{\partial x_2\partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots & \frac{\partial^2 f}{\partial x_2\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n\partial x_1} & \frac{\partial^2 f}{\partial x_n\partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{array} \right)

如果函数f(x)f(x)是一个凸函数,那么2f(x)\nabla^2 f(x)就是半正定的.既然这个函数是半正定的.那么

f^(x+v)=f(x)+f(x)Tv+12vT2f(x)v,v=2f(x)1f(x)\widehat{f}(x+v)=f(x)+\nabla f(x)^{T} v+\frac{1}{2} v^{T} \nabla^{2} f(x) v, v = -\nabla^{2} f(x)^{-1} \nabla f(x)
就会减小.因为

f(x)T(2f(x)1f(x))=f(x)T2f(x)1f(x)\nabla f(x)^T (- \nabla^2f(x)^{-1}\nabla f(x))=-\nabla f(x)^T \nabla^2f(x)^{-1}\nabla f(x)
12(2f(x)1f(x))T2f(x)(2f(x)1f(x))=12(Tf(x)(2f(x)1)T)2f(x)(2f(x)1f(x))\frac{1}{2} (- \nabla^2f(x)^{-1}\nabla f(x))^{T} \nabla^{2} f(x) (- \nabla^2f(x)^{-1}\nabla f(x))=\frac{1}{2} (- \nabla^T f(x)(\nabla^2f(x)^{-1})^{T}) \nabla^{2} f(x) (- \nabla^2f(x)^{-1}\nabla f(x))
=12Tf(x)(2f(x)1)Tf(x)=12Tf(x)2f(x)1f(x)=\frac{1}{2}\nabla^Tf(x)(\nabla^2f(x)^{-1})^T\nabla f(x)=\frac{1}{2}\nabla^Tf(x)\nabla^2f(x)^{-1}\nabla f(x)
因为2f(x)\nabla^2f(x)是一个实对称矩阵,所以2f(x)1\nabla^2f(x)^{-1}也是一个实对称矩阵.于是
f^(v)=f(x)12Tf(x)2f(x)1f(x)\widehat{f}(v) = f(x)-\frac{1}{2}\nabla^Tf(x)\nabla^2f(x)^{-1}\nabla f(x)
因为2f(x)\nabla^2f(x)是半正定的,所以Tf(x)2f(x)1f(x)0\nabla^Tf(x)\nabla^2f(x)^{-1}\nabla f(x)\geqslant 0,顾而f(x)f(x)减小.如此以来可以证明牛顿法是可以求得极值的.当然我们略去了很多细节.只是粗略的阐述了牛顿法成立的逻辑.还有更多的一些逻辑.我希望留在综合比较,梯度下降,共轭梯度下降和牛顿法这三个算法上面来阐述.

相关文章:

  • 2021-08-27
  • 2022-12-23
  • 2021-08-07
  • 2022-12-23
  • 2021-10-16
  • 2021-10-28
  • 2022-03-04
  • 2021-11-07
猜你喜欢
  • 2021-07-23
  • 2021-04-04
  • 2022-12-23
相关资源
相似解决方案