平时经常看到牛顿法怎样怎样,一直不得要领,今天下午查了一下维基百科,写写我的认识,很多地方是直观理解,并没有严谨的证明。在我看来,牛顿法至少有两个应用方向,1、求方程的根,2、最优化。牛顿法涉及到方程求导,下面的讨论均是在连续可微的前提下讨论。

1、求解方程。

并不是所有的方程都有求根公式,或者求根公式很复杂,导致求解困难。利用牛顿法,可以迭代求解。

原理是利用泰勒公式,在x0处展开,且展开到一阶,即f(x) = f(x0)+(x-x0)f'(x0)

求解方程f(x)=0,即f(x0)+(x-x0)*f'(x0)=0,求解x = x1=x0-f(x0)/f'(x0),因为这是利用泰勒公式的一阶展开,f(x) = f(x0)+(x-x0)f'(x0)处并不是完全相等,而是近似相等,这里求得的x1并不能让f(x)=0,只能说f(x1)的值比f(x0)更接近f(x)=0,于是乎,迭代求解的想法就很自然了,可以进而推出x(n+1)=x(n)-f(x(n))/f'(x(n)),通过迭代,这个式子必然在f(x*)=0的时候收敛。整个过程如下图:

2、牛顿法用于最优化

在最优化的问题中,线性最优化至少可以使用单纯行法求解,但对于非线性优化问题,牛顿法提供了一种求解的办法。假设任务是优化一个目标函数f,求函数f的极大极小问题,可以转化为求解函数f的导数f'=0的问题,这样求可以把优化问题看成方程求解问题(f'=0)。剩下的问题就和第一部分提到的牛顿法求解很相似了。

这次为了求解f'=0的根,把f(x)的泰勒展开,展开到2阶形式:

这个式子是成立的,当且仅当 Δx 无线趋近于0。此时上式等价与:

求解:

得出迭代公式:

一般认为牛顿法可以利用到曲线本身的信息,比梯度下降法更容易收敛(迭代更少次数),如下图是一个最小化一个目标方程的例子,红色曲线是利用牛顿法迭代求解,绿色曲线是利用梯度下降法求解。

在上面讨论的是2维情况,高维情况的牛顿迭代公式是:

其中H是hessian矩阵,定义为:

高维情况依然可以用牛顿迭代求解,但是问题是Hessian矩阵引入的复杂性,使得牛顿迭代求解的难度大大增加,但是已经有了解决这个问题的办法就是Quasi-Newton methond,不再直接计算hessian矩阵,而是每一步的时候使用梯度向量更新hessian矩阵的近似。

   1、牛顿法应用范围

                         牛顿法主要有两个应用方向:1、目标函数最优化求解。例:已知 f(x)的表达形式,,求 ,及g(x)取最小值时的 x ?,即

由于||f(x)||通常为误差的二范数,此时这个模型也称为最小二乘模型,即

2、方程的求解(根)。例:求方程的解:g(x) = 0,求 x ?

这两个应用方面都主要是针对g(x)为非线性函数的情况。2中,如果g(x)为线性情况下的求解通常使用最小二乘法求解。

                         牛顿法的核心思想是对函数进行泰勒展开。

           2、牛顿法用于方程求解

对f(x)进行一阶泰勒公式展开:

  

此时,将非线性方程 g(x) = 0 近似为线性方程:

  

若 f’(x) != 0,则下一次迭代解为:

     

牛顿迭代示意图(因此Newton迭代法也称为切线法):

3、牛顿法用于函数最优化求解

对f(x)进行二阶泰勒公式展开:

   

此时,将非线性优化问题 min f(x) 近似为为二次函数的最优化求解问题:

   

对于(5)式的求解,即二次函数(抛物线函数)求最小值,对(5)式中的函数求导:

   

  

从本质上来讲,最优化求解问题的迭代形式都是:

其中k为系数,为函数的梯度(即函数值上升的方向),那么为下降的方向,

最优化问题的标准形式是:求目标函数最小值,只要每次迭代沿着下降的方向迭代那么将逐渐达到最优,

而牛顿将每次迭代的步长定为:

4、补充

                          a、严格来讲,在“3、牛顿法用于函数最优化求解”中对函数二阶泰勒公式展开求最优值的方法称为:Newton法

而在“2、牛顿法用于方程求解”中对函数一阶泰勒展开求零点的方法称为:Guass-Newton(高斯牛顿)法

b、在上面的陈述中,如果x是一个向量,那么公式中:

应该写成:为Jacobi(雅克比)矩阵。

应该写成:为Hessian(海森)矩阵。

c、牛顿法的优点是收敛速度快,缺点是在用牛顿法进行最优化求解的时候需要求解Hessian矩阵。

因此,如果在目标函数的梯度和Hessian矩阵比较好求的时候应使用Newton法。

牛顿法在进行编程实现的时候有可能会失败,具体原因及解决方法见《最优化方法》-张薇 东北大学出版社 第155页。

5、Newton法与Guass-Newton法之间的联系

                        对于优化问题 ,即,当理论最优值为0时候,这个优化问题就变为了函数求解问题:

                                                             

                          结论:当最优化问题的理论最小值为0时,Newton法求解就可变为Guass-Newton法求解。        

另外:对f(x)进行二阶泰勒展开:

                                                            

                          f(x)乘以f(x)的转置并忽略二次以上的项:

因此,当在最优解附近时,即满足,此时可认为:

6、扩展阅读

                        a、修正牛顿(Newton)法

b、共轭方向法与共轭梯度法

