4 Nonlinear conjugate gradient (非线性共轭梯度下降法)
先从(线性)CG 算法说起:
以下摘自:数值优化(Numerical Optimization)学习系列-共轭梯度方法(Conjugate Gradient)
4.0 问题形式
(线性)CG算法求解问题的两种形式:
1. 线性方程 Ax=b 并且要求矩阵 A 是对称正定矩阵。
2. 最优化问题:
要求矩阵 A 对称正定,这样该问题是一个凸问题并且有最优解。根据最优解满足 ∇ϕ(x)=Ax−b=0 ,一般记为 r(x) 。在迭代过程中,第 K 步的残差表示为
(注:向量积对列向量 X 求导运算法则:
d(UTV)/dX=(dUT/dX)V+(dVT/dX)U
则有:
d(XTA)/dX=(dXT/dX)A+(dA/dX)XT=IA+0XT=A
d(AX)/dXT=(d(XTAT)/dX)T=(AT)T=A
d(XTAX)/dX=(dXT/dX)AX+(d(AX)T/dX)X=AX+ATX
共轭性
给定一个非零向量集合 { p0,p1,⋯,pn−1} 和一个对称正定矩阵 A ,如果向量集合相对于 A 是共轭的,当且仅当 pTiApj=0,i≠j
如果向量集合是共轭的,则他们之间是相互线性独立的。
4.1 共轭方向算法
共轭方向算法 (Conjugate direction method) 不同于共轭梯度算法,共轭向量提前给出。共轭梯度算法则给出了共轭向量(方向)的计算方法。
(即假定共轭方向已知的情况下,如何计算最优化问题)
算法描述:
1. 给定共轭方向集合 {
p0,p1,⋯,pn−1} 和任意初始点 x0 。
2. 计算 xk+1=xk+αkpk
3. 计算最优步长 α :此时假定 xk 为已知量(定值),通过优化 ϕ(xk+αpk)