769 个字词
4 分钟
Jacobian and Gradients
首次发布: 2025-06-15
... 次访问

本文是对张量微分的一些思考。先从一个定理开始引入本文的内容。

总微分(Jacobian 存在性) 定理#

f:Rn    Rmf:\R^n\;\longrightarrow\;\R^m

在点 xRnx\in\R^n 可微(即在该点存在良好的线性近似)。那么有:

  1. 存在唯一的线性映射

    Df(x)   ⁣:  Rn    RmDf(x)\;\colon\;\R^n\;\to\;\R^m

    使得当增量 h0h\to0 时,

    f(x+h)  =  f(x)  +  Df(x)h  +  o(h).f(x+h)\;=\;f(x)\;+\;Df(x)\,h\;+\;o(\|h\|).

    注: Df(x)Df(x) 在这里表示一个映射,其中输入变量是 hRnh \in \mathbb{R}^n,输出变量是 Df(x)hRmDf(x)h \in \mathbb{R}^m

  2. 在标准基下的矩阵表示——Jacobian

    如果把 Df(x)Df(x) 在输入输出的标准基下写成矩阵形式,那么它就是我们常说的 Jacobian 矩阵

    Jf(x)=[f1x1f1xnfmx1fmxn]    Rm×n.J_f(x) =\begin{bmatrix} \dfrac{\partial f_1}{\partial x_1} & \cdots & \dfrac{\partial f_1}{\partial x_n} \\[6pt] \vdots & \ddots & \vdots \\[6pt] \dfrac{\partial f_m}{\partial x_1} & \cdots & \dfrac{\partial f_m}{\partial x_n} \end{bmatrix} \;\in\;\R^{m\times n}.

    也就是说, f(x)=[f1(x),,fm(x)]T,x=[x1,,xn]Tf(x)=[f_1(x),\dots,f_m(x)]^T, \quad x=[x_1,\dots,x_n]^T ,导数的“维度”就是 输出维度m×输入维度 n\text{输出维度} m\times \text{输入维度} n —— 恰好能把输入的方向向量 hRnh\in\R^n 映射到输出的增量 ΔfRm\Delta f\in\R^m

高阶张量的导数#

总微分定理可以推广到高阶张量上。设 XRa1×a2××anX \in \mathbb{R}^{a_1\times a_2\times \cdots\times a_n} 是一个 nn 阶张量,YRb1×b2××bmY \in \mathbb{R}^{b_1\times b_2\times \cdots\times b_m} 是一个 mm 阶张量。

根据张量导数的本质是描述了张量 XX 的每一个元素对张量 YY 的每一个元素的标量导数的特殊张量排列,可以得到张量 XX 对张量 YY 的导数是一个 (m+n)(m+n) 阶张量,记为

YXRb1×b2××bm×a1×a2××an\frac{\partial Y}{\partial X} \in \mathbb{R}^{ b_1\times b_2\times \cdots\times b_m \times a_1\times a_2\times \cdots \times a_n}

具体到某对元素之间的导数元素可以表示为

(YX)j1jm,i1in=Yj1jmXi1in\left(\frac{\partial Y}{\partial X}\right)_{j_1 \cdots j_m, i_1 \cdots i_n} = \frac{\partial Y_{j_1 \cdots j_m}}{\partial X_{i_1 \cdots i_n}}

高阶张量的总微分定理#

我们把张量 XX 和 张量 YY 分别向量化重排列,得到 vec(X)Ra1a2an\text{vec}(X) \in \mathbb{R}^{a_1 a_2 \cdots a_n}vec(Y)Rb1b2bm\text{vec}(Y) \in \mathbb{R}^{b_1 b_2\cdots b_m},此时应用向量的总微分定理即可得到对应的高阶张量的总微分定理,以及对应的导数的 Jacobian 矩阵形式

JY(X)=[vec(Y)1vec(X)1vec(Y)1vec(X)2vec(Y)1vec(X)a1a2anvec(Y)2vec(X)1vec(Y)2vec(X)2vec(Y)2vec(X)a1a2anvec(Y)b1b2bmvec(X)1vec(Y)b1b2bmvec(X)2vec(Y)b1b2bmvec(X)a1a2an]J_Y(X) = \begin{bmatrix} \frac{\partial \text{vec}(Y)_1}{\partial \text{vec}(X)_1} & \frac{\partial \text{vec}(Y)_1}{\partial \text{vec}(X)_2} & \cdots & \frac{\partial \text{vec}(Y)_1}{\partial \text{vec}(X)_{a_1 a_2 \cdots a_n}} \\[6pt] \frac{\partial \text{vec}(Y)_2}{\partial \text{vec}(X)_1} & \frac{\partial \text{vec}(Y)_2}{\partial \text{vec}(X)_2} & \cdots & \frac{\partial \text{vec}(Y)_2}{\partial \text{vec}(X)_{a_1 a_2 \cdots a_n}} \\[6pt] \vdots & \vdots & \ddots & \vdots \\[6pt] \frac{\partial \text{vec}(Y)_{b_1 b_2 \cdots b_m}}{\partial \text{vec}(X)_1} & \frac{\partial \text{vec}(Y)_{b_1 b_2 \cdots b_m}}{\partial \text{vec}(X)_2} & \cdots & \frac{\partial \text{vec}(Y)_{b_1 b_2 \cdots b_m}}{\partial \text{vec}(X)_{a_1 a_2 \cdots a_n}} \end{bmatrix}

其中 JY(X)R(b1b2bm)×(a1a2an)J_Y(X) \in \mathbb{R}^{(b_1 b_2 \cdots b_m)\times (a_1 a_2 \cdots a_n)}

总微分表达式#

根据总微分定理,当张量 XX 发生微小变化 dXdX 时,张量 YY 的变化为:

dvec(Y)=JY(X)dvec(X)d\text{vec}(Y) = J_Y(X) \cdot d\text{vec}(X)

重新整形回张量形式:

dY=reshape(JY(X)vec(dX))dY = \text{reshape}\left(J_Y(X) \cdot \text{vec}(dX)\right)

换句话说,高阶张量的导数既可以表达成 (m+n)(m+n) 阶张量的形式,也可以表达成一个二阶展开矩阵的形式。这两种形式的表达都是很自然的。

  • 二阶矩阵的自然在于行和列分别对应因变量和自变量
  • (m+n)(m+n) 阶张量的自然则是在于本质上的自然排布所形成的

两种表达形式是等价的, (m+n)(m+n) 阶张量形式与 Jacobian 矩阵形式的关系为

JY(X)=reshape(YX)J_Y(X) = \text{reshape}\left(\frac{\partial Y}{\partial X}\right)

其中 reshape 操作将 (m+n)(m+n) 阶张量重新排列为矩阵形式。

Jacobian and Gradients
https://adalovelemon.github.io/blog/posts/content/coursenotes/mathslab/jacobiangrad/
Author
Ada Lovelemon
Published at
2025-06-15

留言板