矩陣求導常用公式解析:標量、向量與矩陣的導數計算
- 矩陣求導常用公式解析:標量、向量與矩陣的導數計算
- 矩陣求導的布局問題
- 1. 分子布局 vs 分母布局對比表
- 2. 布局沖突的典型場景分析
- 3. 混合布局的兼容性處理
- 一、標量對向量求導
- 1. 線性函數求導
- 2. 二次型函數(對稱矩陣)
- 3. 二次型函數(非對稱矩陣)
- 二、向量對向量求導(分子布局)
- 1. 線性變換的雅可比矩陣(詳細推導)
- 2. 一般向量函數的雅可比矩陣(補充關鍵說明)
- 3. 鏈式法則的矩陣形式
- 三、標量對矩陣求導
- 1. 標量函數 y = tr ( A ) y = \text{tr}(\mathbf{A}) y=tr(A) 對矩陣 A \mathbf{A} A 求導
- 2. 標量函數 y = tr ( A B ) y = \text{tr}(\mathbf{A} \mathbf{B}) y=tr(AB) 對矩陣 A \mathbf{A} A 求導(假設 A \mathbf{A} A 和 B \mathbf{B} B 可相乘)
- 3. 標量函數 y = x T A x y = \mathbf{x}^T \mathbf{A} \mathbf{x} y=xTAx 對矩陣 A \mathbf{A} A 求導( x \mathbf{x} x 為向量)
矩陣求導常用公式解析:標量、向量與矩陣的導數計算
矩陣求導是機器學習、優化理論中的重要數學工具。本文將系統推導標量對向量、向量對向量、標量對矩陣的求導公式,并解析分子布局與分母布局的核心差異。
矩陣求導的布局問題
1. 分子布局 vs 分母布局對比表
特性 | 分子布局 (Numerator Layout) | 分母布局 (Denominator Layout) |
---|---|---|
導數維度 | m × n m \times n m×n | n × m n \times m n×m |
元素排列規則 | ? y i ? x j \frac{\partial y_i}{\partial x_j} ?xj??yi?? | ? y j ? x i \frac{\partial y_j}{\partial x_i} ?xi??yj?? |
線性變換示例 | ? A x ? x = A \frac{\partial \mathbf{Ax}}{\partial \mathbf{x}} = \mathbf{A} ?x?Ax?=A | ? A x ? x = A T \frac{\partial \mathbf{Ax}}{\partial \mathbf{x}} = \mathbf{A}^T ?x?Ax?=AT |
鏈式法則順序 | 從左到右自然順序 | 需要轉置調整順序 |
2. 布局沖突的典型場景分析
場景:計算 ? z ? x \frac{\partial \mathbf{z}}{\partial \mathbf{x}} ?x?z?,其中 z = W x + b \mathbf{z} = \mathbf{W}\mathbf{x} + \mathbf{b} z=Wx+b
-
分子布局:
? z ? x = W ( 維度? m × n ) \frac{\partial \mathbf{z}}{\partial \mathbf{x}} = \mathbf{W} \quad (\text{維度 } m \times n) ?x?z?=W(維度?m×n) -
分母布局:
? z ? x = W T ( 維度? n × m ) \frac{\partial \mathbf{z}}{\partial \mathbf{x}} = \mathbf{W}^T \quad (\text{維度 } n \times m) ?x?z?=WT(維度?n×m)
應用建議:
- 在反向傳播算法中,分母布局更自然(梯度維度與參數維度一致)
- 在理論推導中,分子布局更便于公式鏈式展開
3. 混合布局的兼容性處理
當不同文獻使用不同布局時,可通過以下規則轉換:
( ? y ? x ) Denominator = ( ? y ? x ) Numerator T \left( \frac{\partial \mathbf{y}}{\partial \mathbf{x}} \right)_{\text{Denominator}} = \left( \frac{\partial \mathbf{y}}{\partial \mathbf{x}} \right)_{\text{Numerator}}^T (?x?y?)Denominator?=(?x?y?)NumeratorT?
一、標量對向量求導
1. 線性函數求導
設向量 a = [ a 1 , a 2 , … , a n ] T \mathbf{a} = [a_1, a_2, \dots, a_n]^T a=[a1?,a2?,…,an?]T, x = [ x 1 , x 2 , … , x n ] T \mathbf{x} = [x_1, x_2, \dots, x_n]^T x=[x1?,x2?,…,xn?]T,標量函數為:
y = a T x = ∑ i = 1 n a i x i y = \mathbf{a}^T \mathbf{x} = \sum_{i=1}^n a_i x_i y=aTx=i=1∑n?ai?xi?
求導結果:
梯度向量為系數向量本身:
? y ? x = [ a 1 a 2 ? a n ] = a \frac{\partial y}{\partial \mathbf{x}} = \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{bmatrix} = \mathbf{a} ?x?y?= ?a1?a2??an?? ?=a
2. 二次型函數(對稱矩陣)
設對稱矩陣 A ∈ R n × n \mathbf{A} \in \mathbb{R}^{n \times n} A∈Rn×n,標量函數:
y = x T A x = ∑ i = 1 n ∑ j = 1 n a i j x i x j y = \mathbf{x}^T \mathbf{A} \mathbf{x} = \sum_{i=1}^n \sum_{j=1}^n a_{ij} x_i x_j y=xTAx=i=1∑n?j=1∑n?aij?xi?xj?
求導過程:
對分量 x k x_k xk? 求偏導:
? y ? x k = 2 ∑ i = 1 n a i k x i \frac{\partial y}{\partial x_k} = 2 \sum_{i=1}^n a_{ik} x_i ?xk??y?=2i=1∑n?aik?xi?
梯度向量:
? y ? x = 2 A x \frac{\partial y}{\partial \mathbf{x}} = 2 \mathbf{A} \mathbf{x} ?x?y?=2Ax
3. 二次型函數(非對稱矩陣)
當 A \mathbf{A} A 非對稱時,標量函數展開同上。對 x k x_k xk? 求偏導:
? y ? x k = ( A x ) k + ( A T x ) k \frac{\partial y}{\partial x_k} = (\mathbf{A}\mathbf{x})_k + (\mathbf{A}^T \mathbf{x})_k ?xk??y?=(Ax)k?+(ATx)k?
梯度向量:
? y ? x = ( A + A T ) x \frac{\partial y}{\partial \mathbf{x}} = (\mathbf{A} + \mathbf{A}^T) \mathbf{x} ?x?y?=(A+AT)x
二、向量對向量求導(分子布局)
1. 線性變換的雅可比矩陣(詳細推導)
設 y = A x + b \mathbf{y} = \mathbf{A}\mathbf{x} + \mathbf{b} y=Ax+b,其中:
- A ∈ R m × n \mathbf{A} \in \mathbb{R}^{m \times n} A∈Rm×n 為系數矩陣
- x ∈ R n \mathbf{x} \in \mathbb{R}^n x∈Rn 為輸入向量
- b ∈ R m \mathbf{b} \in \mathbb{R}^m b∈Rm 為偏置向量
分量化表示:
y i = ∑ j = 1 n a i j x j + b i ( i = 1 , 2 , … , m ) y_i = \sum_{j=1}^n a_{ij} x_j + b_i \quad (i=1,2,\dots,m) yi?=j=1∑n?aij?xj?+bi?(i=1,2,…,m)
對分量求偏導:
對每個 y i y_i yi? 關于 x j x_j xj? 求偏導:
? y i ? x j = a i j \frac{\partial y_i}{\partial x_j} = a_{ij} ?xj??yi??=aij?
雅可比矩陣構造:
將所有偏導數按如下規則排列:
- 行索引對應輸出分量 y i y_i yi?
- 列索引對應輸入分量 x j x_j xj?
? y ? x = [ ? y 1 ? x 1 ? y 1 ? x 2 ? ? y 1 ? x n ? y 2 ? x 1 ? y 2 ? x 2 ? ? y 2 ? x n ? ? ? ? ? y m ? x 1 ? y m ? x 2 ? ? y m ? x n ] = A \frac{\partial \mathbf{y}}{\partial \mathbf{x}} = \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \frac{\partial y_1}{\partial x_2} & \cdots & \frac{\partial y_1}{\partial x_n} \\ \frac{\partial y_2}{\partial x_1} & \frac{\partial y_2}{\partial x_2} & \cdots & \frac{\partial y_2}{\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial y_m}{\partial x_1} & \frac{\partial y_m}{\partial x_2} & \cdots & \frac{\partial y_m}{\partial x_n} \end{bmatrix} = \mathbf{A} ?x?y?= ??x1??y1???x1??y2????x1??ym????x2??y1???x2??y2????x2??ym?????????xn??y1???xn??y2????xn??ym??? ?=A
2. 一般向量函數的雅可比矩陣(補充關鍵說明)
對向量函數 y = f ( x ) = [ f 1 ( x ) , f 2 ( x ) , … , f m ( x ) ] T \mathbf{y} = \mathbf{f}(\mathbf{x}) = [f_1(\mathbf{x}), f_2(\mathbf{x}), \dots, f_m(\mathbf{x})]^T y=f(x)=[f1?(x),f2?(x),…,fm?(x)]T,其雅可比矩陣的構造規則為:
- 每個元素 ? f i ? x j \frac{\partial f_i}{\partial x_j} ?xj??fi?? 表示第 i i i 個輸出對第 j j j 個輸入的偏導
- 行維度 m m m 由輸出向量維度決定
- 列維度 n n n 由輸入向量維度決定
關鍵特性:
- 若 f ( x ) \mathbf{f}(\mathbf{x}) f(x) 為線性函數(即 f ( x ) = A x \mathbf{f}(\mathbf{x}) = \mathbf{A}\mathbf{x} f(x)=Ax),雅可比矩陣退化為系數矩陣 A \mathbf{A} A
- 若 f ( x ) \mathbf{f}(\mathbf{x}) f(x) 為非線性函數(如神經網絡激活函數),需逐元素計算偏導數
3. 鏈式法則的矩陣形式
設復合函數 z = g ( y ) = g ( f ( x ) ) \mathbf{z} = \mathbf{g}(\mathbf{y}) = \mathbf{g}(\mathbf{f}(\mathbf{x})) z=g(y)=g(f(x)),則鏈式法則的矩陣形式為:
? z ? x = ? z ? y ? ? y ? x \frac{\partial \mathbf{z}}{\partial \mathbf{x}} = \frac{\partial \mathbf{z}}{\partial \mathbf{y}} \cdot \frac{\partial \mathbf{y}}{\partial \mathbf{x}} ?x?z?=?y?z???x?y?
其中:
- ? z ? y ∈ R p × m \frac{\partial \mathbf{z}}{\partial \mathbf{y}} \in \mathbb{R}^{p \times m} ?y?z?∈Rp×m
- ? y ? x ∈ R m × n \frac{\partial \mathbf{y}}{\partial \mathbf{x}} \in \mathbb{R}^{m \times n} ?x?y?∈Rm×n
- 最終結果維度為 p × n p \times n p×n
三、標量對矩陣求導
1. 標量函數 y = tr ( A ) y = \text{tr}(\mathbf{A}) y=tr(A) 對矩陣 A \mathbf{A} A 求導
-
矩陣的跡:
tr ( A ) = ∑ i = 1 n a i i \text{tr}(\mathbf{A}) = \sum_{i=1}^n a_{ii} tr(A)=i=1∑n?aii? -
對矩陣元素 a i j a_{ij} aij? 求偏導:
- 當 i ≠ j i \neq j i=j 時,
? y ? a i j = 0 \frac{\partial y}{\partial a_{ij}} = 0 ?aij??y?=0 - 當 i = j i = j i=j 時,
? y ? a i i = 1 \frac{\partial y}{\partial a_{ii}} = 1 ?aii??y?=1
- 當 i ≠ j i \neq j i=j 時,
-
梯度矩陣:
? y ? A = I \frac{\partial y}{\partial \mathbf{A}} = \mathbf{I} ?A?y?=I
(其中 I \mathbf{I} I 是與 A \mathbf{A} A 同維度的單位矩陣)
2. 標量函數 y = tr ( A B ) y = \text{tr}(\mathbf{A} \mathbf{B}) y=tr(AB) 對矩陣 A \mathbf{A} A 求導(假設 A \mathbf{A} A 和 B \mathbf{B} B 可相乘)
-
跡的性質:
tr ( A B ) = tr ( B A ) ( 若維度合適 ) \text{tr}(\mathbf{A} \mathbf{B}) = \text{tr}(\mathbf{B} \mathbf{A}) \quad (\text{若維度合適}) tr(AB)=tr(BA)(若維度合適) -
展開形式:
設 A \mathbf{A} A 為 m × n m \times n m×n 矩陣, B \mathbf{B} B 為 n × m n \times m n×m 矩陣,則
y = ∑ i = 1 m ∑ j = 1 n a i j b j i y = \sum_{i=1}^m \sum_{j=1}^n a_{ij} b_{ji} y=i=1∑m?j=1∑n?aij?bji? -
對 a k l a_{kl} akl? 求偏導:
? y ? a k l = b l k \frac{\partial y}{\partial a_{kl}} = b_{lk} ?akl??y?=blk? -
梯度矩陣:
? y ? A = B T \frac{\partial y}{\partial \mathbf{A}} = \mathbf{B}^T ?A?y?=BT
3. 標量函數 y = x T A x y = \mathbf{x}^T \mathbf{A} \mathbf{x} y=xTAx 對矩陣 A \mathbf{A} A 求導( x \mathbf{x} x 為向量)
-
展開形式:
y = ∑ i = 1 n ∑ j = 1 n a i j x i x j y = \sum_{i=1}^n \sum_{j=1}^n a_{ij} x_i x_j y=i=1∑n?j=1∑n?aij?xi?xj? -
對 a k l a_{kl} akl? 求偏導:
? y ? a k l = x k x l \frac{\partial y}{\partial a_{kl}} = x_k x_l ?akl??y?=xk?xl? -
梯度矩陣:
? y ? A = x x T \frac{\partial y}{\partial \mathbf{A}} = \mathbf{x} \mathbf{x}^T ?A?y?=xxT