此部分内容接《02(a)多元无约束优化问题》!

第二类:牛顿法(Newton method)

\[f({{\mathbf{x}}_{k}}+\mathbf{\delta })\text{ }\approx \text{ }f({{\mathbf{x}}_{k}})+{{\nabla }^{T}}f({{\mathbf{x}}_{k}})\cdot \mathbf{\delta }+\frac{1}{2}{{\mathbf{\delta }}^{T}}\cdot {{\nabla }^{2}}f({{\mathbf{x}}_{k}})\cdot \mathbf{\delta }\]

在${{\mathbf{x}}_{k}}$定了的情况下,$f({{\mathbf{x}}_{k}}+\mathbf{\delta })\text{ }$可以看成是$\mathbf{\delta }$的函数,要使函数达到极小值点,即找出使得函数$f({{\mathbf{x}}_{k}}+\mathbf{\delta })$对$\mathbf{\delta }$的一阶导数等于0,则有:

\[\begin{aligned}& f({{\mathbf{x}}_{k}}+\mathbf{\delta }{)}'\text{ }=\nabla f({{\mathbf{x}}_{k}})+{{\nabla }^{2}}f({{\mathbf{x}}_{k}})\cdot \mathbf{\delta } \\& \text{                 =}\nabla f({{\mathbf{x}}_{k}})+H({{\mathbf{x}}_{k}})\cdot \mathbf{\delta }=0 \\\end{aligned}\]

则下降方向可写为:$\mathbf{\delta }=-{{H}^{-1}}({{\mathbf{x}}_{k}})\cdot \nabla f({{\mathbf{x}}_{k}})$。

(听课的时候就一直在想,一阶导数等于零的点就是极小值点吗???$y=a{{x}^{2}}+bx+c$一种简单的一元二次函数的一阶导数等于0的点,是不是极小值点,还的看$a$的正负呢!)

图 1

从上图中可以看出,在点${{\mathbf{x}}_{k}}$处使函数下降最快的方向是$-\nabla f({{\mathbf{x}}_{k}})$方向,但它却不是使$f({{\mathbf{x}}_{k}})$最快接近最小值的方向(最快接近最小值方向应该是上图中红色虚线的方向);由此见牛顿法的下降方向:$\mathbf{\delta }=-{{H}^{-1}}({{\mathbf{x}}_{k}})\cdot \nabla f({{\mathbf{x}}_{k}})$,就是在$-\nabla f({{\mathbf{x}}_{k}})$乘上了一个该点Hessian阵的逆${{H}^{-1}}({{\mathbf{x}}_{k}})$;我们希望的是在乘上${{H}^{-1}}({{\mathbf{x}}_{k}})$后使得下降方向朝向上图中红色虚线的方向;But,在有些情况下乘上${{H}^{-1}}({{\mathbf{x}}_{k}})$后,不但没有使函数值$f({{\mathbf{x}}_{k}})$下降,反而让函数值$f({{\mathbf{x}}_{k}})$变大了。只有当${{H}^{-1}}({{\mathbf{x}}_{k}})$在满足下面的条件下,才能使函数值不断减小:

\[\begin{aligned}& {{\left( -\nabla f({{\mathbf{x}}_{k}}) \right)}^{T}}\cdot \left( -{{H}^{-1}}({{\mathbf{x}}_{k}})\cdot \nabla f({{\mathbf{x}}_{k}}) \right)=\left\| -\nabla f({{\mathbf{x}}_{k}}) \right\|\cdot \left\| -{{H}^{-1}}({{\mathbf{x}}_{k}})\cdot \nabla f({{\mathbf{x}}_{k}}) \right\|\cos(\theta ) \\& \text{                                                      =}{{\nabla }^{T}}f({{\mathbf{x}}_{k}})\cdot {{H}^{-1}}({{\mathbf{x}}_{k}})\cdot \nabla f({{\mathbf{x}}_{k}})>0 \\\end{aligned}\]

即要使从新获得的下降方向$-{{H}^{-1}}({{\mathbf{x}}_{k}})\cdot \nabla f({{\mathbf{x}}_{k}})$与最速下降方向$-\nabla f({{\mathbf{x}}_{k}})$之间的夹角$-{\pi }/{2}\;<\theta <{\pi }/{2}\;$。要满足:

\[{{\nabla }^{T}}f({{\mathbf{x}}_{k}})\cdot {{H}^{-1}}({{\mathbf{x}}_{k}})\nabla f({{\mathbf{x}}_{k}})>0\]

${{H}^{-1}}({{\mathbf{x}}_{k}})$要达到什么样的条件呢,由正定二次型的性质可知,当${{H}^{-1}}({{\mathbf{x}}_{k}})$为正定阵(等价于${{H}^{-1}}({{\mathbf{x}}_{k}})\succ 0$的全部特征值大于0)时,式(12)恒成立;当${{H}^{-1}}({{\mathbf{x}}_{k}})$不是正定阵的情况下仍然希望使用牛顿法,则需要对最速下降方向$-\nabla f({{\mathbf{x}}_{k}})$前面乘的Hessian阵的逆${{H}^{-1}}({{\mathbf{x}}_{k}})$进行改进;由于${{H}^{-1}}({{\mathbf{x}}_{k}})$为一个实对称阵,所以一定能正交分解,这里取${{\lambda }_{1}},{{\lambda }_{2}},...,{{\lambda }_{n}}$从大到小排:

\[{{H}^{-1}}({{\mathbf{x}}_{k}})=U\left[ \begin{matrix}{{\lambda }_{1}} & {} & {} & {}  \\{} & {{\lambda }_{2}} & {} & {}  \\{} & {} & \ddots  & {}  \\{} & {} & {} & {{\lambda }_{n}}  \\\end{matrix} \right]{{U}^{T}}\]

具体步骤:

s1:找出${{H}^{-1}}({{\mathbf{x}}_{k}})$的最小特征值:Matlab代码可写为$\min (eig({{H}^{-1}}({{\mathbf{x}}_{k}})))=-9.8$;

s2:组合得到一个新的${{\hat{H}}^{-1}}({{\mathbf{x}}_{k}})={{H}^{-1}}({{\mathbf{x}}_{k}})+9.9E$;

\[\begin{aligned}& {{{\hat{H}}}^{-1}}({{\mathbf{x}}_{k}})=U\left[ \begin{matrix}{{\lambda }_{1}} & {} & {} & {}  \\{} & {{\lambda }_{2}} & {} & {}  \\{} & {} & \ddots  & {}  \\{} & {} & {} & -9.8  \\\end{matrix} \right]{{U}^{T}}+9.9UE{{U}^{T}} \\& \text{           }=U\left[ \begin{matrix}{{\lambda }_{1}}+9.9 & {} & {} & {}  \\{} & {{\lambda }_{2}}+9.9 & {} & {}  \\{} & {} & \ddots  & {}  \\{} & {} & {} & 0.1  \\\end{matrix} \right]{{U}^{T}}\succ 0 \\\end{aligned}\]

这里由于$U$为正交阵,故由$U{{U}^{T}}=E$,这样牛顿法的下降方向可写为:

\[\mathbf{\delta }=-{{\hat{H}}^{-1}}({{\mathbf{x}}_{k}})\cdot \nabla f({{\mathbf{x}}_{k}})\]

Step3:通过Step2确定下降方向${{\mathbf{d}}_{k}}$之后,$f({{\mathbf{x}}_{k}}+{{\alpha }_{k}}{{\mathbf{d}}_{k}})$可以看成${{\alpha }_{k}}$的一维函数,这一步的主要方法有(Dichotomous search, Fibonacci search, Goldensection search, quadratic interpolation method, and cubic interpolation method);所确定一个步长${{\alpha }_{k}}>0$,${{\mathbf{x}}_{k+1}}={{\mathbf{x}}_{k}}+{{\alpha }_{k}}{{\mathbf{d}}_{k}}$;

Step4: if走一步的距离$\left\| {{\alpha }_{k}}{{\mathbf{d}}_{k}} \right\|<\varepsilon $,则停止并且输出解${{\mathbf{x}}_{k+1}}$;else $k:=k+1$并返回Step2,继续迭代。

02(c)多元无约束优化问题-牛顿法的更多相关文章

  1. 02(d)多元无约束优化问题-拟牛顿法

    此部分内容接<02(a)多元无约束优化问题-牛顿法>!!! 第三类:拟牛顿法(Quasi-Newton methods) 拟牛顿法的下降方向写为: ${{\mathbf{d}}_{k}}= ...

  2. 02(b)多元无约束优化问题-最速下降法

    此部分内容接02(a)多元无约束优化问题的内容! 第一类:最速下降法(Steepest descent method) \[f({{\mathbf{x}}_{k}}+\mathbf{\delta }) ...

  3. 02(a)多元无约束优化问题

    2.1 基本优化问题 $\operatorname{minimize}\text{    }f(x)\text{       for   }x\in {{R}^{n}}$ 解决无约束优化问题的一般步骤 ...

  4. 02(e)多元无约束优化问题- 梯度的两种求解方法以及有约束转化为无约束问题

    2.1 求解梯度的两种方法 以$f(x,y)={{x}^{2}}+{{y}^{3}}$为例,很容易得到: $\nabla f=\left[ \begin{aligned}& \frac{\pa ...

  5. 无约束优化算法——牛顿法与拟牛顿法(DFP,BFGS,LBFGS)

    简介:最近在看逻辑回归算法,在算法构建模型的过程中需要对参数进行求解,采用的方法有梯度下降法和无约束项优化算法.之前对无约束项优化算法并不是很了解,于是在学习逻辑回归之前,先对无约束项优化算法中经典的 ...

  6. 无约束优化方法(梯度法-牛顿法-BFGS- L-BFGS)

    本文讲解的是无约束优化中几个常见的基于梯度的方法,主要有梯度下降与牛顿方法.BFGS 与 L-BFGS 算法. 梯度下降法是基于目标函数梯度的,算法的收敛速度是线性的,并且当问题是病态时或者问题规模较 ...

  7. MATLAB进行无约束优化

    首先先给出三个例子引入fminbnd和fminuc函数求解无约束优化,对这些函数有个初步的了解 求f=2exp(-x)sin(x)在(0,8)上的最大.最小值. 例2 边长3m的正方形铁板,四角减去相 ...

  8. 01(b)无约束优化(准备知识)

    1.解方程转化为优化问题 $n\left\{ \begin{aligned}& {{P}_{1}}(x)=0 \\ & {{P}_{2}}(x)=0 \\ & \text{   ...

  9. 065 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 带参无返回值方法

    065 01 Android 零基础入门 01 Java基础语法 08 Java方法 03 带参无返回值方法 本文知识点:带参无返回值方法 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...

随机推荐

  1. Emgu-WPF 激光雷达研究-定位实现

    原文:Emgu-WPF 激光雷达研究-定位实现 特定位置或障碍物位置定位实现. 读取激光雷达数据并存储于本地作为测试数据.每一帧数据对同一障碍物的定位信息均存在偏差.所以先对需要定位的点进行数据取样. ...

  2. 有了VARCHAR,为什么还要有CHAR?

    VarcharVarchar往往用来保存可变长度的字符串.简单的说,我们只是给其固定了一个最大值,然后系统会根据实际存储的数据量来分配合适的存储空间.为此相比CHAR字符数据而言,其能够比固定长度类型 ...

  3. WPF 视图导航

    <Window x:Class="ViewExam.MainWindow"        xmlns="http://schemas.microsoft.com/w ...

  4. QT Linux Demo程序编译

    我手上的qt源码包为:qt-everywhere-opensource-src-4.7.0.tar.gz 在Linux下编译比较容易,解压后直接 ./configure,一般会报缺少什么库这些.自己遇 ...

  5. Xdite:永葆热情的上瘾式学习法(套路王:每天总结自己,反省自己的作息规律,找到自己的幸运时间、幸运方法,倒霉时间、倒霉方法。幸运是与注意力挂钩的。重复才能让自己登峰造极,主动去掉运气部分来训练自己。游戏吸引自己的几个原因非常适合训练自己)good

    版权声明 本文首发自微信公共帐号: 学习学习再学习(xiaolai-xuexi) 无需授权即可转载, 甚至无需保留以上版权声明: 转载时请务必注明作者. 以下是<共同成长社区>第 58 次 ...

  6. Redis实现关注关系

    最近使用关系型数据库实现了用户之间的关注,于是思考换一种思路,使用Redis实现用户之间的关注关系. 综合考虑了一下Redis的几种数据结构后,觉得可以用集合实现一下. 假设"我" ...

  7. 01 Python初探

    Python初探 Become a better version of yourself! 诞生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年开始写Python ...

  8. Linux kernel version dirty

    在我们使用git来管理Linux Kernel的时候,在编译的时候会在你的kernel version加上git commit number 有时候还会出现dirty字样,字面意思是内核被污染的意思. ...

  9. spring bean 加载过程(spring)

    以classpathXmlApplication为例 入口方法包含3个部分, public ClassPathXmlApplicationContext(String[] configLocation ...

  10. 获取其他进程中“Internet Explorer_TridentCmboBx”的内容

    function GetTridentCmboBxText( // 获取其他进程中“Internet Explorer_TridentCmboBx”的内容   mHandle: THandle; // ...