Lesson 4 Part 1 Newton's method
2014-06-09 10:15
337 查看
转自http://blog.csdn.net/luoleicn/article/details/6527049
平时经常看到牛顿法怎样怎样,一直不得要领,今天下午查了一下维基百科,写写我的认识,很多地方是直观理解,并没有严谨的证明。在我看来,牛顿法至少有两个应用方向,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矩阵的近似。
下面是我自己对牛顿方法的理解:
梯度下降法或者梯度上升法是为了找到合适的自变量,使目标函数达到局部最优(局部最小或局部最大,e.g. 极大值)
牛顿法则是为了找到合适的自变量,使目标函数为0
两者之间的关系: 可使梯度下降法的目标函数的一阶导数为牛顿法的目标函数
两者之间的关系:
牛顿法的收敛速度为O(n^2),它的一般形式如下
其中H为hessian矩阵,它的逆就相当于前面公式里面除以的二阶导数
它为n
* n的矩阵,n为feature数量
关于牛顿方法的应用,可以查看
Lesson
3 Part 2 logistic regression
中的matlab程序
平时经常看到牛顿法怎样怎样,一直不得要领,今天下午查了一下维基百科,写写我的认识,很多地方是直观理解,并没有严谨的证明。在我看来,牛顿法至少有两个应用方向,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矩阵的近似。
下面是我自己对牛顿方法的理解:
梯度下降法或者梯度上升法是为了找到合适的自变量,使目标函数达到局部最优(局部最小或局部最大,e.g. 极大值)
牛顿法则是为了找到合适的自变量,使目标函数为0
两者之间的关系: 可使梯度下降法的目标函数的一阶导数为牛顿法的目标函数
两者之间的关系:
牛顿法的收敛速度为O(n^2),它的一般形式如下
其中H为hessian矩阵,它的逆就相当于前面公式里面除以的二阶导数
它为n
* n的矩阵,n为feature数量
关于牛顿方法的应用,可以查看
Lesson
3 Part 2 logistic regression
中的matlab程序
相关文章推荐
- 牛顿法(Newton’s method)
- Part8-不用内存怎么行_2440内存初始化lesson2
- Newton's method
- 基础牛顿法及其变形(basic Newton's method & its variants)
- Matlab Newton‘s method
- Exercise: Logistic Regression and Newton's Method
- 孙鑫VC++深入详解:Lesson5 Part4 屏幕字符串滚动输出,DrawText,SetTimer,WM_Timer消息
- LESSON 8 DIGITAL FORENSICS part V
- Part4_lesson1---Bootloader设计蓝图
- Part8-不用内存怎么行_6410内存初始化lesson3
- LESSON 9 E-MAIL SECURITY part VII
- POJ 3727 Newton’s Method
- Part4_lesson3---U-Boot工作流程分析
- LESSON 1 -part 1
- 逻辑回归和牛顿法 Logistic Regression and Newton's Method
- Part4_lesson4---Bootloader架构设计
- Part6-点亮指路灯_lesson1
- LESSON 9 E-MAIL SECURITY part IV
- LESSON 1 -part 1 answer
- Part7-时钟初始化_lesson1