理解Jacobian和Hessian

理解Jacobian和Hessian

最近上课用到Jacobian,老师随口说了句:我们对这已经很熟悉了。想想其实并不然,本科时时学 Jacobian老师基本没细讲,只是让我们“背”住Jacobian公式,随后一系列练习题逐渐的对Jacobian越来“熟悉”,但只要深入一点点,就不知所云了。因此找了些资料重新理解一遍,整理笔记如下。

文章结构如下:

1. 仿射变换(affine transformation)

2. Jacobian 矩阵与行列式

  • 2.1 Jacobian 矩阵
  • 2.2 Jacobian 行列式
  • 2.2.1 线性变换将面积伸缩
  • 2.2.2 Jacobian 行列式意义
  • 2.2.3 Jacobian 行列式用途

3. Jacobian 与 Hessian


1. 仿射变换(affine transformation)

A 为一 n\times n 阶实矩阵, \mathbf{b}n 维向量,定义于几何空间 \mathbb{R}^{n} 的仿射变换具有下列形式:

T(\mathbf{x})=A\mathbf{x}+\mathbf{b}\\

也就是说,仿射变换由一线性变换加上一平移量构成。因为 T(\mathbf{0})=\mathbf{b} 。除非平移量 \mathbf{b} 为零,仿射变换才是线性变换。仿射变换有两个特殊的性质:共线(collinearity)不变性和比例不变性,意思是 \mathbb{R}^{n} 的任一直线经仿射变换的像(image)仍是一直线,而且直线上各点之间的距离比例维持不变。

证明:

L\mathbb{R}^{n} 中任一直线,其表达式为 L=\{t\mathbf{v}+\mathbf{u}|t\in \mathbb{R}\} ,向量 \mathbf{v}\neq \mathbf{0} 代表直线指向, \mathbf{u} 是直线上一点。令 \mathbf{p}_1,\mathbf{p}_2,\mathbf{p}_3 为直线 L 上的三个相异点,也就是 \mathbf{p}_i=t_i\mathbf{v}+\mathbf{u},i=1,2,3 ,此三点经仿射变换 T(\mathbf{x})=A\mathbf{x}+\mathbf{b} 后的新位置分别为:

\begin{eqnarray}\mathbf{p}'_i&=&T(\mathbf{p}_i)\\ &=&A(t_i \mathbf{v}+\mathbf{u})+\mathbf{b}\\ &=&t_i A\mathbf{v}+A\mathbf{u}+\mathbf{b},i=1,2,3\end{eqnarray}\\

\mathbf{v}'=A\mathbf{v},\mathbf{u}'=A\mathbf{u}+\mathbf{b} ,新的位置可以表示成 \mathbf{p}'_i=t_i\mathbf{v}'+\mathbf{u}' ,所以三个点经过仿射变换后仍在同一条直线 L'=\{t\mathbf{v}'+\mathbf{u}'|t\in \mathbb{R}\} 。下面计算三点之间的距离比例:

\frac{\left \|\mathbf{p}'_2-\mathbf{p}'_1\right \|}{\left \|\mathbf{p}'_3-\mathbf{p}'_2\right \|}=\frac{\left \|(t_2-t_1)\mathbf{v}'\right \|}{\left \|(t_3-t_2)\mathbf{v}'\right \|}=\frac{\left \|(t_2-t_1)\mathbf{v}\right \|}{\left \|(t_3-t_2)\mathbf{v}\right \|}=\frac{\left \|\mathbf{p}_2-\mathbf{p}_1\right \|}{\left \|\mathbf{p}_3-\mathbf{p}_2\right \|}\\

证毕。


2. Jacobian 矩阵与行列式

假设 F:\mathbb{R}^{n}\rightarrow \mathbb{R}^{m} 是这样的一个函数,对于 n 维实向量 \mathbf{x}=(x_1,x_2,\cdots,x_n)^{T},F(\mathbf{x}) 具有下列形式:

F(\mathbf{x})=\begin{bmatrix} f_1(x_1,\cdots,x_n)\\ \vdots \\ f_m(x_1,\cdots,x_n) \end{bmatrix}\\

