首先介绍一下什么是共轭:
在这一篇博客中,就是利用共轭方向做为目标函数减小的方向,来迭代计算目标函数的极值点。
我们可以考虑这样一个目标函数:
我们可以看出,是该目标函数的梯度。当该目标函数取到极值的时候,其梯度为零,也就是
。求解
的问题就被转化成了求解该目标函数的极值点的问题。
若是一个对角矩阵,那么目标函数
的等值线与坐标轴平行,并且
的共轭梯方向也与坐标轴平行,这时,我们可以非常方便的且非常直观的用下面的方法去找到目标函数
的极值点:
并且 ,由上面的图我们可以看出,我们是可以在n次迭代之内找到极值点的。
当不是一个对角矩阵时,这个时候它的共轭方向不再是坐标轴方向,按上面的方法就无法再找到极值点:
此时,我们可以想办法把矩阵转化为对角矩阵,然后再按照上面的方法来找到目标函数
的极值点。
由矩阵理论的知识,我们可知若为对称正定阵,那么
就是一个正规阵,由正规阵的性质可知,
可以写成这样的形式:
其中为矩阵
的特征值,
为酉矩阵(酉矩阵意味着:
,
的求解方法将在最后补充)。这里我们只考虑实数域的情况,此时,
。记:
令:
那么,我们就将上面的而目标函数变成了:
由此,我们得到了一个共轭方向法计算目标函数的极值点的计算步骤:
1.利用矩阵理论的知识,计算出
、
、所对应的新的起始点
、以及新的目标函数
。
2.将平行于坐标轴的方向(
的共轭方向)做为新的目标函数
减小的方向,计算
,其中
(由来见置顶文章暴力拆解《Numerical Optimization》之器材准备(数学知识补充)之4)