共轭梯度法原理

一、共轭梯度的提出

对于二次型函数,可表示为f(x) = 1 / 2 * (x -x0)' *A * (x -x0) +c

x =x0时,式有最值,于是,最速方向应该是由x指向x0,也就是(x -x0)

而不是梯度∂f(x) /∂x=A * (x - x0)方向,而上一个进入该等值面的最佳方式应该与该等值面方向相关性最小方向,亦即与该点梯度方向垂直,设其为p(k-1)

那么,就有0 = p(k-1) * ∂f(x) /∂x = p(k-1)  * A * (x - x0) = p(k-1)  * A * p(k)

于是,最优方向集合p的关系就是③式所表示一样,称之为共轭梯度。


二、利用梯度获取共轭梯度

设第k次递推梯度为g(k),假设可通过g(k)来获取p(k),那么,一种假设是p(k) = -g(k) + a * p(k - 1)

通过求因子a来获取新的最小化方向。 

式两边左乘p(k-1)' * A,那么p(k-1)' * Ap(k) = - p(k-1)' * * g(k)  + a * p(k-1)' * A p(k - 1)

因为最小化方向是互为共轭的,所以左边p(k-1)' * A * p(k) = 0,于是有右边:- p(k-1)' * * g(k) + a * p(k-1)' * A p(k - 1) = 0  亦即a = p(k-1)' * * g(k)  / (p(k-1)' * A p(k - 1) ) ⑥

但一般情况下A是不易获取的,最好是能获取到p(k-1)' * A的值了,由于:g(k) = A * x(k) + c ⑦

⑦式左右两边减去其上一次梯度g(k-1) = A * x(k-1) + c得g(k) - g(k-1) = A * (x(k)  - x(k-1) ) = A * (b * p(k - 1)) = b * A * p(k - 1) ⑧

于是A * p(k - 1)  = (g(k) - g(k-1)) / b

亦即p(k - 1)‘ * A =  (g'(k) - g'(k-1)) / b

结合⑥和,可得

a = △g'(k-1) * g(k) / △g'(k-1) * p(k - 1)

结合④式,可递推出所有共轭梯度方向集p


你可能感兴趣的:(数学;理论;)