【math】梯度(gradient)、雅克比矩阵(Jacobian)、海森矩阵(Hessian)

梯度(Gradient):

wiki上的定义:

The gradient of f is defined as the unique vector field whose dot product with any vector v at each point x is the directional derivative of f along v. That is,

(\nabla f(x))\cdot \mathbf{v} = D_{\mathbf v}f(x).

f 的梯度,是与在每一点x的任意向量v的点积为f沿着v的方向的导数的唯一的向量场。

说的真复杂,但是关键信息是,对于一个固定的x而言,梯度是一个向量。

直角坐标系中,梯度是这样一个向量:

\nabla f  = \frac{\partial f}{\partial x_1 }\mathbf{e}_1 + \cdots + \frac{\partial f}{\partial x_n }\mathbf{e}_n

其分量由f在各个基的方向上的偏导组成


笛卡尔坐标系中,就是:

   \nabla f = \frac{\partial f}{\partial x} \mathbf{i} +\frac{\partial f}{\partial y}  \mathbf{j} +\frac{\partial f}{\partial z} \mathbf{k}

沿着i方向的导数,就是i轴方向的分量


和一阶泰勒公式类似:

f(x) \approx f(x_0) + (\nabla f)_{x_0}\cdot(x-x_0)


梯度和df之间关系:

http://en.wikipedia.org/wiki/Gradient#Differential_or_.28exterior.29_derivative

由定义:

(\nabla f)_x\cdot v = \mathrm d f_x(v)

记df是差分函数 x->dfx

把x看做变量,

R看做列向量空间,df可以看做一个行向量,

\left( \frac{\partial f}{\partial x_1}, \dots, \frac{\partial f}{\partial x_n}\right)

于是dfx就是一个矩阵相乘(df*列向量空间的基)的形式。梯度就是对应的列向量

由于v是任意的,所以函数相等,其元素也相等。

(\nabla f)_i = \mathrm{d} f^\mathsf{T}_i




Jacobian:

对于值为标量的多变量的函数 f(x),我们使用梯度,但是如果是值为向量的多变量的函数怎么办呢

雅克比矩阵实际上是对于梯度的一种泛化,

记m为函数值的维度,记n为变量维度

m = 1时,函数的雅克比矩阵就是梯度

m = 1而且n=1时,函数的雅克比矩阵和梯度就是简单的导数。


这里wiki给出了一个小例子,在图像变换(变量是位置x和y)中,已知某一位置的变换情况,就可以利用雅克比矩阵来估计周围情况,这和用一阶导近似某一点周围的函数值是一样的。

The Jacobian can also be thought of as describing the amount of "stretching", "rotating" or "transforming" that a transformation imposes locally. For example, if (x_2,y_2)=f(x_1,y_1) is used to transform an image, the Jacobian of fJ(x_1,y_1) describes how the image in the neighborhood of (x_1,y_1) is transformed.

F(\mathbf{x}) = F(\mathbf{p}) + J_F(\mathbf{p})(\mathbf{x}-\mathbf{p}) + o(\|\mathbf{x}-\mathbf{p}\|)


http://en.wikipedia.org/wiki/Jacobian_matrix#Dynamical_systems

a stationary point is related to the eigenvalues of JF(x0)


Hession:

某种意义上说,梯度和雅克比矩阵都是一种一阶导数(二者针对的函数的值不同)

二阶导数是什么呢?

一个值为标量的多变量函数的梯度的雅克比矩阵就是二阶导数,也就是Hessian矩阵


关系如下:

 H(f)(\mathbf x) = J(\nabla \! f)(\mathbf x).

H(f) = \begin{bmatrix}\dfrac{\partial^2 f}{\partial x_1^2} & \dfrac{\partial^2 f}{\partial x_1\,\partial x_2} & \cdots & \dfrac{\partial^2 f}{\partial x_1\,\partial x_n} \\[2.2ex]\dfrac{\partial^2 f}{\partial x_2\,\partial x_1} & \dfrac{\partial^2 f}{\partial x_2^2} & \cdots & \dfrac{\partial^2 f}{\partial x_2\,\partial x_n} \\[2.2ex]\vdots & \vdots & \ddots & \vdots \\[2.2ex]\dfrac{\partial^2 f}{\partial x_n\,\partial x_1} & \dfrac{\partial^2 f}{\partial x_n\,\partial x_2} & \cdots & \dfrac{\partial^2 f}{\partial x_n^2}\end{bmatrix}.

类似泰勒二阶公式:

y=f(\mathbf{x}+\Delta\mathbf{x})\approx f(\mathbf{x}) + J(\mathbf{x})\Delta \mathbf{x} +\frac{1}{2} \Delta\mathbf{x}^\mathrm{T} H(\mathbf{x}) \Delta\mathbf{x}
如果f(x)二阶可导且连续,则有:

\frac {\partial}{\partial x} \left( \frac { \partial f }{ \partial y} \right) =       \frac {\partial}{\partial y} \left( \frac { \partial f }{ \partial x} \right).

于是Hessian是对称矩阵。



猜你喜欢

转载自blog.csdn.net/DSbatigol/article/details/12558891
今日推荐