数值分析(八)

拟牛顿法

牛顿法具有不错的收敛性,但是每一次迭代需要计算此处的Hessian,这个计算代价是十分昂贵的,拟牛顿法就是用估计替代Hessian矩阵,使计算量大量减少。

DFP

假设现在已经来到了迭代点(x_{k+1}),这个点建立一个二次模型$$m_{k+1}(p) = f_{k+1} + abla f_{k+1}^T p+frac{1}{2}p^T B_{k+1} p$$现在(B)是未知的,需要根据之前迭代点的信息来推断(B),我们让(m_{k+1})(f)(x_{k})(x_{k+1})的梯度匹配上,前者是自然满足的,后者满足需要$$ abla m_{k+1}(-alpha_k p_k) = abla f_{k+1} -alpha_kB_{k+1}p_k = abla f_k$$即$$B_{k+1}s_k=y_k$$其中(s_k=x_{k+1}-x_k),(y_k = abla f_{k+1}- abla f_k),这个被称为割线条件。(B_{k+1})存在解需要(s_k^T y_k>0),这个条件可以由f是严格凸函数或者线搜索过程满足Wolf condition保证。这样(B_{k+1})总有一个解,实际上有无限个解,为了唯一确定(B_{k+1}),取诸解中在某种范数意义下与(B_k)最近的解,不同的范数导出了不同的拟牛顿法,我们取weighted Frobenius norm,并取权重矩阵为average Hessian。于是得到解:$$B_{k+1} = (I-gamma_k y_k s_k^T)B_k(I-gamma_k s_k y_k^T)+gamma_k y_k y_k^T quad gamma_k = frac{1}{y_k^T s_k}$$令(H_k = B_K^{-1})得到$$H_{k+1} = H_k-frac{H_ky_ky_kTH_k}{y_KT H_k y_k}+frac{s_k s_kT}{y_kT s_k}$$此即DFP方法的更新公式。

BFGS

BFGS实际上和DFP是对偶的,对(H_{k+1})施加DFP中(B_{k+1})的条件,得到$$H_{k+1} = (I- ho_k s_k y_k^T)H_k(I- ho_k y_k s_k^T)+ ho_k s_k s_k^T quad ho_k = frac{1}{y_k^T s_k}$$于是BFGS算法如下

BFGS是目前几乎最高效的拟牛顿法,除此之外,他还有self-correcting的性质。

SR1方法

BFGS方法中,(B_k)通过一次rank-2 modification得到(B_{k+1})。与这不同的是symmetric-rank-1更新,它拥有如下的一般形式$$B_{k+1} = B_{k}+delta vv^T$$其中(delta)(1)(-1),并且(delta,v)的选取使得(B_{k+1})满足割线条件,经过推算,得到$$B_{k+1} = B_k + frac{(y_k-B_k s_k)(y_k-B_k s_k)^T}{(y_k-B_k s_k)^T s_k}$$和$$H_{k+1} = H_k +frac{(s_k-H_k y_k)(s_k-H_k y_k)^T}{(s_k-H_k y_k)^Ty_k}$$
SR1方法的一大缺点是更新项的分母可能为0,这样会导致算法崩溃,具体地,如果((y_k-B_k s_k)^T s_k eq 0),那么更新公式是唯一的,如果(y_k=B_k s_k)那么唯一符合割线条件的是(B_{k+1}=B_k),如果(y_k eq B_s s_k,(y_k-B_k s_k)^Ts_k=0),那么满足割线条件的公式不存在。即使SR1可能崩溃,我们仍然对其感兴趣,因为:1.通过简单的保护措施可以防止崩溃,2.SR1做出的估计常常比BFGS更好,3.在某些问题中搜索过程不要求curvature条件,这样就无法保证(y_k^T s_k>0),那么BFGS更新不一定有解,这时就需要SR1做出的不定型Hessian估计了。
防止崩溃的保护措施很简单,就是只在$$|s_k^T (y_k-B_ks_k)|geq r|s_k| |y_k-B_ks_k|$$时按公式更新 (rin (0,1))应当很小,比如(10^{-8}),在不满足条件时,让(B_{k+1}=B_k)

SR1 Trust-Region


原文地址:https://www.cnblogs.com/mathematic-offering/p/9388053.html