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