牛顿法-最优化方法

牛顿迭代法

1概念:

Jacobi 矩阵:又称为雅克比矩阵。如果f(x)是标量函数,那么雅克比矩阵是一个向量,等于 f(x) 的梯度。如果f(x)是向量函数,那么雅克比矩阵是二维矩阵,hession矩阵是三维矩阵。

梯度是 Jacobian 矩阵的特例,梯度的 jacobian 矩阵就是 Hesse 矩阵。

hession矩阵:又称海森矩阵,黑塞矩阵。

如果f(x)是标量函数,f(x1,x2,x3,…,xn),那么hession矩阵是二维矩阵,如下图:

2解决问题:

f(x),在定义域[a,b]中最小值。求f(x)最小值,如果f(x)在[a,b]上局部最小值唯一,则也就是求:f’(x)=0。

3牛顿步骤:

如果f(x)满足一下几个条件:

1.f(x)在[a,b]二次可微,即f(x)又二次导数.只有二次可微,这样f(x)才能求Hession矩阵

2.f(x)的Hession矩阵在[a,b]上正定,只要在某些位置不正定,就有可能收敛不到局部极小值点

计算的步骤:

不停迭代n步,直到Xk+1 - Xk小于某个值,比如0.0001.

牛顿方法有两个好处:

1:收敛快,是二次收敛。

请看wikipdia:

http://en.wikipedia.org/wiki/Newton%27s_method

下关于二次收敛的证明:

Proof of quadratic convergence for Newton’s iterative method

而且要满足以下条件才收敛:

1f(x)导数不等于零,因为f(x)导数为分母。

2f(x)的二次导师是有限的。

3x充分接近局部极值点a.

2:

只要初始值充分接近局部极小值,则可以保证收敛到局部极小值。

但计算Hession矩阵的逆矩阵,时间复杂度为n的3次方,空间复杂度为n的平方。

为什么是n的三次方,由于矩阵的逆矩阵计算有两种方法:

一种是先计算矩阵的每个元素的伴随矩阵,再用伴随矩阵除以矩阵行列式的值作为逆矩阵对应的值。

第二种是先计算增广矩阵,增广矩阵左边是该矩阵,右边是单位矩阵。最后变成左边为单位矩阵,右边的值为逆矩阵。具体方法是:主对角线元素互换并除以行列式的值,副对角线元素变号并除以行列式的值.

时间复杂第二种是n的3次。

所以用这种牛顿方法有太多限制:所以出现了 L-BFGS,拟牛顿等很多好的方法。

时间: 2024-10-27 06:03:27

牛顿法-最优化方法的相关文章

常见的几种最优化方法(梯度下降法、牛顿法、拟牛顿法、共轭梯度法等)

我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题"在一定成本下,如何使利润最大化"等.最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称.随着学习的深入,博主越来越发现最优化方法的重要性,学习和工作中遇到的大多问题都可以建模成一种最优化模型进行求解,比如我们现在学习的机器学习算法,大部分的机器学习算法的本质都是建立优化模型,通过最优化方法对目标函数(或损失函数)进行优

牛顿法、拟牛顿法、共轭梯度法

牛顿法 一: 最速下降法 下降法的迭代格式为xk+1=xk–αkdk , 其中dk为下降方向, 设gk=∇f(xk)≠0, 则下降方向要满足dTkgk<0. 当步长确定时, dTkgk的值越小, 即−dTkgk的值越大, 函数下降得越快. 由Cauchy-Schwartz不等式∣∣dTkgk∣∣≤∥dk∥∥gk∥, 当且仅当dk=−gk时, dTkgk的值最小. 从而−gk是最速下降方向. 则最速下降法的迭代格式为xk+1=xk−αkgk . 这里要注意的是, 最速下降方向只是算法的局部性质.

最优化方法及其数学模型

最优化方法广泛的体现于自然界及人类社会中,它“先天地生,独立而不改,周行而不殆“,正如神正论者说,当前世界是上帝所创造的可能世界中最好的世界:生物的生存及进化都遵循着最优化的原则,从而形成当今我们世界的众生万物:——于人类社会中,这种原则有过之而无不及,它源于人类的一种贪婪的想法,它企图在一定的尺度范围内,达到自身的利益的最大化——在国家权力缺乏的状态下,最终形成”人对人像狼“的局面!       从马克思所描述的资本主义社会,到当下我们所生存的世界,都体现了人类的这种极端贪婪的想法,比如在市场

Logistic回归的牛顿法及DFP、BFGS拟牛顿法求解

牛顿法 1 # coding:utf-8 2 import matplotlib.pyplot as plt 3 import numpy as np 4 5 def dataN(length):#生成数据 6 x = np.ones(shape = (length,3)) 7 y = np.zeros(length) 8 for i in np.arange(0,length/100,0.02): 9 x[100*i][0]=1 10 x[100*i][1]=i 11 x[100*i][2]=

牛顿法|阻尼牛顿法|拟牛顿法|DFP算法|BFGS算法|L-BFGS算法

一直记不住这些算法的推导,所以打算详细点写到博客中以后不记得就翻阅自己的笔记. 泰勒展开式 最初的泰勒展开式,若  在包含  的某开区间(a,b)内具有直到n+1阶的导数,则当x∈(a,b)时,有: 令可得到如下式子: 泰勒展开我的理解就有两个式子. 参考文献:http://baike.baidu.com/link?url=E-D1MzRCjDi8qrlh2Cn64fwtz703bg-h_z2_mOXorti2_3aBKrOUY4-2gHuESowiK8aQSBFE8y0yJeGl4_yOAq

Machine Learning 学习笔记 (2) —— 另一种寻找极值的方法:牛顿法

[总目录]http://www.cnblogs.com/tbcaaa8/p/4415055.html 1. 用牛顿法解方程 牛顿法是一种求解方程的迭代算法,也可以用于方程组的求解.其思想是利用方程(尤其是非线性方程)的线性部分,对原方程进行近似.不失一般性,考虑方程f(x)=0.对f(x)在x=t处进行泰勒展开,可得f(x)=f(t)+f'(t)(x-t)+... 取线性部分代替f(x),带入方程f(x)=0,可得f(t)+f'(t)(x-t)=0 ,进而解出x=t-f(t)/f'(t).将方程

机器学习中梯度下降法和牛顿法的比较

在机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解.在逻辑斯蒂回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法.由于两种方法有些相似,我特地拿来简单地对比一下.下面的内容需要读者之前熟悉两种算法. 梯度下降法 梯度下降法用来求解目标函数的极值.这个极值是给定模型给定数据之后在参数空间中搜索找到的.迭代过程为: 可以看出,梯度下降法更新参数的方式为目标函数在当前参数取值下的梯度值,前面再加上一个步长控制参数alpha.梯度下降法通

c#用牛顿法计算根号下2的值

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 牛顿法计算根号下2的值 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 double a = 0, b = 2, t = 0; 14

Stanford大学机器学习公开课(四):牛顿法、指数分布族、广义线性模型

(一)牛顿法解最大似然估计 牛顿方法(Newton's Method)与梯度下降(Gradient Descent)方法的功能一样,都是对解空间进行搜索的方法.其基本思想如下: 对于一个函数f(x),如果我们要求函数值为0时的x,如图所示: 我们先随机选一个点,然后求出该点的切线,即导数,延长它使之与x轴相交,以相交时的x的值作为下一次迭代的值. 更新规则为: 那么如何将牛顿方法应用到机器学习问题求解中呢? 对于机器学习问题,我们优化的目标函数为极大似然估计L,当极大似然估计函数取得最大时,其导