美文网首页
海森矩阵与牛顿法

海森矩阵与牛顿法

作者: 努力学习的CC | 来源:发表于2020-03-21 20:18 被阅读0次

    之前在看求解优化问题的时候一直出现的两个概念,今天来记录一下

    泰勒展开式

    f(x) =  \sum_{n=1}^N \frac {f^n(x_0)}{n!} (x-x_0)^n

    牛顿法

    牛顿法主要用用在 

    1. 求解方程式

    目标是求解:f(x)=0

    当我们要求接的方程式求解起来很困难,我们可以试试用牛顿法来迭代求解,其原理就是对求解的函数使用一阶泰勒展开,那我们在x0处:

    f(x)=f(x_0)+(x-x_0)*f

    已知f(x)=0,则

    x = x_0-\frac {f(x_0)}{f^{`}(x_0)},很明显只根据这一次迭代我们很难直接得到关于x的准确估测,因此我们需要多次迭代直到收敛x_k = x_{k-1}-\frac {f(x_{k-1})}{f^{`}(x_{k-1})}

    2. 求解最优化问题

    目标是求解f^{`}(x)=0

    针对这个问题,我们对f(x)进行二阶泰勒公式展开:

    f(x) \approx f(x_0)+f^{`}(x_0)*(x-x_0)+\frac  {1}{2}*f^{``}(x_0)*(x-x_0)^2

    我们对上面的式子求导,并令其导数等于0

    f^{`}(x_0) + f^{``}(x_0)*(x-x_0)=0

    x = x_0-\frac  {f^{`}(x_0)}{f^{``}(x_0)}将其推广到x_k = x_{k-1}-\frac {f^{`}(x_{k-1})}{f^{``}(x_{k-1})}

    那么对于高纬函数,牛顿公式可以推广为:

    x_k=x_{k-1}-H^{-1}_{k-1}g_{k-1},g_{k-1}=\nabla f(x_{k-1})

    其中H^{-1}_{k-1}为海森矩阵,H_{k-1}=H(x_{k-1})=\frac {\partial^2f(x_{k-1})}{\partial x_i \partial x_j}

    这里比较一下梯度下降:

    x_k = x_{k-1}-\eta {f^{`}(x_{k-1})}

    梯度下降通过调整学习率来调整学习的速度,而牛顿法利用了函数曲线本身的性质,所以更容易收敛,但是牛顿法也有缺点,引入海森矩阵,增加了复杂性,当维度很高的时候,带来很大的计算压力,另外如果海森矩阵非正定会导致函数不一定下降,从而不会收敛,如果H为负定矩阵,则函数在f(x)在x0处为凸函数,会得到函数的极大值而不是极小值,如果H不定,则其逆矩阵可能不存在,导致-\frac {f^{`}(x_{k-1})}{f^{``}(x_{k-1})}这一现无法给出有效的信息

    参考1

    参考2

    相关文章

      网友评论

          本文标题:海森矩阵与牛顿法

          本文链接:https://www.haomeiwen.com/subject/ejwkyhtx.html