“雅可比行列式”本质上是在回答一个很朴素的问题:
一个非线性变换,在某个点附近,会把一小块空间的面积/体积放大多少倍?
它就是这个“局部体积缩放倍数”。
先区分两个容易混的东西:
- 雅可比矩阵 Jacobian matrix:描述各个输出对各个输入的局部变化率。
- 雅可比行列式 Jacobian determinant:雅可比矩阵的行列式,描述局部面积/体积缩放比例。
假设有二维变换
\begin{cases} u=f(x,y)\\ v=g(x,y) \end{cases}雅可比矩阵是
J= \frac{\partial(u,v)}{\partial(x,y)} = \begin{bmatrix} \frac{\partial u}{\partial x} & \frac{\partial u}{\partial y}\\ \frac{\partial v}{\partial x} & \frac{\partial v}{\partial y} \end{bmatrix}而所谓“雅可比行列式”,就是
\det J.
1. 为什么一个“行列式”能表示面积变化?
先看一个最简单的线性变换:
\begin{bmatrix} u\\v \end{bmatrix} = \begin{bmatrix} 2&0\\ 0&3 \end{bmatrix} \begin{bmatrix} x\\y \end{bmatrix}.也就是
u=2x,\qquad v=3y.原来一个 1\times 1 的小正方形:
\text{面积}=1经过变换后,横向变成 2 倍,纵向变成 3 倍:
\text{面积}=2\times3=6.矩阵行列式恰好是
\det \begin{bmatrix} 2&0\\ 0&3 \end{bmatrix} =6.所以
|\det J|=6就是:
局部面积被放大了 6 倍。
三维也是一样:
|\det J|表示局部体积变化倍数。
2. 但非线性变换怎么办?
比如
u=x^2,\qquad v=y.这个变换不是线性的。
不同位置,横向缩放程度不一样。
因为
\frac{\partial u}{\partial x}=2x.所以雅可比矩阵
J= \begin{bmatrix} 2x&0\\ 0&1 \end{bmatrix}于是
\det J=2x.这意味着:
- 在 x=1 附近,面积约放大 2 倍;
- 在 x=5 附近,面积约放大 10 倍;
- 在 x=0.1 附近,面积约缩小到 0.2 倍。
关键就在“附近”。
虽然整体变换是非线性的,但只要把区域看得足够小,在某一点附近就近似是线性的:
\Delta \mathbf y \approx J(\mathbf x)\Delta \mathbf x.所以雅可比矩阵可以理解成:
非线性函数在某个点的局部线性变换矩阵。
而它的行列式自然就是这个局部线性变换的体积缩放比例。
3. 一个特别经典的例子:极坐标
肯定见过:
x=r\cos\theta,\qquad y=r\sin\theta.为什么极坐标积分里面总有一个莫名其妙的 r:
dx\,dy=r\,dr\,d\theta?
这个 r 就是雅可比行列式来的。
计算 Jacobian:
J= \frac{\partial(x,y)}{\partial(r,\theta)} = \begin{bmatrix} \cos\theta & -r\sin\theta\\ \sin\theta & r\cos\theta \end{bmatrix}.行列式:
\det J = r\cos^2\theta+r\sin^2\theta =r.于是
dx\,dy = |\det J|\,dr\,d\theta = r\,dr\,d\theta.这个结果其实非常直观。
在极坐标中取一个小方块:
dr\times d\theta.它映射到笛卡尔坐标中并不是一个真正的矩形,而是一个小扇环。
径向长度:
dr圆周方向长度大约是:
r\,d\theta.因此面积:
dA \approx dr\cdot r\,d\theta = r\,dr\,d\theta.所以这个 r 本质上就是:
从 (r,\theta) 空间变到 (x,y) 空间时,面积发生的局部伸缩。
4. 为什么概率论里它特别重要?
这可能也是最近频繁遇到它的原因。
假设随机变量
X经过变换得到
Y=f(X).概率本身不能凭空增加或减少。
例如一维:
y=2x.假设 X 在区间
[0,1]均匀分布,那么 Y 就在
[0,2]上。
空间长度扩大了 2 倍,因此概率密度必须降低到原来的 1/2:
p_Y(y)=\frac12 p_X(x).这个 1/2 就来自 Jacobian:
\frac{dx}{dy}=\frac12.所以概率密度变换公式:
p_Y(y) = p_X(x) \left| \frac{dx}{dy} \right|.多维情况下变成
\boxed{ p_Y(\mathbf y) = p_X(\mathbf x) \left| \det \frac{\partial\mathbf x} {\partial\mathbf y} \right| }或者写成正向变换
\boxed{ p_Y(\mathbf y) = \frac{ p_X(\mathbf x) }{ \left| \det \frac{\partial\mathbf y} {\partial\mathbf x} \right| } }这就是为什么在:
- 正态分布
- Normalizing Flow
- VAE
- 概率变量变换
- 坐标变换
- 积分换元
里面一直会看到 Jacobian determinant。
5. 可以把它和普通导数对应起来
其实 Jacobian 没那么神秘。
一维函数:
y=f(x)导数
\frac{dy}{dx}描述:
一小段长度 dx 被放大多少倍。
因为
dy\approx \frac{dy}{dx}dx.到了二维:
\begin{bmatrix} du\\dv \end{bmatrix} \approx J \begin{bmatrix} dx\\dy \end{bmatrix}.而面积满足
du\,dv \approx |\det J|\,dx\,dy.三维:
dV' \approx |\det J|\,dV.所以可以直接记成:
\boxed{ \text{导数} \quad\longrightarrow\quad \text{长度缩放} } \boxed{ \text{Jacobian 矩阵} \quad\longrightarrow\quad \text{各方向如何变形} } \boxed{ |\det J| \quad\longrightarrow\quad \text{体积总体缩放多少倍} }
6. Jacobian 矩阵和 Jacobian 行列式其实包含的信息量差很多
比如
J= \begin{bmatrix} 2&0\\ 0&\frac12 \end{bmatrix}.它表示:
- x 方向拉长 2 倍;
- y 方向压缩到 1/2。
但
\det J=1.因此面积完全没变:
2\times\frac12=1.所以:
Jacobian 矩阵
告诉“怎么变形”。
而:
Jacobian determinant
只告诉:
最终面积/体积总共变化多少。
它把很多方向信息压缩成了一个数字。
7. 为什么有时候行列式会是负数?
比如
u=-x,\qquad v=y.这是把图形沿 y 轴翻转。
Jacobian:
J= \begin{bmatrix} -1&0\\ 0&1 \end{bmatrix}于是:
\det J=-1.面积显然没有变,还是 1 倍。
负号表示的是:
空间的方向 orientation 被翻转了。
所以计算面积、体积、概率密度时通常取绝对值:
|\det J|.
8. 一个非常有用的几何理解
假设二维空间中有两个很小的基向量:
d\mathbf x_1= \begin{bmatrix} dx\\0 \end{bmatrix}, \qquad d\mathbf x_2= \begin{bmatrix} 0\\dy \end{bmatrix}.它们构成一个小矩形。
经过函数 f 后:
d\mathbf y_1 \approx Jd\mathbf x_1, d\mathbf y_2 \approx Jd\mathbf x_2.原来的小矩形通常会变成一个小平行四边形。
而矩阵行列式本身就是:
矩阵的列向量所张成平行四边形的有向面积。
所以
|\det J|自然就成为面积缩放比例。
这并不是一个人为规定出来的公式,而是矩阵行列式本身的几何意义。
9. 和高斯分布的联系
多维高斯:
p(x)= \frac{1} {(2\pi)^{d/2}|\Sigma|^{1/2}} \exp \left( -\frac12(x-\mu)^T\Sigma^{-1}(x-\mu) \right).里面为什么会有
|\Sigma|^{-1/2}?其实背后就是 Jacobian。
假设
Z\sim\mathcal N(0,I)然后做变换
X=\mu+LZ其中
LL^T=\Sigma.这相当于把标准正态的球:
Z拉伸成一个椭球:
X.这个线性变换的体积变化是
|\det L|.因为
\det\Sigma = \det(LL^T) = (\det L)^2,所以
|\det L| = \sqrt{|\Sigma|}.概率密度必须反向除以体积膨胀比例:
p_X(x) \propto \frac1{|\det L|} = \frac1{\sqrt{|\Sigma|}}.因此
\frac1{\sqrt{|\Sigma|}}本质上就是:
高斯从单位球被拉伸为椭球之后,为保证总概率仍然等于 1,需要用 Jacobian 修正密度。
最终可以把“雅可比行列式”压缩成一句非常值得记住的话:
\boxed{ \text{Jacobian determinant} = \text{非线性映射在某一点附近的局部体积缩放率} }而
\boxed{ J = \text{局部如何拉伸、旋转、剪切} } \boxed{ |\det J| = \text{拉伸完之后体积总体变成了多少倍} }如果从这个角度理解,积分换元、概率密度变换、多维高斯里的 |\Sigma|、Normalizing Flow 里的 log det J,其实全都是同一件事。