【机器学习】拟牛顿下降优化方法-BFGS
2016-11-06 01:55
267 查看
牛顿法是求解最优化,理论上最好最精确的方法,公式为:xk+1=xk−f′(xk)f″(xk),原理是求解导数为0的情况。如果xk是一个高维数据,且函数f(x)非常复杂,那么求解1/f″(x)就是很麻烦的过程。拟牛顿法的思路是,在牛顿法的基础上,对1/f″(x)做个近似估计就行了,不需要精确计算。这样虽然结果会有些差异,但是速度上来了。
拟牛顿法 基于原函数f(xk+1)关于f(xk)的二阶泰勒展开。设f(xk)=f(xk+1)+f′(xk+1)(xk−xk+1)+12(xk−xk+1)Tf″(xk+1)(xk−xk+1)+o(xk+1) 令f″(xk+1)=Bk+1,去掉余项o(xk+1),对xk求导有f′(xk)=f′(xk+1)+Bk+1(xk−xk+1),解出Bk+1=f′(xk)−f′(xk+1)xk−xk+1=f′(xk+1)−f′(xk)xk+1−xkxk+2=xk+1−λf′(xk+1)/Bk+1由于包含要求解的xk+1,我们只能试着取一个值,随机取值风险很大,上述方程只能作为拟牛顿方程成立的一个必要条件。。
BFGS算法是一种迭代拟牛顿法,在满足上述必要条件的情况,保证了计算过程中的稳定,具体证明太难了。设Bk+1=Bk+δB。数学家用了一个很技巧性很偶然的方法,令δB=αuuT+βvvT,则Bk+1=Bk+αuuT+βvvTBk+1(xk+1−xk)=f′(xk+1)−f′(xk)=Bk(xk+1−xk)+[αuT(xk+1−xk)]u+[βvT(xk+1−xk)]v 令αuT(xk+1−xk)=1,βvT(xk+1−xk)=−1,u=f′(xk+1)−f′(xk),v=Bk(xk+1−xk),刚好恒等式成立。于是有α=1[f′(xk+1)−f′(xk)]T(xk+1−xk)β=−1[Bk(xk+1−xk)]T(xk+1−xk)=−1(xk+1−xk)TBk(xk+1−xk) 其中Bk=BTk,原理是我们近似认为B是二阶导,当原函数是一元函数时,B是常量,转置就是本身;当原函数是多元函数时,B近似海森矩阵,表示为⎡⎣⎢⎢⎢⎢⎢⎢∂2f∂x21∂2f∂x2∂x1...∂2f∂x1∂x2∂2f∂x22............⎤⎦⎥⎥⎥⎥⎥⎥显然B可以认为是一个对称矩阵。
获得上述式子后,令sk=xk+1−xk,yk=f′(xk+1)−f′(xk我们写得Bk+1=Bk+sksTkyTksk−BksksTkBksTkBKsk值得注意的是,Bk+1的表达式还是包含未知的xk+1。定义步长参数λk,遍历计算f(xk+λkdk),dk=−f′(xk)/Bk,取其中函数值最小时的λk,即求解λk=argminf(xk+λdk),近似得到sk=λk(−f′(xk)/Bk),然后代入Bk+1表达式即可。当然λk还有一些设置方法。我们用上述方法预先取的值,一般都受到BFGS本身的约束而不会太离谱。
BFGS方法步骤如下:
1、给定初值x0,收敛阈值η,初始二阶导B0=I,k=0
2、计算得到dk=f′(xk)/Bk,一般Bk是可以求逆的
3、解λk=argminf(xk+λdk),得到xk+1=xk−λkdk
4、如果|f′(xk+1)|<η,终止运行
5、计算yk=f′(xk+1−f′(xk)),sk=−λkdk,代入Bk+1求解方程,求取Bk+1
6、k=k+1,从步骤1开始。
拟牛顿法 基于原函数f(xk+1)关于f(xk)的二阶泰勒展开。设f(xk)=f(xk+1)+f′(xk+1)(xk−xk+1)+12(xk−xk+1)Tf″(xk+1)(xk−xk+1)+o(xk+1) 令f″(xk+1)=Bk+1,去掉余项o(xk+1),对xk求导有f′(xk)=f′(xk+1)+Bk+1(xk−xk+1),解出Bk+1=f′(xk)−f′(xk+1)xk−xk+1=f′(xk+1)−f′(xk)xk+1−xkxk+2=xk+1−λf′(xk+1)/Bk+1由于包含要求解的xk+1,我们只能试着取一个值,随机取值风险很大,上述方程只能作为拟牛顿方程成立的一个必要条件。。
BFGS算法是一种迭代拟牛顿法,在满足上述必要条件的情况,保证了计算过程中的稳定,具体证明太难了。设Bk+1=Bk+δB。数学家用了一个很技巧性很偶然的方法,令δB=αuuT+βvvT,则Bk+1=Bk+αuuT+βvvTBk+1(xk+1−xk)=f′(xk+1)−f′(xk)=Bk(xk+1−xk)+[αuT(xk+1−xk)]u+[βvT(xk+1−xk)]v 令αuT(xk+1−xk)=1,βvT(xk+1−xk)=−1,u=f′(xk+1)−f′(xk),v=Bk(xk+1−xk),刚好恒等式成立。于是有α=1[f′(xk+1)−f′(xk)]T(xk+1−xk)β=−1[Bk(xk+1−xk)]T(xk+1−xk)=−1(xk+1−xk)TBk(xk+1−xk) 其中Bk=BTk,原理是我们近似认为B是二阶导,当原函数是一元函数时,B是常量,转置就是本身;当原函数是多元函数时,B近似海森矩阵,表示为⎡⎣⎢⎢⎢⎢⎢⎢∂2f∂x21∂2f∂x2∂x1...∂2f∂x1∂x2∂2f∂x22............⎤⎦⎥⎥⎥⎥⎥⎥显然B可以认为是一个对称矩阵。
获得上述式子后,令sk=xk+1−xk,yk=f′(xk+1)−f′(xk我们写得Bk+1=Bk+sksTkyTksk−BksksTkBksTkBKsk值得注意的是,Bk+1的表达式还是包含未知的xk+1。定义步长参数λk,遍历计算f(xk+λkdk),dk=−f′(xk)/Bk,取其中函数值最小时的λk,即求解λk=argminf(xk+λdk),近似得到sk=λk(−f′(xk)/Bk),然后代入Bk+1表达式即可。当然λk还有一些设置方法。我们用上述方法预先取的值,一般都受到BFGS本身的约束而不会太离谱。
BFGS方法步骤如下:
1、给定初值x0,收敛阈值η,初始二阶导B0=I,k=0
2、计算得到dk=f′(xk)/Bk,一般Bk是可以求逆的
3、解λk=argminf(xk+λdk),得到xk+1=xk−λkdk
4、如果|f′(xk+1)|<η,终止运行
5、计算yk=f′(xk+1−f′(xk)),sk=−λkdk,代入Bk+1求解方程,求取Bk+1
6、k=k+1,从步骤1开始。
相关文章推荐
- 机器学习的训练算法(优化方法)汇总——梯度下降法及其改进算法
- 机器学习基础(五十九)—— 高级优化算法(梯度下降、L-BFGS、共轭梯度)
- 寻优方法总结:最速下降法,牛顿下降法,阻尼牛顿法,拟牛顿法DFP/BFGS
- 梯度下降优化方法总结
- 机器学习中几种常见优化方法总结
- 几种常用的优化方法梯度下降法、牛顿法、)
- 机器学习优化算法L-BFGS及其分布式实现
- 无约束优化方法(梯度法-牛顿法-BFGS- L-BFGS)
- NN优化方法对照:梯度下降、随机梯度下降和批量梯度下降
- 梯度下降与优化方法(BGD & SGD & Momentum & AdaGrad & RMSProp & Adam)
- 优化方法总结续篇:下降单纯形法(downhill simplex) 及python示例代码
- 机器学习笔记四 - 牛顿方法、指数分布族、广义线性模型、广义线性模型(多项式分布)
- 深度学习优化方法:梯度下降法及其变形
- 机器学习面试准备之二、优化方法
- 机器学习中几种常见优化方法总结
- NN优化方法对照:梯度下降、随机梯度下降和批量梯度下降
- 机器学习笔记3——牛顿方法
- 机器学习中常见的几种优化方法
- 几种常用的优化方法梯度下降法、牛顿法、)
- 机器学习优化算法—L-BFGS