其中 f_j:D\rightarrow\mathbb{R},D\subseteq\mathbb{R}^nF 的定义域。如果向量函数 F 的数学形式相当的复杂,一般可以用线性化进行简化。对于单变量函数 f(x) ,在 x=p 附近我们可以用直线 y=ax+b ,近似 f(x) 。推理至多变量,令 T:\mathbb{R}^n\rightarrow \mathbb{R}^m 为一个仿射变换,表示如下:

T(\mathbf{x})=A\mathbf{x}+\mathbf{b}\\

其中 A 为一个 m\times n 阶实矩阵, \mathbf{b}\in\mathbb{R}^m 。下面解释如何以仿射变化 T 近似向量函数 F ,由此衍生出 F 的导数矩阵,即Jacobian矩阵。


2.1 Jacobian 矩阵

我们的目标是在 p\in D 的附近范围使用形式简单的仿射变换 T(\mathbf{x})=A\mathbf{x}+\mathbf{b} 近似 F(\mathbf{x}) ,因此在 \mathbf{p} 点,我们有 T(\mathbf{p})=F(\mathbf{p}) 。因为 T(\mathbf{x})=A\mathbf{x}+\mathbf{b} ,又有 F(\mathbf{p})=A\mathbf{p}+\mathbf{b}\mathbf{b}=F(\mathbf{p})-A\mathbf{p} ,所以

T(\mathbf{x})=A(\mathbf{x}-\mathbf{p})+F(\mathbf{p})\\

接着要找出 A 使得仿射变换 T\mathbf{p} 点附近最近似于 F 。自然地,当 \mathbf{x} \rightarrow \mathbf{p} ,符合最近似条件的 T 应使误差 F(\mathbf{x})-T(\mathbf{x}) 更快的趋于 \mathbf{0} (零向量)。若存在一个 m\times n 阶实矩阵 A 使得

\underset{\mathbf{x} \rightarrow \mathbf{p}}{lim}\frac{F(\mathbf{x})-F(\mathbf{p})-A(\mathbf{x}-\mathbf{p})}{\left \| \mathbf{x}-\mathbf{p}\right \|}=\mathbf{0}\\

我们说 F:\mathbb{R}^{n}\rightarrow \mathbb{R}^{m}\mathbf{p} 可导(differentiable)。为了让 \mathbf{x} 从任意方向逼近 \mathbf{p} ,我们另要求 \mathbf{p} 是定义域 D 的一个内点(interior point),意思是 \mathbf{p} 的附近点都属于 D

下面证明若向量函数 F\mathbf{p} 点可导,则 A\mathbf{p} 唯一决定。考虑 \mathbb{R}^{n} 的标准基底 \{\mathbf{e}_1,\cdots,\mathbf{e}_2\} ,其中 \mathbf{e}_jj 元素为1,其余为0。设 h 为一极小数使得 \mathbf{p}+h\mathbf{e}_j,j=1,\cdots,n ,属于定义域 D 。如果 F\mathbf{p} 可导,就有

\underset{h \rightarrow 0}{lim}\frac{F(\mathbf{p}+h\mathbf{e}_j)-F(\mathbf{p})-A(h\mathbf{e}_j)}{h}=\mathbf{0},j=1,\cdots,n\\

因为 A(h\mathbf{e}_j)=h(A\mathbf{e}_j) ,可知:

\underset{h \rightarrow 0}{lim}\frac{F(\mathbf{p}+h\mathbf{e}_j)-F(\mathbf{p})}{h}=A\mathbf{e}_j\\

上式等号左边即为偏导数

\frac{\partial F}{\partial x_j}(\mathbf{p})=\begin{bmatrix} \frac{\partial f_1}{\partial x_j}(\mathbf{p})\\ \frac{\partial f_2}{\partial x_j}(\mathbf{p})\\ \vdots \\ \frac{\partial f_m}{\partial x_j}(\mathbf{p}) \end{bmatrix}\\

等号右边等于矩阵 A 的第 j 列,故:

A=\begin{bmatrix} \frac{\partial f_{1}}{\partial x_{1}}(\mathbf{p}) & \frac{\partial f_{1}}{\partial x_{2}}(\mathbf{p}) &\cdots & \frac{\partial f_{1}}{\partial x_{n}} (\mathbf{p})\\ \frac{\partial f_{2}}{\partial x_{1}}(\mathbf{p}) & \frac{\partial f_{2}}{\partial x_{2}}(\mathbf{p})&\cdots & \frac{\partial f_{2}}{\partial x_{n}}(\mathbf{p}) \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f_{m}}{\partial x_{1}} (\mathbf{p}) &\frac{\partial f_{m}}{\partial x_{2}}(\mathbf{p})&\cdots &\frac{\partial f_{m}}{\partial x_{n}} (\mathbf{p}) \end{bmatrix}\\

这个 m\times n 阶实举证称为向量函数 F\mathbf{p} 的Jacobian矩阵或导数矩阵(derivative matrix),记为 J(\mathbf{p}) 。因此,可导函数 F\mathbf{p} 的最佳仿射近似是

T(\mathbf{x})=F(\mathbf{p})+J(\mathbf{p})(\mathbf{x}-\mathbf{p})\\

\mathbf{h}=\mathbf{x}-\mathbf{p} ,则 F(\mathbf{x})=F(\mathbf{p}+\mathbf{h}) 的泰勒展开式为:

F(\mathbf{p}+\mathbf{h})=F(\mathbf{p})+J(\mathbf{p})\mathbf{h}+o(\left \| \mathbf{h}\right \|)^2\\

因为 T(\mathbf{p})=F(\mathbf{p})

T(\mathbf{x})-T(\mathbf{p})=J(\mathbf{p})(\mathbf{x}-\mathbf{p})\\

上式指出仿射变换的改变量 T(\mathbf{x})-T(\mathbf{p}) 是自变量的改变量 \mathbf{x}-\mathbf{p} 的线性函数。Jacobian矩阵 J(\mathbf{p}) 即为线性变换矩阵。直白的说,当我们将非线性函数给予线性转换时,Jacobian矩阵就是描述该线性关系的矩阵。

举个例子:极坐标与卡氏坐标的转换:

\begin{bmatrix}r~cos\theta\\ r~sin\theta\end{bmatrix}=\begin{bmatrix}X(r,\theta)\\ Y(r,\theta)\end{bmatrix}=\begin{bmatrix}x\\ y\end{bmatrix}\\

其中 r\geqslant 0,0\leqslant \theta \leqslant \pi/2

Jacobian矩阵计算如下:

J(r,\theta)=\begin{bmatrix} \frac{\partial x}{\partial r} &\frac{\partial x}{\partial \theta} \\ \frac{\partial y}{\partial r} & \frac{\partial y}{\partial \theta} \end{bmatrix}=\begin{bmatrix} \frac{\partial r~cos\theta}{\partial r} &\frac{\partial r~cos\theta}{\partial \theta} \\ \frac{\partial r~sin\theta}{\partial r} & \frac{\partial r~sin\theta}{\partial \theta} \end{bmatrix}=\begin{bmatrix} cos\theta&-rsin\theta \\ sin\theta & rcos\theta \end{bmatrix}\\

\mathbf{u}(t)=\begin{bmatrix} r(t)\\ \theta(t) \end{bmatrix} 是极坐标平面上的一条曲线, \mathbf{x}(t)=\begin{bmatrix} x(t)\\ y(t) \end{bmatrix} 是卡式坐标平面的映射曲线,使用链式法则(chain rule), \frac{\mathrm{d} \mathbf{x}}{\mathrm{d} t}\frac{\mathrm{d}\mathbf{u}}{\mathrm{d} t} 具有下列关系:

\frac{\mathrm{d} \mathbf{x}}{\mathrm{d} t}=\begin{bmatrix} \frac{\mathrm{d} x}{\mathrm{d} t}\\ \frac{\mathrm{d} y}{\mathrm{d} t} \end{bmatrix}=\begin{bmatrix} \frac{\partial x}{\partial r}\frac{\mathrm{d} r}{\mathrm{d} t}+\frac{\partial x}{\partial \theta}\frac{\mathrm{d} \theta}{\mathrm{d} t}\\ \frac{\partial y}{\partial r}\frac{\mathrm{d} r}{\mathrm{d} t}+\frac{\partial y}{\partial \theta}\frac{\mathrm{d} \theta}{\mathrm{d} t} \end{bmatrix}=\begin{bmatrix} \frac{\partial x}{\partial r} & \frac{\partial x}{\partial \theta}\\ \frac{\partial y}{\partial r} & \frac{\partial y}{\partial \theta} \end{bmatrix}\begin{bmatrix} \frac{\mathrm{d} r}{\mathrm{d} t}\\ \frac{\mathrm{d} \theta}{\mathrm{d} t} \end{bmatrix}=J(r,\theta)\frac{\mathrm{d}\mathbf{u}}{\mathrm{d} t}\\

从几何上说,Jacobian矩阵将极坐标平面的切向量映至卡式坐标平面的切向量。


2.2 Jacobian 行列式

  • 2.2.1 线性变换将面积伸缩

考虑从 \mathbb{R}^2 映射至 \mathbb{R}^2 的线性变换:

T(x,y)=\begin{bmatrix}4x-2y\\ 2x+3y\end{bmatrix}\\

设区域 S_1=\{(x,y)|0\leqslant x,y\leqslant 1\} ,且 T(S_1) 代表 S_1 中所有点经 T 映射后的集合,求 T(S_1) 的面积。

因为单位正方形可直接用两边 \mathbf{e}_1=\begin{bmatrix}1\\ 0\end{bmatrix}\mathbf{e}_2=\begin{bmatrix}0\\ 1\end{bmatrix} 表示,即
S_1=\{x\mathbf{e}_1+y\mathbf{e}_2|0\leqslant x,y\leqslant 1\}\\

A 为线性变换 T 参考标准基底的表示矩阵,就有 T(\mathbf{v})=A\mathbf{v} ,其中 A=[\mathbf{a}_1,\mathbf{a}_2] ,上例中 A=\begin{bmatrix} 4 &-2 \\ 2 &3 \end{bmatrix} 。算出 x\mathbf{e}_1+y\mathbf{e}_2 经过 T 映射的像如下:

T(x\mathbf{e}_1+y\mathbf{e}_2)=A(x\mathbf{e}_1+y\mathbf{e}_2)=xA\mathbf{e}_1+yA\mathbf{e}_2=x\mathbf{a}_1+y\mathbf{a}_2\\

也就有:

T(S_1)=\{x\mathbf{a}_1+y\mathbf{a}_2|0\leqslant x,y\leqslant 1\}\\

这表明 T(S_1) 其实就是 A 的列向量 \mathbf{a}_1\mathbf{a}_2 所表示的平行四边形。二阶矩阵 A 的行列式绝对值为 \mathbf{a}_1\mathbf{a}_2 所形成的平行四边形的面积,故 \upsilon (T(S_1))=\left |det A \right | ,这里 \upsilon (T(S_1)) 表示 T(S_1) 的面积。

我们推广一下,考虑 S_2 为二维向量 \mathbf{b}_1\mathbf{b}_2 所形成的平行四边形,以同样的方式可得:

T(x\mathbf{b}_1+y\mathbf{b}_2)=A(x\mathbf{b}_1+y\mathbf{b}_2)=xA\mathbf{b}_1+yA\mathbf{b}_2\\

因此 T(S_2) 其实为向量 A\mathbf{b}_1A\mathbf{b}_2 所表示的平行四边形。设 B=[\mathbf{b}_1,\mathbf{b}_2]T(S_2) 等于矩阵相乘 AB=[A\mathbf{b}_1,A\mathbf{b}_2] 的两边所形成的平行四边形,可得:

