看牛顿法的时候,遇到的这个问题
原问题是要用牛顿法求对数似然函数
l(θ)
的最大值,也就是似然函数导数的零点,即迭代过程为:
θ:=θ−l′(θ)l′′(θ)
如果
θ
为向量,就会想,函数对向量求导怎么求?
所以查了一下:
1. 标量对向量求导:
结果是向量
事实上这就是所谓的Gradient,即对于一般标量函数
f(x)
, 其中向量为
x=(x1,...,xn)
,导数为:
∂f∂x=(∂f∂x1,...∂f∂xn)
也记为: ∇f
2. 向量对向量求导:
结果是矩阵
一阶导
这个当然也是gradient,当然这准确的说应该叫matrix gradient. 即对于向量值函数 f(x) , 其中 x=(x1,...,xn) , f=(f1,...,fm) , 导数为:
∂f∂x=∂fT∂x=[∂f1∂x,...∂fm∂x]=⎡⎣⎢⎢⎢⎢⎢⎢⎢∂f1∂x1⋮∂f1∂xn⋯⋱⋯∂fm∂x1⋮∂fm∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥
这个矩阵也叫做 Jacobian 矩阵
二阶导:
二阶导数就是Hessian矩阵,形式如下:
H(f)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂2f∂x21∂2f∂x2∂x1⋮∂2f∂xn∂x1∂2f∂x1∂x2∂2f∂x22⋮∂2f∂xn∂x2⋯⋯⋱⋯∂2f∂x1∂xn∂2f∂x2∂xn⋮∂2f∂x2n⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
或者可以用更抽象的定义:
Hi,j=∂2f(x)∂xi∂xj
明确了这一点,就能够给出 θ 时的迭代形式了:
θ:=θ−H−1∇θl(θ)
参考:
https://www.zhihu.com/question/58312854
http://blog.csdn.net/linolzhang/article/details/60151623