一、 牛顿法介绍
首先介绍一下什么是无约束极小化问题:minf(X),其中X是多维量,求取使得f(X)最小的X的值。
为简单起见,首先考虑X为一维的情况,这时目标函数f(X)变成f(x)。牛顿法的基本思想是:在现有极小值得附近对f(x)做二阶泰勒展开,进而找到极小点的下一个估计值。设xk为当前对的极小估计值,则
φ(x)=f(xk)+f′(xk)(x−xk)+21f′′(x−xk)2(1)
上式省略(x−xk)的高阶小项。因为是求取最小值,也就是求取极值,满足驻点定理:
φ(x)′=0(2)
即得到:
f′(xk)+f′′(xk)(x−xk)=0(3)
这里是对x求导,不是对xk求导。另外的求导过程可以参考:https://blog.csdn.net/asdfsadfasdfsa/article/details/81156925
从而得到公式4:
x=xk−f′′(xk)f′(xk)(4)
于是给定初始值x0,则可以构造如下的迭代格式:
xk+1=xk−f′′(xk)f′(xk),k=0,1,2....(5)
以上是对一维情况的推到。
对于多维情况: 二阶泰勒展开式(1)可以做推广,此时
φ(X)=f(Xk)+▽f(Xk)(X−Xk)+21(X−Xk)T▽2f(Xk)(X−Xk)(6)
其中▽f为f的梯度向量, ▽2f为f 的海森矩阵(Hexssian martix),其定义分别为:
▽f=⎣⎢⎢⎢⎡∂x1∂f∂x2∂f...∂xN∂f⎦⎥⎥⎥⎤,
▽2f=⎣⎢⎢⎢⎢⎡∂x12∂2f∂x2∂x1∂2f...∂xN∂x1∂2f∂x1∂x2∂2f∂x22∂2f...∂xN∂x2∂2f............∂x1∂xN∂2f∂x2∂xN∂2f...∂xN2∂2f⎦⎥⎥⎥⎥⎤
一下将▽f, ▽2f其定义分别为g和H,其中H是对称矩阵,▽f(Xk), ▽2f(Xk)表示将X取值为Xk的矩阵。
同理求取驻点的极小值,最后得到
X=Xk−Hk−1∗gk同理得到迭代格式。
二、求导
然而对于矩阵的求导过程是很复杂的过程,尤其是二阶倒数。网站上的答案没有统一。 下面给出一般矩阵的求导法则:以下部分参考下列网站:
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)。通俗解释,现规定向量或者矩阵分为原始形式和转置形式两种,比如在线性回归中我们把列向量作为属性值的原始形式,其转置形式就是行向量。
对于分子布局,求导结果中分子保持原始形式,分母为转置形式
对于分母布局,求导结果中分子为转置形式,分母保持原始形式
下图展示各种类型求导与两种布局之间的关系
细则解释:对于Y是列向量,二X是行向量。将上述表格中每一项单独拿出来看:
分子布局
下面的两种定义只在分子布局中有意义:
分母布局
三、常见的求导结果
一般可以使用查表方式获得。
向量/向量
标量/向量
向量/标量
四、例子
这里采用的是我自己的工作时候遇到的问题(一阶倒数求导公式都采用分子布局,二阶倒数求导公式采用的是分母布局),当然反过来也可以,再次就不在编辑:
这个结果是经过验证正确的。
求取原则,变量是列向量,则求取雅各比矩阵使用分子布局(分子是列向量,分母转置为行向量或者标量),二阶导数海森矩阵使用分母布局(分母是列向量或者标量,分子转置为行向量)。
以下是求取的列子,大家可以做参考: