雅可比矩阵及其应用

Last updated on:a month ago

机器人学和深度学习都涉及到了雅可比行列式和雅可比矩阵,为了加深对雅可比矩阵的理解,这里做一些笔记来总结这方面的知识。

定义

在向量运算中,雅可比矩阵是一个向量函数所有变量的一阶偏微分以一定方式排列的矩阵。当该矩阵为方阵时,这个矩阵的行列式被称为雅可比行列式。Hessian matrix则是二阶偏微分以一定方式排列的矩阵。

重积分

设$\Omega$是$\pmb{R}^m$的一个开集,且$\phi:\Omega \rightarrow \phi(\Omega)$是$\Omega$到$\pmb{R}^m$的一个开集$\phi(\Omega)$上的微分同胚。在坐标系下,映射$\phi$可以写为:

$$\phi(x) = (\phi_1(x_1,…,x_m),…,\phi_m(x_1,…,x_m))$$

偏导数$$\frac{\partial \phi_i}{\partial x_j}$$在$$\Omega$$上连续。以$$Jac_{\phi (x)} = (\frac{\partial \phi_i}{\partial x_j}(x)){1\le i,j \le m}$$为$$\phi$$在点$$x$$的雅可比矩阵。定义$$\phi$$在$$x$$的雅可比$$J\phi (x)$$为$$Jac_\phi (x)$$的行列式;$$\phi$$为微分同胚意味着$$Jac_\phi (x)$$可逆,从而$$J_\phi (x)\neq 0, x\in\Omega$$。

矩阵微分

$1\times m$行向量偏导算子记为

$$D_\pmb{x} = \frac{\partial}{\partial \pmb{x}^T} = [\frac{\partial}{\partial x_1},…,\frac{\partial}{\partial x_m}]$$

于是,实值函数$$f(\pmb{x})$$在$$\pmb{x}$$的偏导向量由1xm行向量

$$D_\pmb{x} f\pmb{x} = \frac{\partial f\pmb{x}}{\partial \pmb{x}^T} = [\frac{\partial f\pmb{x}}{\partial x_1},…,\frac{\partial f\pmb{x}}{\partial x_m}]$$

给出。

当实值标量函数$$f(\pmb{X})$$的变元为实值矩阵$$\pmb{X}\in R^{m\times n}$$时,存在两种可能的定义。

事实上,实际应用中Jacobian矩阵比行偏导向量更有用。

采用列向量形式定义的偏导算子称为列向量偏导算子,习惯称为梯度算子。

$m\times 1$列向量偏导算子即梯度算子记作$$\nabla_\pmb{x}$$,定义为

$$\nabla_\pmb{x} = \frac{\partial}{\partial \pmb{x}} = [\frac{\partial}{\partial x_1},…,\frac{\partial}{\partial x_m}]^T$$

因此,实值标量函数$$f(\pmb{x})$$的梯度向量$$\nabla_f\pmb{x}$$为$m\times 1$列向量,定义为

$$\nabla_\pmb{x} f\pmb{x} = \frac{\partial f\pmb{x}}{\partial \pmb{x}} = [\frac{\partial f\pmb{x}}{\partial x_1},…,\frac{\partial f\pmb{x}}{\partial x_m}]^T$$

即是说,实值标量函数$f(\pmb{X})$的梯度矩阵等于Jacobian matrix的转置。

其他定义

假设$$\pmb{f}: ℝ^n \rightarrow ℝm$$的一阶偏导数都在$ℝn$内,然后这个函数以$\pmb{x} \in ℝ^n$作为输入,然后输出为$\pmb{f}(\pmb(x))$。那么函数$\pmb{f}$的雅可比矩阵就为$m\times n$阶的,用$\pmb{J}$表示,则$\pmb{J}_{ij} = \frac{\partial f_i}{\partial x_j}$,或者

$$\pmb {J} ={\begin{bmatrix}{\dfrac {\partial \pmb {f} }{\partial x_{1}}}&\cdots &{\dfrac {\partial \pmb {f} }{\partial x_{n}}}\end{bmatrix}}={\begin{bmatrix}\nabla ^{\mathrm {T} }f_{1}\\vdots \\nabla ^{\mathrm {T} }f_{m}\end{bmatrix}}={\begin{bmatrix}{\dfrac {\partial f_{1}}{\partial x_{1}}}&\cdots &{\dfrac {\partial f_{1}}{\partial x_{n}}}\\vdots &\ddots &\vdots \{\dfrac {\partial f_{m}}{\partial x_{1}}}&\cdots &{\dfrac {\partial f_{m}}{\partial x_{n}}}\end{bmatrix}}$$

其中,$\nabla ^{\mathrm {T} }f_{i}$是$i$的梯度的转置,是行向量。

应用

对一个$n$阶非线性方程$\pmb{f}(\pmb{x}) = 0$求解,或者减少平方和$\sum_{i=1}^m [f_i(\pmb{x})]^2$。这两类问题都需要对雅可比矩阵$$\pmb(J) = {\frac{\partial f_i}{\partial x_j}}$$进行计算或估计。一种简单的估计$\pmb(J) $的方法就是使用微分的定义:

$${\frac{\partial f_i}{\partial x_j}} = \frac{f_i (\pmb(x)+he_j)-f_i (\pmb(x))}{h}$$

另外,由于机器人学中矩阵系数方程跟速度和角速度有关,所以雅可比矩阵可以用来求解逆运动学问题(对线位移、角位移的一阶偏微分方程)。

参考资料

[1] Jacobian matrix and determinant

[2] 皮埃尔·科尔梅,分析与代数原理(及数论):第二版,第二卷,高等教育出版社,p317-318(重积分)

[3] 张贤达,矩阵分析与应用:第2版,清华大学出版社,p143-161(矩阵微分)

[4] Waldron, K.J., Wang, S.L. and Bolin, S.J., 1985. A study of the Jacobian matrix of serial manipulators.