牛顿法使用总结

一、 牛顿法介绍

       首先介绍一下什么是无约束极小化问题minf(X)minf(X),其中XX是多维量,求取使得f(X)f(X)最小的XX的值。
       为简单起见,首先考虑XX一维的情况,这时目标函数f(X)f(X)变成f(x)f(x)牛顿法的基本思想是:在现有极小值得附近对f(x)f(x)做二阶泰勒展开,进而找到极小点的下一个估计值。设xkx_{k}为当前对的极小估计值,则
φ(x)=f(xk)+f(xk)(xxk)+12f(xxk)21\varphi (x)=f(x_{k})+f^{'}(x_{k})(x-x_{k})+\frac{1}{2}f^{''}(x-x_{k})^{2} (1)
上式省略(xxk)(x-x_{k})的高阶小项。因为是求取最小值,也就是求取极值,满足驻点定理:
φ(x)=02\varphi (x)_{'}=0 (2)
即得到:
f(xk)+f(xk)(xxk)=03f^{'}(x_{k})+f^{''}(x_{k})(x-x_{k})=0 (3)
这里是对xx求导,不是对xkx_{k}求导。另外的求导过程可以参考:https://blog.csdn.net/asdfsadfasdfsa/article/details/81156925
从而得到公式4:
x=xkf(xk)f(xk)(4)x=x_{k}-\frac{f^{'}(x_{k})}{f^{''}(x_{k})}(4)
于是给定初始值x0x_{0},则可以构造如下的迭代格式:
xk+1=xkf(xk)f(xk),k=0,1,2....(5)x_{k+1}=x_{k}-\frac{f^{'}(x_{k})}{f^{''}(x_{k})} ,k=0,1,2....(5)
以上是对一维情况的推到。
       对于多维情况: 二阶泰勒展开式(1)可以做推广,此时
φ(X)=f(Xk)+f(Xk)(XXk)+12(XXk)T2f(Xk)(XXk)(6)\varphi (X)=f(X_{k})+\bigtriangledown f(X_{k})(X-X_{k})+\frac{1}{2} (X-X_{k})^{T}\bigtriangledown^{2} f(X_{k})(X-X_{k})(6)
其中f\bigtriangledown fff梯度向量2f\bigtriangledown^{2} fff 的海森矩阵(Hexssian martix),其定义分别为:
f=[fx1fx2...fxN]\bigtriangledown f=\begin{bmatrix} \frac{\partial f}{\partial x_{1}}\\ \frac{\partial f}{\partial x_{2}}\\ ...\\ \frac{\partial f}{\partial x_{N}}\end{bmatrix},
2f=[2fx122fx1x2...2fx1xN2fx2x12fx22...2fx2xN............2fxNx12fxNx2...2fxN2]\bigtriangledown ^{2}f=\begin{bmatrix}\frac{\partial^{2} f}{\partial x_{1}^{2}} & \frac{\partial^{2} f}{\partial x_{1}\partial x_{2}}& ...& \frac{\partial^{2} f}{\partial x_{1}\partial x_{N}}\\ \frac{\partial^{2} f}{\partial x_{2}\partial x_{1}}& \frac{\partial^{2} f}{\partial x_{2}^{2}} & ... & \frac{\partial^{2} f}{\partial x_{2} \partial x_{N}}\\ ...& ... & ...& ...\\ \frac{\partial^{2} f}{\partial x_{N}\partial x_{1}} & \frac{\partial^{2} f}{\partial x_{N}\partial x_{2}} & ... & \frac{\partial^{2} f}{\partial x_{N}^{2}}\end{bmatrix}
一下将f\bigtriangledown f2f\bigtriangledown^{2} f其定义分别为ggHH,其中HH是对称矩阵,f(Xk)\bigtriangledown f(X_{k})2f(Xk)\bigtriangledown^{2} f(X_{k})表示将XX取值为XkX_{k}的矩阵。
同理求取驻点的极小值,最后得到
X=XkHk1gkX=X_{k}-H_{k}^{-1}*g_{k}同理得到迭代格式。
牛顿法使用总结


二、求导

       然而对于矩阵的求导过程是很复杂的过程,尤其是二阶倒数。网站上的答案没有统一。 下面给出一般矩阵的求导法则:以下部分参考下列网站:
     https://en.wikipedia.org/wiki/Matrix_calculus
     https://www.jianshu.com/p/186ea261f2e4

     一阶倒数求导公式都采用分子布局(Numerator layout);二阶倒数求导公式采用的是分母布局(Denominator layout); 注意:对于MATLAB中的雅各比矩阵的求导应该是与上面相反(一阶倒数求导公式都采用分母布局;二阶倒数求导公式采用的是分子布局),只要保持上面一种方式,从开始到最后就不会有错误。


      求导类型
       矩阵可以写成列向量或者行向量的形式,这两种不同的形式把矩阵求导分成了两种不同的情况。牛顿法使用总结
      表格列举了六种不同的矩阵求导类型,粗体代表向量或者矩阵(其实标量和向量也可以看作矩阵)。表格中还有三个空格没写出,实际上也是存在,但暂时先不讨论,因为这三种情况的求导结果大部分都是高于二阶的张量(tensor)形式,与常见的二维矩阵形式不同。
      布局约定
      采用列向量或者行向量的形式求导,两种形式会造成求导结果形式的不同。因为本质上形式的不同不会影响求导结果,只不过将结果按照不同的方式组织起来,方便进一步运算。
      布局决定(Layout conventions)就是为了将不同形式的求导分类.分为两种布局:分子布局(numerator layout)和分母布局(denominator layout)。通俗解释,现规定向量或者矩阵分为原始形式和转置形式两种,比如在线性回归中我们把列向量作为属性值的原始形式,其转置形式就是行向量。

对于分子布局,求导结果中分子保持原始形式,分母为转置形式
对于分母布局,求导结果中分子为转置形式,分母保持原始形式
下图展示各种类型求导与两种布局之间的关系
牛顿法使用总结


细则解释:对于YY是列向量,二XX是行向量。将上述表格中每一项单独拿出来看:

分子布局
牛顿法使用总结
下面的两种定义只在分子布局中有意义:
牛顿法使用总结


分母布局
牛顿法使用总结


三、常见的求导结果

一般可以使用查表方式获得。
向量/向量
牛顿法使用总结

标量/向量

牛顿法使用总结

牛顿法使用总结
向量/标量
牛顿法使用总结

四、例子

      这里采用的是我自己的工作时候遇到的问题(一阶倒数求导公式都采用分子布局,二阶倒数求导公式采用的是分母布局),当然反过来也可以,再次就不在编辑:牛顿法使用总结
牛顿法使用总结

这个结果是经过验证正确的。

     求取原则,变量是列向量,则求取雅各比矩阵使用分子布局(分子是列向量,分母转置为行向量或者标量),二阶导数海森矩阵使用分母布局(分母是列向量或者标量,分子转置为行向量)。
     以下是求取的列子,大家可以做参考:
牛顿法使用总结
牛顿法使用总结
牛顿法使用总结
牛顿法使用总结
牛顿法使用总结

牛顿法使用总结

牛顿法使用总结

牛顿法使用总结