1.思想
用于二次函数方程求最优解,对于复杂的函数可以通过泰勒展开成这种形式,此时A为海森矩阵。
,
,如果利用牛顿法寻找最优解,需要计算海森矩阵的逆,对于复杂的矩阵,计算量比较大。共轭梯度法可以解决此问题。
共轭梯度法是梯度下降法和牛顿法的折衷,它不仅解决了梯度下降法中必须手动选择学习率的问题,还解决了牛顿法中对于复杂海森矩阵的求逆运算。
在梯度下降法中,从初始解到最优解移动的向量之和可以表示成D向量,任何向量都可以表示成线性无关的向量的和,共轭向量是线性无关的,所以可以通过A的共轭向量来逐步构建最优解。
2.推导
目标函数:
定义残差:
定义新的搜索方向(即共轭梯度方向):,
和
关于A共轭
定义解的更新方向:
首先寻求步长,使得
最小
另得到
因为时,
又
再寻求步长
因为,
是A共轭向量
3.算法流程
对于给定的初始解向量,初始残差为
,令初始共轭向量
For k=0,1,2
If
Break
end