矩陣微積分的鏈式法則(chain rule)與標量情況一樣,用于求復合函數的導數,但由于涉及矩陣和向量的求導,維度匹配和布局約定(numerator-layout vs. denominator-layout)必須格外小心。下面給出常見的三種場景,并分別給出鏈式法則的顯式表達。
- 標量對矩陣的鏈式法則
設
- 標量函數 (L) 依賴于矩陣變量 (Y \in \mathbb{R}^{m\times n});
- 而 (Y) 又是矩陣變量 (X \in \mathbb{R}^{p\times q}) 的函數:(Y = F(X))。
則
[
\frac{\partial L}{\partial X_{ij}} = \sum_{k=1}{m}\sum_{l=1}{n} \frac{\partial L}{\partial Y_{kl}}\frac{\partial Y_{kl}}{\partial X_{ij}}.
]
寫成“向量化”形式(vec 算子按列堆疊):
[
\frac{\partial L}{\partial \operatorname{vec}(X)} = \left(\frac{\partial \operatorname{vec}(Y)}{\partial \operatorname{vec}(X)}\right)^\top \frac{\partial L}{\partial \operatorname{vec}(Y)}.
]
注意:
- 分子布局(numerator layout)下,(\frac{\partial \operatorname{vec}(Y)}{\partial \operatorname{vec}(X)}) 是 ((mn)\times(pq)) 的 Jacobian;
- 轉置的出現取決于你采用的布局約定,務必維度匹配。
- 向量對向量的鏈式法則
設
- 向量函數 (z \in \mathbb{R}^{r}) 依賴于向量 (y \in \mathbb{R}^{m});
- 而 (y) 又依賴于向量 (x \in \mathbb{R}^{n}):(y = f(x))。
則
[
\frac{\partial z}{\partial x^\top} = \frac{\partial z}{\partial y^\top} \frac{\partial y}{\partial x^\top},
]
其中
- (\frac{\partial z}{\partial y^\top}) 是 (r \times m);
- (\frac{\partial y}{\partial x^\top}) 是 (m \times n);
- 乘積給出 (r \times n) 的 Jacobian (\frac{\partial z}{\partial x^\top})。
若用分母布局(denominator layout),則寫作
[
\frac{\partial z}{\partial x} = \left(\frac{\partial y}{\partial x}\right)^\top \frac{\partial z}{\partial y}.
]
- 矩陣對矩陣的“完全鏈式法則”
當外層函數本身也是矩陣值,且內層函數也是矩陣值時,最保險的做法是向量化:
設
- (Z = G(Y)) 且 (Y = F(X)),
其中 (X \in \mathbb{R}^{p\times q}),(Y \in \mathbb{R}^{m\times n}),(Z \in \mathbb{R}^{r\times s})。
則
[
\frac{\partial \operatorname{vec}(Z)}{\partial \operatorname{vec}(X)} = \frac{\partial \operatorname{vec}(Z)}{\partial \operatorname{vec}(Y)} \frac{\partial \operatorname{vec}(Y)}{\partial \operatorname{vec}(X)}.
]
- 左側是 ((rs)\times(pq)) 的 Jacobian;
- 右側兩個因子分別是 ((rs)\times(mn)) 與 ((mn)\times(pq)),維度恰好可乘。
記憶技巧
“維度從左到右連乘”:
- 若使用分子布局,鏈式法則的 Jacobian 順序與函數復合順序相同(類比標量鏈式法則)。
- 若使用分母布局,需要轉置中間 Jacobian。
無論哪種約定,務必先固定一種,再檢查維度是否匹配。
小例子
設
- (L = \tfrac{1}{2}|Y|_F^2),
- (Y = AXB),(A,B) 為常數矩陣,
則
[
\frac{\partial L}{\partial X} = A^\top Y B^\top,
]
可直接用上述鏈式法則驗證: - (\frac{\partial L}{\partial Y} = Y),
- (\frac{\partial \operatorname{vec}(Y)}{\partial \operatorname{vec}(X)} = B^\top \otimes A),
- 于是
[
\operatorname{vec}!\left(\frac{\partial L}{\partial X}\right) = (B \otimes A^\top)\operatorname{vec}(Y) = \operatorname{vec}(A^\top Y B^\top).
]
注: AI寫的,請大家審閱!