c、拟牛顿法(避免求解Hessian矩阵):DFP算法、BFGS算法

Newton法(牛顿法 Newton Method)相关推荐

  1. Newton法(牛顿法)

    基本思想 算法 修正Newton法 G_k为奇异矩阵 G_k为非奇异矩阵 总结 上一篇博客我们讲了最速下降法(梯度下降法),梯度下降法简单,但是收敛的速度较慢.这一篇博客将会讲述牛顿法,牛顿法对于正定 ...

  2. 牛顿法(Newton‘s method)和拟牛顿法(quasi Newton method)

    简述 在看伊恩·古德费洛的深度学习,4.3节基于梯度的优化方法时提到 仅使用梯度信息的优化算法称为 一阶优化算法 ,如梯度下降. 使用Hessian矩阵的优化算法称为 二阶最优化算法 ,如牛顿法. 牛 ...

  3. 优化算法——牛顿法(Newton Method)

    一.牛顿法概述 除了前面说的梯度下降法,牛顿法也是机器学习中用的比较多的一种优化算法.牛顿法的基本思想是利用迭代点处的一阶导数(梯度)和二阶导数(Hessen矩阵)对目标函数进行二次函数近似,然后把二 ...

  4. 向量值函数在计算机工程与应用,拟Newton法在高阶矩阵中的应用-计算机工程与应用.PDF...

    Computer Engineering and Applications 计算机工程与应用 2012 ,48 (16) 33 ⦾研究.探讨⦾ 拟Newton 法在高阶矩阵中的应用 --求解最大特征值 ...

  5. 什么是牛顿法(Newton methods)?什么是拟牛顿法(Quasi Newton methods)?牛顿法和梯度下降法的区别是什么?

    什么是牛顿法(Newton methods)?什么是拟牛顿法(Quasi Newton methods)?牛顿法和梯度下降法的区别是什么? 牛顿法的最初提出是用来求解方程的根的.对于最优化问题,其极值 ...

  6. 利用matlab实现复数域空间牛顿迭代法的分形图案展示(newton法)

    利用matlab实现复数域空间牛顿迭代法的分形图案展示(newton法) 1 一维函数的牛顿迭代法 2 复平面的牛顿迭代法 2.1 简单方程结果 2.2 其它非线性方程结果 本文首发于 matlab爱 ...

  7. 二分法(Bisection)与牛顿法(Newton)求方程的根

    二分法(Bisection)与牛顿法(Newton)求方程的根 二分法求根 二分法数学原理 使用前提:必须要知道根所在的区间 函数图像如下: 数学分析步骤及编程思想: 第一步:给出一个会使函数f连续的 ...

  8. 优选法和newton法在实践中的比较

    优选法和newton法在实践中的比较 对于函数f(x)=2*x^2-4*x-6 ,求在(-1,2)范围内的极值,分别用优选法和newton法实践,看比较的次数. (setq  count  0) (d ...

  9. 优选法和newton法在实践中的比较(分析原因)

    优选法和newton法在实践中的比较(分析原因) 优选法得到应用的原因是在它所表示的情况下,上一次判断总能给下一次判断节省一次,下面来证明: 假设长度为l的线段,其中的黄金分割点分别为x,这个点的对称 ...

  10. 同伦法(Homotopy Method)

    题目:同伦法(Homotopy Method) 学习压缩感知重构算法,经常能见到同伦法,但这里首先要特别说明的是,今天这里讨论的同伦法仅仅是一种思想,而不是一个具体的算法,类似于Majorizatio ...

最新文章

  1. T extends Serializable这是什么意思呢?看明白这个,你的问题就自然而然的明白了!...
  2. 欧盟「人脑计划」​最新进展:新算法模拟生物进化,为大脑如何工作提供新见解...
  3. 微信年末最后一发新功能!对生活很有帮助,必须了解一下!
  4. 大数据分析中国冬季重度雾霾的成因(二)
  5. boost::regex模块实现config_info 来打印正则表达式库配置信息的测试程序
  6. mysql数据库的分离_数据库分离和附加 (SQL Server)
  7. 基于UDP高性能传输协议UDT
  8. VB100十月测试:360可牛凯歌高奏 金山失利瑞星缺席
  9. 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会...
  10. msm 关机充电开启与关闭
  11. “微音乐”微信小程序实战开发过程
  12. 前端开发必配置:html5shiv.js和respond.min.js的作用说明
  13. java 日语文档翻译_日语文档怎么翻译?一分钟教会你日语翻译
  14. 贪心算法之田忌赛马(超详细)
  15. 5步完成编写Mysql的shell脚本
  16. ShaderWeaver使用教程-动画序列帧
  17. 局域网聊天软件源代码(包括语音聊天)
  18. 新建UEFI启动分区
  19. 「需求广场」需求词更新明细(十二)
  20. 详解ENet | CPU可以实时的道路分割网络

热门文章

  1. MATLAB化简矩阵为简化阶梯阵、使用分数(或小数)表示结果
  2. 我们现在不再需要杀毒软件了吗?
  3. android手机文件管理器,4 款 Android 文件管理器,总有一款适合你
  4. 超大图片的储存/处理/显示
  5. DeepFool笔记:对原理的理解和公式推导(多分类)
  6. TCP SYN洪水 (SYN Flood) 攻击原理与实现
  7. 人工智能 机器学习 数据挖掘 数据分析 算法大全
  8. js、css基础总结
  9. android 放大镜功能,Android放大镜效果实现
  10. 字符串intern()方法详解