\upsilon (T(S_2))=\left |det (AB) \right |=\left |det A \right |\left |det B \right |\\

其中 \left |det B \right | 等于平行四边形 S_2 的面积,可得到:

\upsilon (T(S_2))=\left |det A \right |\upsilon (S_2)\\

这个结果表明平行四边形 S_2 经线性变换 T (参考标准基底的矩阵表示为 A ),面积伸缩了 \left |det A \right | 倍。

如果平行四边形 S_2 在平面上移动,前述的结果依然成立吗?考虑

S_3=\{x\mathbf{b}_1+y\mathbf{b}_2+\mathbf{p}|0\leqslant x,y\leqslant 1\}\\

其中 \mathbf{p} 代表平移向量。计算 S_3 各点经过映射的像:

T(x\mathbf{b}_1+y\mathbf{b}_2+\mathbf{p})=A(x\mathbf{b}_1+y\mathbf{b}_2+\mathbf{p})=xA\mathbf{b}_1+yA\mathbf{b}_2+A\mathbf{p}\\

因此可以得到 T(S_3)=T(S_2)+A\mathbf{p} ,平移量 A\mathbf{p} 并不会改变面积的大小,故任然有 \upsilon (T(S_3))=\left |det A \right |\upsilon (S_2)


  • 2.2.2 Jacobian 行列式意义

F:\mathbb{R}^{n}\rightarrow \mathbb{R}^{n} 是可导函数,则Jacobian是一个 n\times n 阶矩阵,因此可计算行列式。为方便说明,设 n=2 ,向量函数 F\mathbf{u}=\begin{bmatrix}u\\ \upsilon \end{bmatrix} 映射至 \mathbf{x}=\begin{bmatrix}x\\ y \end{bmatrix} ,则 F 的Jacobian行列式为:

det ~J(u,\upsilon )=\begin{vmatrix} \frac{\partial x}{\partial u} &\frac{\partial x}{\partial \upsilon } \\ \frac{\partial y}{\partial u} &\frac{\partial y}{\partial \upsilon } \end{vmatrix}=\frac{\partial x}{\partial u}\frac{\partial y}{\partial \upsilon } -\frac{\partial x}{\partial \upsilon }\frac{\partial y}{\partial u}\\

R 表示 \begin{bmatrix}du\\ 0\end{bmatrix}\begin{bmatrix}0\\ d\upsilon\end{bmatrix} 表示长方形,其中 dud\upsilon 都是微小的量。若 dud\upsilon 足够接近0,则 F(R)=\{F(\mathbf{u})|\mathbf{u}\in R\} 近似如下面向量所形成的平行四边形:

J(u,\upsilon )\begin{bmatrix}du\\ 0\end{bmatrix}=\begin{bmatrix}\frac{\partial x}{\partial u} & \frac{\partial x}{\partial \upsilon }\\ \frac{\partial y}{\partial u} & \frac{\partial y}{\partial \upsilon }\end{bmatrix}\begin{bmatrix}du\\ 0\end{bmatrix}=\begin{bmatrix}\frac{\partial x}{\partial u}du\\ \frac{\partial y}{\partial u}du\end{bmatrix}\\

J(u,\upsilon )\begin{bmatrix}0\\ d\upsilon\end{bmatrix}=\begin{bmatrix}\frac{\partial x}{\partial u} & \frac{\partial x}{\partial \upsilon }\\ \frac{\partial y}{\partial u} & \frac{\partial y}{\partial \upsilon }\end{bmatrix}\begin{bmatrix}0\\ d\upsilon\end{bmatrix}=\begin{bmatrix}\frac{\partial x}{\partial \upsilon}d\upsilon\\ \frac{\partial y}{\partial \upsilon}d\upsilon\end{bmatrix}\\

dA 代表平行四边形 F(R) 的面积。因为二阶行列式的行向量所形成的平行四边形面积等于行列式的绝对值。

