暴力拆解《Numerical Optimization》之共轭方向法

来源:互联网 发布:淘宝怎样看退货率 编辑:程序博客网 时间:2024/05/16 12:46

首先介绍一下什么是共轭:

是一个n阶对称正定阵,若存在非零向量所构成的集合使得


那么则称与对称正定阵形成共轭。

在这一篇博客中,就是利用共轭方向做为目标函数减小的方向,来迭代计算目标函数的极值点。




考虑这样一个问题:,求解,其中为对称正定阵。


我们可以考虑这样一个目标函数:


我们可以看出,是该目标函数的梯度。当该目标函数取到极值的时候,其梯度为零,也就是。求解的问题就被转化成了求解该目标函数的极值点的问题。


是一个对角矩阵,那么目标函数的等值线与坐标轴平行,并且的共轭梯方向也与坐标轴平行,这时,我们可以非常方便的且非常直观的用下面的方法去找到目标函数的极值点:


并且 ,由上面的图我们可以看出,我们是可以在n次迭代之内找到极值点的。


不是一个对角矩阵时,这个时候它的共轭方向不再是坐标轴方向,按上面的方法就无法再找到极值点:



此时,我们可以想办法把矩阵转化为对角矩阵,然后再按照上面的方法来找到目标函数的极值点。


由矩阵理论的知识,我们可知若为对称正定阵,那么就是一个正规阵,由正规阵的性质可知,可以写成这样的形式:


其中为矩阵的特征值,为酉矩阵(酉矩阵意味着:的求解方法将在最后补充)。这里我们只考虑实数域的情况,此时,。记:

令:


那么,我们就将上面的而目标函数变成了:


原本的变成了一个对角矩阵:



由此,我们得到了一个共轭方向法计算目标函数的极值点的计算步骤:

1.利用矩阵理论的知识,计算出、所对应的新的起始点、以及新的目标函数

2.将平行于坐标轴的方向(的共轭方向)做为新的目标函数减小的方向,计算,其中(由来见置顶文章暴力拆解《Numerical Optimization》之器材准备(数学知识补充)之4)

3.进行n次迭代,找到新的目标函数的极值点。然后利用公式,计算出原目标函数的极值





补充:若就是一个正规阵,如何计算

利用线性代数的知识计算出矩阵的特征值和特征向量,然后将特征向量进行单位化。

将特征值组成对角阵即为,其对应单位化后的特征向量组成




如有觉得上面有错误,或者有疑问,请评论,我们一起探讨。Thanks for your patience! :)

0 0