最优化算法3.2【拟牛顿法-BFGS算法】

特点

相较于:
最优化算法3【拟牛顿法1】

BFGS算法使用秩二矩阵校正hesse矩阵的近似矩阵(B),即:

[B_{k+1}=B_k+alphamu_kmu_k^T+eta u_k u_k^T ]

算法分析

将函数在(x_{k+1})处二阶展开:

[f(x)=f(x_{k+1})+g_{k+1}^T(x-x_{k+1})+frac{1}{2}(x-x_{k+1})^TG_{k+1}(x-x_{k+1}) ]

上式求导等于0,得:

[g_k=g_{k+1}+G_{k+1}(x-x_{k+1}) ]

(s_k=x_{k+1}-x_k),(y_k=g_{k+1}-g_k),则:

[G_{k+1}s_kapprox y_k ]

近似矩阵需要满足上述条件;

[B_{k+1}s_kapprox y_k ]

带入上边校正公式,化简可得:

[B_{k+1}=B_k-frac{B_ks_ks_k^TB_k}{s_k^TB_ks_k}+frac{y_ky_k^T}{y_k^Ts_k} ]

由于Armijo准则不能完全保证求得hesse矩阵近似阵(B_{k+1}),正定,还需对校正公式进行修正

算法

输入:梯度计算公式(gfun),容许误差:(epsilon),初始值(x_0),初始正定矩阵(B_0),Armijo准则需要的(deltain(0,1),sigmain(0,0.5))

(step0:求梯度g_k,if\, abs(g_k)<=epsilon,break;输出x_k)

(step1:解方程:B_kd=-g_k,求得迭代方向d_k)

(step2:利用Armijo准则求迭代步长alpha_k,x_{k+1}=x_k+alpha_kd_k)

(step3:由校正公式求B_{k+1})

(step4:令k=k+1;to\, step0)

reflect

和之前的拟牛顿法比较,就是将校正矩阵由秩一矩阵换为秩二矩阵;

reference

《最优化方法及其Matlab程序设计》

坚持
原文地址:https://www.cnblogs.com/liudianfengmang/p/13539502.html