Newton法(牛顿法 Newton Method)
平时经常看到牛顿法怎样怎样,一直不得要领,今天下午查了一下维基百科,写写我的认识,很多地方是直观理解,并没有严谨的证明。在我看来,牛顿法至少有两个应用方向,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)相关推荐
- Newton法(牛顿法)
基本思想 算法 修正Newton法 G_k为奇异矩阵 G_k为非奇异矩阵 总结 上一篇博客我们讲了最速下降法(梯度下降法),梯度下降法简单,但是收敛的速度较慢.这一篇博客将会讲述牛顿法,牛顿法对于正定 ...
- 牛顿法(Newton‘s method)和拟牛顿法(quasi Newton method)
简述 在看伊恩·古德费洛的深度学习,4.3节基于梯度的优化方法时提到 仅使用梯度信息的优化算法称为 一阶优化算法 ,如梯度下降. 使用Hessian矩阵的优化算法称为 二阶最优化算法 ,如牛顿法. 牛 ...
- 优化算法——牛顿法(Newton Method)
一.牛顿法概述 除了前面说的梯度下降法,牛顿法也是机器学习中用的比较多的一种优化算法.牛顿法的基本思想是利用迭代点处的一阶导数(梯度)和二阶导数(Hessen矩阵)对目标函数进行二次函数近似,然后把二 ...
- 向量值函数在计算机工程与应用,拟Newton法在高阶矩阵中的应用-计算机工程与应用.PDF...
Computer Engineering and Applications 计算机工程与应用 2012 ,48 (16) 33 ⦾研究.探讨⦾ 拟Newton 法在高阶矩阵中的应用 --求解最大特征值 ...
- 什么是牛顿法(Newton methods)?什么是拟牛顿法(Quasi Newton methods)?牛顿法和梯度下降法的区别是什么?
什么是牛顿法(Newton methods)?什么是拟牛顿法(Quasi Newton methods)?牛顿法和梯度下降法的区别是什么? 牛顿法的最初提出是用来求解方程的根的.对于最优化问题,其极值 ...
- 利用matlab实现复数域空间牛顿迭代法的分形图案展示(newton法)
利用matlab实现复数域空间牛顿迭代法的分形图案展示(newton法) 1 一维函数的牛顿迭代法 2 复平面的牛顿迭代法 2.1 简单方程结果 2.2 其它非线性方程结果 本文首发于 matlab爱 ...
- 二分法(Bisection)与牛顿法(Newton)求方程的根
二分法(Bisection)与牛顿法(Newton)求方程的根 二分法求根 二分法数学原理 使用前提:必须要知道根所在的区间 函数图像如下: 数学分析步骤及编程思想: 第一步:给出一个会使函数f连续的 ...
- 优选法和newton法在实践中的比较
优选法和newton法在实践中的比较 对于函数f(x)=2*x^2-4*x-6 ,求在(-1,2)范围内的极值,分别用优选法和newton法实践,看比较的次数. (setq count 0) (d ...
- 优选法和newton法在实践中的比较(分析原因)
优选法和newton法在实践中的比较(分析原因) 优选法得到应用的原因是在它所表示的情况下,上一次判断总能给下一次判断节省一次,下面来证明: 假设长度为l的线段,其中的黄金分割点分别为x,这个点的对称 ...
- 同伦法(Homotopy Method)
题目:同伦法(Homotopy Method) 学习压缩感知重构算法,经常能见到同伦法,但这里首先要特别说明的是,今天这里讨论的同伦法仅仅是一种思想,而不是一个具体的算法,类似于Majorizatio ...
最新文章
- T extends Serializable这是什么意思呢?看明白这个,你的问题就自然而然的明白了!...
- 欧盟「人脑计划」​最新进展:新算法模拟生物进化,为大脑如何工作提供新见解...
- 微信年末最后一发新功能!对生活很有帮助,必须了解一下!
- 大数据分析中国冬季重度雾霾的成因(二)
- boost::regex模块实现config_info 来打印正则表达式库配置信息的测试程序
- mysql数据库的分离_数据库分离和附加 (SQL Server)
- 基于UDP高性能传输协议UDT
- VB100十月测试:360可牛凯歌高奏 金山失利瑞星缺席
- 对.Net 垃圾回收的C#编程相关方面(Finalize 和Dispose(bool disposing)和 Dispose())的一些理解体会...
- msm 关机充电开启与关闭
- “微音乐”微信小程序实战开发过程
- 前端开发必配置:html5shiv.js和respond.min.js的作用说明
- java 日语文档翻译_日语文档怎么翻译?一分钟教会你日语翻译
- 贪心算法之田忌赛马(超详细)
- 5步完成编写Mysql的shell脚本
- ShaderWeaver使用教程-动画序列帧
- 局域网聊天软件源代码(包括语音聊天)
- 新建UEFI启动分区
- 「需求广场」需求词更新明细(十二)
- 详解ENet | CPU可以实时的道路分割网络