dA=\left | det\begin{bmatrix}\frac{\partial x}{\partial u}du &\frac{\partial x}{\partial \upsilon }d\upsilon \\ \frac{\partial y}{\partial u}du & \frac{\partial y}{\partial \upsilon }d\upsilon \end{bmatrix} \right |=\left | det\begin{bmatrix}\frac{\partial x}{\partial u} &\frac{\partial x}{\partial \upsilon } \\ \frac{\partial y}{\partial u} &\frac{\partial y}{\partial \upsilon } \end{bmatrix} \right |dud\upsilon =\left | det~J(u,\upsilon ) \right |dud\upsilon \\

所以,微小区域 R 经向量函数 F 映射至 F(R) ,其面积伸缩了 \left | det~J(u,\upsilon ) \right | 倍。


  • 2.2.3 Jacobian 行列式用途

Jacobian行列式最主要的应用在多重积分的换元积分法(integration by substitution)。令 f:\mathbb{R}^2\rightarrow \mathbb{R} 为一个连续实函数,且 x=X(u,\upsilon )y=Y(u,\upsilon) 是一对一可导函数。根据上述面积变化关系,可得到下面的变换积分公式:

\int_{F(R)}f(x,y)dxdy=\int_Rf(X(u,\upsilon ),Y(u,\upsilon))\left | det~J(u,\upsilon ) \right |dud\upsilon\\


3. Jacobian 与 Hessian

f:\mathbb{R}^n \rightarrow \mathbb{R} 为二次可导函数, \mathbf{x}=(x_1,\cdots,x_n)^T\in \mathbb{R}^n,n\times n 阶实对称矩阵 H(\mathbf{x})=[h_{ij}(\mathbf{x})] 称为 f 的Hessian。定义入下:

H(\mathbf{x})=\begin{bmatrix} \frac{\partial^2 f}{\partial x_1\partial x_1} & \frac{\partial^2 f}{\partial x_1\partial x_2} &\cdots &\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\partial x_2} &\cdots &\frac{\partial^2 f}{\partial x_2\partial x_n} \\ \vdots & \vdots &\ddots &\vdots \\ \frac{\partial^2 f}{\partial x_n\partial x_1} & \frac{\partial^2 f}{\partial x_n\partial x_2} &\cdots &\frac{\partial^2 f}{\partial x_n\partial x_n} \\ \end{bmatrix}\\

f 关于 \mathbf {x} 的梯度(gradient) \triangledown f(\mathbf{x}) 定义为一个 n 维向量,其中第 i 个元素是 fx_i 的一次偏导数,即:

\triangledown f(\mathbf{x})=\begin{bmatrix}\frac{\partial f}{\partial x_1}\\ \frac{\partial f}{\partial x_2}\\\vdots \\ \frac{\partial f}{\partial x_n}\\\end{bmatrix}\\

梯度 \triangledown f:\mathbb{R}^n \rightarrow \mathbb{R}^n 是一个向量函数, \triangledown f 的Jacobian矩阵如下:

J(\mathbf{x})=\begin{bmatrix} \frac{\partial }{\partial x_1}(\frac{\partial f}{\partial x_1}) &\frac{\partial }{\partial x_2}(\frac{\partial f}{\partial x_1}) & \cdots &\frac{\partial }{\partial x_n}(\frac{\partial f}{\partial x_1}) \\ \frac{\partial }{\partial x_1}(\frac{\partial f}{\partial x_2}) &\frac{\partial }{\partial x_2}(\frac{\partial f}{\partial x_2}) & \cdots &\frac{\partial }{\partial x_n}(\frac{\partial f}{\partial x_2}) \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial }{\partial x_1}(\frac{\partial f}{\partial x_n}) &\frac{\partial }{\partial x_2}(\frac{\partial f}{\partial x_n}) & \cdots &\frac{\partial }{\partial x_n}(\frac{\partial f}{\partial x_n}) \\ \end{bmatrix}\\

因此证明梯度 \triangledown f 的Jacobian即为Hessian矩阵。


4. 参考

周志成:《线性代数》,国立交通大学出版社

youtube.com/watch?

编辑于 2018-06-18

文章被以下专栏收录