last_modified: 2026-01-10
生成AIによる自動生成記事に関する免責事項 :
本記事は、Petersen & Pedersen著 The Matrix Cookbook (Nov 15, 2012 edition) のPage 12の内容(公式92〜105)を骨子とし、数理的な証明と応用例を大幅に加筆して再構成した解説記事です。筆者の学習目的で生成したものです。正確な内容は必ず一次情報で確認してください。
1. 序論:最適化と線形代数の結合点#
Page 12は、行列微分の応用における重要な転換点です。
前半(Section 2.4の続き)では、複雑な分数形式(レイリー商など)の微分や、最適化の基礎となる**勾配(Gradient)と ヘッセ行列(Hessian)**の関係を定義します。これにより、二次形式 x T A x x^T A x x T A x の極値問題を解くための道具が揃います。
後半(Section 2.5)からは、新たな章としてトレース(Trace)の微分 が始まります。行列の内積構造 ⟨ A , B ⟩ = Tr ( A T B ) \langle A, B \rangle = \text{Tr}(A^T B) ⟨ A , B ⟩ = Tr ( A T B ) に直結するトレース微分は、ニューラルネットワークの誤差逆伝播法や行列分解において、最も基本的かつ強力な演算ツールです。
2. 複雑なスカラー形式の微分 (Eq. 92–95)#
高次の行列積や、分数形式(商の微分)を含む高度な公式です。
2.1 高次形式の微分 (Eq. 92)#
非常に長い式ですが、構造は「積の微分」です。
【公式】
∂ ∂ X a T ( X n ) T X n b = ∑ r = 0 n − 1 [ X n − 1 − r a b T ( X n ) T X r + ( X r ) T X n a b T ( X n − 1 − r ) T ] (92) \frac{\partial}{\partial X} \mathbf{a}^T (X^n)^T X^n \mathbf{b} = \sum_{r=0}^{n-1} \left[ X^{n-1-r} \mathbf{a} \mathbf{b}^T (X^n)^T X^r + (X^r)^T X^n \mathbf{a} \mathbf{b}^T (X^{n-1-r})^T \right] \tag{92} ∂ X ∂ a T ( X n ) T X n b = r = 0 ∑ n − 1 [ X n − 1 − r a b T ( X n ) T X r + ( X r ) T X n a b T ( X n − 1 − r ) T ] ( 92 )
【解説】
これは f ( X ) = ( X n a ) T ( X n b ) f(X) = (X^n \mathbf{a})^T (X^n \mathbf{b}) f ( X ) = ( X n a ) T ( X n b ) という内積の微分です。
u = X n a , v = X n b u = X^n \mathbf{a}, v = X^n \mathbf{b} u = X n a , v = X n b と置けば f = u T v f = u^T v f = u T v です。
d f = ( d u ) T v + u T ( d v ) df = (du)^T v + u^T (dv) df = ( d u ) T v + u T ( d v )
ここで d ( X n ) d(X^n) d ( X n ) の展開式(Page 11 Eq. 90 参照)を d u , d v du, dv d u , d v に適用し、各項を整理すると Eq. 92 が得られます。項が2つあるのは、左側の ( X n ) T (X^n)^T ( X n ) T と右側の X n X^n X n の両方に X X X が含まれているためです。
2.2 ベクトル値関数の双一次形式 (Eq. 93)#
【公式】
∂ ∂ x s T A r = [ ∂ s ∂ x ] T A r + [ ∂ r ∂ x ] T A T s (93) \frac{\partial}{\partial x} \mathbf{s}^T A \mathbf{r} = \left[ \frac{\partial \mathbf{s}}{\partial x} \right]^T A \mathbf{r} + \left[ \frac{\partial \mathbf{r}}{\partial x} \right]^T A^T \mathbf{s} \tag{93} ∂ x ∂ s T A r = [ ∂ x ∂ s ] T A r + [ ∂ x ∂ r ] T A T s ( 93 )
ここで s = s ( x ) , r = r ( x ) \mathbf{s} = \mathbf{s}(x), \mathbf{r} = \mathbf{r}(x) s = s ( x ) , r = r ( x ) はベクトル値関数、x x x はベクトル、A A A は定数行列です。
【解説】
積の微分則(ライプニッツ則)そのものです。
d ( s T A r ) = ( d s ) T A r + s T A ( d r ) d(\mathbf{s}^T A \mathbf{r}) = (d\mathbf{s})^T A \mathbf{r} + \mathbf{s}^T A (d\mathbf{r}) d ( s T A r ) = ( d s ) T A r + s T A ( d r )
第2項を転置して ( d r ) T A T s (d\mathbf{r})^T A^T \mathbf{s} ( d r ) T A T s とすることで、微分 d x d\mathbf{x} d x を共通因数として括り出しやすい形(勾配形式)にしています。
2.3 一般化レイリー商の微分 (Eq. 94, 95)#
信号処理や振動解析における「一般化固有値問題」に直結する重要な公式です。
【公式】
∂ ∂ x ( A x ) T ( A x ) ( B x ) T ( B x ) = 2 A T A x x T B T B x − 2 x T A T A x ⋅ B T B x ( x T B T B x ) 2 (95) \frac{\partial}{\partial \mathbf{x}} \frac{(A\mathbf{x})^T (A\mathbf{x})}{(B\mathbf{x})^T (B\mathbf{x})} = \frac{2 A^T A \mathbf{x}}{\mathbf{x}^T B^T B \mathbf{x}} - \frac{2 \mathbf{x}^T A^T A \mathbf{x} \cdot B^T B \mathbf{x}}{(\mathbf{x}^T B^T B \mathbf{x})^2} \tag{95} ∂ x ∂ ( B x ) T ( B x ) ( A x ) T ( A x ) = x T B T B x 2 A T A x − ( x T B T B x ) 2 2 x T A T A x ⋅ B T B x ( 95 )
【導出:商の微分則】
スカラーの商の微分 ( u / v ) ′ = ( u ′ v − u v ′ ) / v 2 (u/v)' = (u'v - uv')/v^2 ( u / v ) ′ = ( u ′ v − u v ′ ) / v 2 を適用します。
分子 u = x T A T A x u = \mathbf{x}^T A^T A \mathbf{x} u = x T A T A x ⟹ \implies ⟹ 勾配 u ′ = 2 A T A x u' = 2 A^T A \mathbf{x} u ′ = 2 A T A x
分母 v = x T B T B x v = \mathbf{x}^T B^T B \mathbf{x} v = x T B T B x ⟹ \implies ⟹ 勾配 v ′ = 2 B T B x v' = 2 B^T B \mathbf{x} v ′ = 2 B T B x
これらを代入するだけで Eq. 95 が得られます。
【応用】
この式を = 0 = 0 = 0 と置いて解くと、
( A T A ) x = λ ( B T B ) x , ただし λ = u v (A^T A) \mathbf{x} = \lambda (B^T B) \mathbf{x}, \quad \text{ただし } \lambda = \frac{u}{v} ( A T A ) x = λ ( B T B ) x , ただし λ = v u
という一般化固有値問題 K x = λ M x K \mathbf{x} = \lambda M \mathbf{x} K x = λ M x が現れます。これがフィルタ設計や主成分分析の基礎となります。
3. 勾配とヘッセ行列 (Gradient and Hessian)#
二次形式関数の最適化に必要な微分の定義です。
3.1 定義と公式 (Eq. 96–98)#
二次関数 f ( x ) = x T A x + b T x f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x} + \mathbf{b}^T \mathbf{x} f ( x ) = x T A x + b T x を考えます。
【勾配 (Gradient)】
∇ x f = ∂ f ∂ x = ( A + A T ) x + b (97) \nabla_{\mathbf{x}} f = \frac{\partial f}{\partial \mathbf{x}} = (A + A^T) \mathbf{x} + \mathbf{b} \tag{97} ∇ x f = ∂ x ∂ f = ( A + A T ) x + b ( 97 )
【ヘッセ行列 (Hessian)】
H = ∂ 2 f ∂ x ∂ x T = A + A T (98) H = \frac{\partial^2 f}{\partial \mathbf{x} \partial \mathbf{x}^T} = A + A^T \tag{98} H = ∂ x ∂ x T ∂ 2 f = A + A T ( 98 )
【解説】
対称性の重要性 : もし A A A が対称行列 (A = A T A=A^T A = A T ) ならば、勾配は 2 A x + b 2A\mathbf{x} + \mathbf{b} 2 A x + b 、ヘッセ行列は 2 A 2A 2 A となります。
ニュートン法 : 最適化において x n e w = x o l d − H − 1 ( ∇ f ) \mathbf{x}_{new} = \mathbf{x}_{old} - H^{-1} (\nabla f) x n e w = x o l d − H − 1 ( ∇ f ) という更新を行う際、この H = A + A T H = A+A^T H = A + A T が曲率(Curvature)情報として使われます。A A A が正定値であれば H H H も正定値となり、極小値の存在が保証されます。
4. トレースの微分 (Derivatives of Traces)#
ここから Section 2.5 に入ります。トレースの微分は、行列を行列で微分する際の最も基本的な操作です。
4.1 スカラー微分の拡張則 (Eq. 100 相当の記述)#
Page 12 には、非常に強力なメタ公式(定理)が記載されています。
【公式】
∂ Tr ( F ( X ) ) ∂ X = f ( X ) T \frac{\partial \text{Tr}(F(X))}{\partial X} = f(X)^T ∂ X ∂ Tr ( F ( X )) = f ( X ) T
ここで f ( ⋅ ) f(\cdot) f ( ⋅ ) は、スカラー関数 F ( ⋅ ) F(\cdot) F ( ⋅ ) の導関数です。
【解説】
これは、行列 X X X の各成分に対して独立に作用する関数(Element-wise function)や、行列のべき乗関数(F ( X ) = X n F(X)=X^n F ( X ) = X n )に対して成立します。
例:F ( X ) = X 2 F(X) = X^2 F ( X ) = X 2 の場合、スカラー微分は f ( x ) = 2 x f(x)=2x f ( x ) = 2 x なので、∂ Tr ( X 2 ) / ∂ X = ( 2 X ) T = 2 X T \partial \text{Tr}(X^2)/\partial X = (2X)^T = 2X^T ∂ Tr ( X 2 ) / ∂ X = ( 2 X ) T = 2 X T となります。これは便利ですが、行列積の順序が絡む複雑な関数には適用できない場合があるため注意が必要です。
4.2 一次形式のトレース微分 (Eq. 99–105)#
最も頻出する基本公式群です。
【公式一覧】
∂ ∂ X Tr ( X ) = I (99) \frac{\partial}{\partial X} \text{Tr}(X) = I \tag{99} ∂ X ∂ Tr ( X ) = I ( 99 )
∂ ∂ X Tr ( X A ) = A T (100) \frac{\partial}{\partial X} \text{Tr}(XA) = A^T \tag{100} ∂ X ∂ Tr ( X A ) = A T ( 100 )
∂ ∂ X Tr ( A X B ) = A T B T = ( B A ) T (101) \frac{\partial}{\partial X} \text{Tr}(AXB) = A^T B^T = (BA)^T \tag{101} ∂ X ∂ Tr ( A XB ) = A T B T = ( B A ) T ( 101 )
∂ ∂ X Tr ( A X T B ) = B A (102) \frac{\partial}{\partial X} \text{Tr}(AX^T B) = BA \tag{102} ∂ X ∂ Tr ( A X T B ) = B A ( 102 )
∂ ∂ X Tr ( X T A ) = A (103) \frac{\partial}{\partial X} \text{Tr}(X^T A) = A \tag{103} ∂ X ∂ Tr ( X T A ) = A ( 103 )
∂ ∂ X Tr ( A X T ) = A (104) \frac{\partial}{\partial X} \text{Tr}(AX^T) = A \tag{104} ∂ X ∂ Tr ( A X T ) = A ( 104 )
∂ ∂ X Tr ( A ⊗ X ) = Tr ( A ) I (105) \frac{\partial}{\partial X} \text{Tr}(A \otimes X) = \text{Tr}(A) I \tag{105} ∂ X ∂ Tr ( A ⊗ X ) = Tr ( A ) I ( 105 )
【証明のテクニック:微分の定義】
全微分 d f = Tr ( G T d X ) df = \text{Tr}(G^T dX) df = Tr ( G T d X ) の形を作り、勾配 G G G を読み取ります。
Eq. 101 の証明 :
d ( Tr ( A X B ) ) = Tr ( A ( d X ) B ) = Tr ( B A d X ) ( 巡回性 ) d(\text{Tr}(AXB)) = \text{Tr}(A (dX) B) = \text{Tr}(B A dX) \quad (\text{巡回性}) d ( Tr ( A XB )) = Tr ( A ( d X ) B ) = Tr ( B A d X ) ( 巡回性 )
これを d f = Tr ( ( A T B T ) T d X ) df = \text{Tr}((A^T B^T)^T dX) df = Tr (( A T B T ) T d X ) と見なすと、勾配は A T B T A^T B^T A T B T です。
Eq. 102 の証明 :
d ( Tr ( A X T B ) ) = Tr ( A ( d X ) T B ) = Tr ( B A ( d X ) T ) = Tr ( ( B A ( d X ) T ) T ) = Tr ( ( d X ) A T B T ) d(\text{Tr}(AX^T B)) = \text{Tr}(A (dX)^T B) = \text{Tr}(B A (dX)^T) = \text{Tr}((B A (dX)^T)^T) = \text{Tr}((dX) A^T B^T) d ( Tr ( A X T B )) = Tr ( A ( d X ) T B ) = Tr ( B A ( d X ) T ) = Tr (( B A ( d X ) T ) T ) = Tr (( d X ) A T B T )
d f = Tr ( A T B T d X ) df = \text{Tr}(A^T B^T dX) df = Tr ( A T B T d X ) なので、勾配は ( A T B T ) T = B A (A^T B^T)^T = B A ( A T B T ) T = B A です。
Eq. 105 の証明 :
Tr ( A ⊗ X ) = Tr ( A ) Tr ( X ) \text{Tr}(A \otimes X) = \text{Tr}(A) \text{Tr}(X) Tr ( A ⊗ X ) = Tr ( A ) Tr ( X ) というクロネッカー積の性質を使います。Tr ( A ) \text{Tr}(A) Tr ( A ) は定数なので、Eq. 99 より Tr ( A ) I \text{Tr}(A) I Tr ( A ) I となります。
5. 結論#
Page 12 は、行列微分の基礎体力を養うためのページです。
商の微分則 (Eq. 95) : 固有値問題への架け橋。
ヘッセ行列 (Eq. 98) : 最適化アルゴリズムの実装に必須。A + A T A+A^T A + A T を忘れるとアルゴリズムが収束しません。
トレース微分 (Eq. 100-104) : 「係数行列が転置されて出てくる」というルールは、行列微分の最も基本的な直感です。
これらの公式を使いこなすことで、複雑な損失関数の設計や解析が自由自在になります。
参考文献#
Petersen, K. B., & Pedersen, M. S. (2012). The Matrix Cookbook . Technical University of Denmark. (Page 12, Eqs 92-105)
Nocedal, J., & Wright, S. J. (2006). Numerical Optimization . Springer. (Gradient & Hessian)
Goodfellow, I., et al. (2016). Deep Learning . MIT Press. (Trace derivatives in Backprop)
補足:Page 12 の公式を「スカラー(数値)」で直感的に理解する#
Page 12 には、複雑な商の微分や、トレース(Trace)の微分が登場します。これらも「行列を x x x 、定数行列を a , b a, b a , b 」と置くことで、高校数学の微分公式と驚くほど一致します。
1. 高次形式の微分 (Eq. 92)#
公式 : ∂ ∂ X a T ( X n ) T X n b \frac{\partial}{\partial X} \mathbf{a}^T (X^n)^T X^n \mathbf{b} ∂ X ∂ a T ( X n ) T X n b
スカラー翻訳 : a ⋅ x n ⋅ x n ⋅ b a \cdot x^n \cdot x^n \cdot b a ⋅ x n ⋅ x n ⋅ b の微分
思考 : y = a b x 2 n y = ab x^{2n} y = ab x 2 n です。
微分 : y ′ = 2 n a b x 2 n − 1 y' = 2n ab x^{2n-1} y ′ = 2 nab x 2 n − 1
行列の事情 :
スカラーなら 2 n 2n 2 n という係数でまとまりますが、行列は非可換なので「積の微分」として展開されます。
左の ( X n ) T (X^n)^T ( X n ) T を微分した項と、右の X n X^n X n を微分した項の2つが出てくる(和になる)構造は、スカラーの x n ⋅ x n x^n \cdot x^n x n ⋅ x n の微分 ( x n ) ′ x n + x n ( x n ) ′ (x^n)' x^n + x^n (x^n)' ( x n ) ′ x n + x n ( x n ) ′ と同じです。
2. 商の微分(一般化レイリー商) (Eq. 95)#
公式 : ∂ ∂ x ( A x ) T ( A x ) ( B x ) T ( B x ) \frac{\partial}{\partial \mathbf{x}} \frac{(A\mathbf{x})^T (A\mathbf{x})}{(B\mathbf{x})^T (B\mathbf{x})} ∂ x ∂ ( B x ) T ( B x ) ( A x ) T ( A x )
スカラー翻訳 : ( a x ) 2 ( b x ) 2 \frac{(ax)^2}{(bx)^2} ( b x ) 2 ( a x ) 2 の微分
思考 : 商の微分公式 ( u v ) ′ = u ′ v − u v ′ v 2 \left( \frac{u}{v} \right)' = \frac{u'v - uv'}{v^2} ( v u ) ′ = v 2 u ′ v − u v ′ を使います。
分子 : u = ( a x ) 2 → u ′ = 2 a 2 x u = (ax)^2 \to u' = 2 a^2 x u = ( a x ) 2 → u ′ = 2 a 2 x
分母 : v = ( b x ) 2 → v ′ = 2 b 2 x v = (bx)^2 \to v' = 2 b^2 x v = ( b x ) 2 → v ′ = 2 b 2 x
結果 : 2 a 2 x ⋅ ( b x ) 2 − ( a x ) 2 ⋅ 2 b 2 x ( b x ) 4 \frac{2a^2 x \cdot (bx)^2 - (ax)^2 \cdot 2b^2 x}{(bx)^4} ( b x ) 4 2 a 2 x ⋅ ( b x ) 2 − ( a x ) 2 ⋅ 2 b 2 x
行列の事情 :
行列版も全く同じ「商の微分」の構造をしています。
分子の微分 u ′ u' u ′ が 2 A T A x 2 A^T A \mathbf{x} 2 A T A x 、分母の微分 v ′ v' v ′ が 2 B T B x 2 B^T B \mathbf{x} 2 B T B x に対応しています。
これらを公式に当てはめれば、Eq. 95 そのものになります。
3. 勾配とヘッセ行列 (Eq. 97, 98)#
公式 : f ( x ) = x T A x + b T x f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x} + \mathbf{b}^T \mathbf{x} f ( x ) = x T A x + b T x
スカラー翻訳 : a x 2 + b x a x^2 + bx a x 2 + b x の微分
1階微分(勾配) : 2 a x + b 2ax + b 2 a x + b
2階微分(ヘッセ行列) : 2 a 2a 2 a
行列の事情 :
勾配 : ( A + A T ) x + b (A+A^T)\mathbf{x} + \mathbf{b} ( A + A T ) x + b 。もし A A A が対称 (A = A T A=A^T A = A T ) なら 2 A x + b 2A\mathbf{x} + \mathbf{b} 2 A x + b となり、スカラーと完全に一致します。
ヘッセ行列 : A + A T A+A^T A + A T 。対称なら 2 A 2A 2 A となり、これも一致します。
「二次関数の2階微分は定数(係数の2倍)になる」という直感は行列でも通用します。
4. トレース微分の基本 (Eq. 99, 100)#
公式 : ∂ ∂ X Tr ( X ) = I , ∂ ∂ X Tr ( X A ) = A T \frac{\partial}{\partial X} \text{Tr}(X) = I, \quad \frac{\partial}{\partial X} \text{Tr}(XA) = A^T ∂ X ∂ Tr ( X ) = I , ∂ X ∂ Tr ( X A ) = A T
スカラー翻訳 : x x x と x a xa x a の微分
微分 : x ′ = 1 , ( x a ) ′ = a x' = 1, \quad (xa)' = a x ′ = 1 , ( x a ) ′ = a
行列の事情 :
1 → I 1 \to I 1 → I (単位行列)
a → A T a \to A^T a → A T (転置)
重要ルール : トレース微分では、係数行列が**「転置して」**残ります。これは Tr ( A T B ) \text{Tr}(A^T B) Tr ( A T B ) が行列の内積(スカラー積)に対応しているためです。
5. トレース積の微分 (Eq. 101, 102)#
公式 (Eq. 101) : ∂ ∂ X Tr ( A X B ) = A T B T \frac{\partial}{\partial X} \text{Tr}(AXB) = A^T B^T ∂ X ∂ Tr ( A XB ) = A T B T
スカラー翻訳 : a x b axb a x b の微分
行列の事情 :
係数 A A A と B B B が残りますが、それぞれ転置されます (A T , B T A^T, B^T A T , B T )。
( B A ) T (BA)^T ( B A ) T と書いても同じです。スカラーの a b ab ab に対応しています。
公式 (Eq. 102) : ∂ ∂ X Tr ( A X T B ) = B A \frac{\partial}{\partial X} \text{Tr}(AX^T B) = BA ∂ X ∂ Tr ( A X T B ) = B A
スカラー翻訳 : a x b axb a x b の微分(ただし x x x が転置されている)
行列の事情 :
ここで X X X は X T X^T X T として入っています。
X X X で微分すると、転置の影響で係数の「転置ルール」がキャンセルされ、そのままの形 (B A B A B A ) で出てきます(あるいは A T , B T A^T, B^T A T , B T の順序が入れ替わるなど)。
覚え方としては、「X X X がそのままなら係数は転置、X T X^T X T なら係数はそのまま(に近い形)」という傾向があります。
6. クロネッカー積のトレース (Eq. 105)#
公式 : ∂ ∂ X Tr ( A ⊗ X ) = Tr ( A ) I \frac{\partial}{\partial X} \text{Tr}(A \otimes X) = \text{Tr}(A) I ∂ X ∂ Tr ( A ⊗ X ) = Tr ( A ) I
スカラー翻訳 : a x ax a x の微分(a a a も x x x も行列のサイズ分だけ増殖しているイメージ)
行列の事情 :
クロネッカー積の性質 Tr ( A ⊗ X ) = Tr ( A ) Tr ( X ) \text{Tr}(A \otimes X) = \text{Tr}(A)\text{Tr}(X) Tr ( A ⊗ X ) = Tr ( A ) Tr ( X ) を使えば、実質 c ⋅ Tr ( X ) c \cdot \text{Tr}(X) c ⋅ Tr ( X ) (c c c は定数)の微分です。
Eq. 99 より Tr ( X ) \text{Tr}(X) Tr ( X ) の微分は I I I なので、結果は Tr ( A ) I \text{Tr}(A) I Tr ( A ) I となります。
まとめ:Page 12 の攻略法#
商の微分はそのまま使える : 高校数学の ( u / v ) ′ (u/v)' ( u / v ) ′ の公式に、ベクトル微分のパーツを当てはめるだけです。
二次関数は 2 a x + b 2ax+b 2 a x + b : A + A T A+A^T A + A T を「行列版の 2 a 2a 2 a 」だと思えばOKです。
トレースは転置に注意 : 基本的に「係数が残る」のはスカラーと同じですが、Tr ( X A ) → A T \text{Tr}(XA) \to A^T Tr ( X A ) → A T のように転置 がつく点だけ気をつけてください。
発展的補足:3階以上の微分とテンソル解析#
行列微分(Matrix Calculus)の教科書では通常、2階微分(ヘッセ行列)までしか扱われません。これは、3階以上の微分が「行列(2次元の表)」という枠組みを超え、高階テンソル(Multidimensional Array) となるためです。
ここでは、その数理的構造と取り扱い方法について詳細に解説します。
1. 高階微分の定義#
スカラー関数 f ( x ) f(\mathbf{x}) f ( x ) (x ∈ R n \mathbf{x} \in \mathbb{R}^n x ∈ R n )の微分は、階数が上がるごとに次元が1つ増えます。
1階微分(勾配) : n n n 次元のベクトル
( ∇ f ) i = ∂ f ∂ x i (\nabla f)_i = \frac{\partial f}{\partial x_i} ( ∇ f ) i = ∂ x i ∂ f
2階微分(ヘッセ行列) : n × n n \times n n × n の行列
( H ) i j = ∂ 2 f ∂ x i ∂ x j (H)_ {ij} = \frac{\partial^2 f}{\partial x_i \partial x_j} ( H ) ij = ∂ x i ∂ x j ∂ 2 f
3階微分 : n × n × n n \times n \times n n × n × n の3階テンソル
( T ) i j k = ∂ 3 f ∂ x i ∂ x j ∂ x k (\mathcal{T})_{ijk} = \frac{\partial^3 f}{\partial x_i \partial x_j \partial x_k} ( T ) ijk = ∂ x i ∂ x j ∂ x k ∂ 3 f
この3階微分 T \mathcal{T} T は、成分 ( i , j , k ) (i, j, k) ( i , j , k ) を持つ立方体のようなデータ構造となります。
2. 表記法の限界と「アインシュタインの縮約記法」#
行列記法(Matrix Notation)は、ベクトル v \mathbf{v} v と行列 M M M の積 v T M v \mathbf{v}^T M \mathbf{v} v T M v のように、2次元までの操作を記述するのに特化しています。3階以上のテンソルが登場すると、標準的な行列積の記号では記述が困難になります。
そこで、物理学や連続体力学で用いられる アインシュタインの縮約記法(Einstein Summation Convention) が必須となります。
ルール : 「一つの項の中に同じ添字が2回現れたら、その添字について和をとる(∑ \sum ∑ を省略する)」
例:テイラー展開の3次項
スカラー関数 f ( x + δ ) f(\mathbf{x} + \boldsymbol{\delta}) f ( x + δ ) のテイラー展開を考えます。
行列記法(2次まで) :
f ( x + δ ) ≈ f ( x ) + ∇ f T δ + 1 2 δ T H δ f(\mathbf{x} + \boldsymbol{\delta}) \approx f(\mathbf{x}) + \nabla f^T \boldsymbol{\delta} + \frac{1}{2} \boldsymbol{\delta}^T H \boldsymbol{\delta} f ( x + δ ) ≈ f ( x ) + ∇ f T δ + 2 1 δ T H δ
縮約記法(3次項を含む) :
f ( x + δ ) ≈ f + ∂ f ∂ x i δ i + 1 2 ∂ 2 f ∂ x i ∂ x j δ i δ j + 1 6 ∂ 3 f ∂ x i ∂ x j ∂ x k δ i δ j δ k ⏟ 3次項 f(\mathbf{x} + \boldsymbol{\delta}) \approx f + \frac{\partial f}{\partial x_i} \delta_i + \frac{1}{2} \frac{\partial^2 f}{\partial x_i \partial x_j} \delta_i \delta_j + \frac{1}{6} \underbrace{\frac{\partial^3 f}{\partial x_i \partial x_j \partial x_k} \delta_i \delta_j \delta_k}_{\text{3次項}} f ( x + δ ) ≈ f + ∂ x i ∂ f δ i + 2 1 ∂ x i ∂ x j ∂ 2 f δ i δ j + 6 1 3 次項 ∂ x i ∂ x j ∂ x k ∂ 3 f δ i δ j δ k
ここで、3次項の ∂ 3 f ∂ x i ∂ x j ∂ x k δ i δ j δ k \frac{\partial^3 f}{\partial x_i \partial x_j \partial x_k} \delta_i \delta_j \delta_k ∂ x i ∂ x j ∂ x k ∂ 3 f δ i δ j δ k は、テンソル T \mathcal{T} T とベクトル δ \boldsymbol{\delta} δ の「3重縮約(Triple Contraction)」を表しており、∑ i , j , k T i j k δ i δ j δ k \sum_{i,j,k} \mathcal{T}_{ijk} \delta_i \delta_j \delta_k ∑ i , j , k T ijk δ i δ j δ k を意味します。
3. テンソル積のイメージ(クロネッカー積による表現)#
無理に行列記法で表現しようとする場合、クロネッカー積(Kronecker Product, ⊗ \otimes ⊗ ) と ベクトル化(vec) を用いる方法があります。
3階微分テンソル T \mathcal{T} T を n × n 2 n \times n^2 n × n 2 の横長行列 T [ m a t ] T_{[mat]} T [ ma t ] に展開したとすると、3次項は以下のように書けます。
3rd Order Term = 1 6 δ T T [ m a t ] ( δ ⊗ δ ) \text{3rd Order Term} = \frac{1}{6} \boldsymbol{\delta}^T T_{[mat]} (\boldsymbol{\delta} \otimes \boldsymbol{\delta}) 3rd Order Term = 6 1 δ T T [ ma t ] ( δ ⊗ δ )
しかし、この表記は δ ⊗ δ \boldsymbol{\delta} \otimes \boldsymbol{\delta} δ ⊗ δ (サイズ n 2 n^2 n 2 のベクトル)を生成するため、直感的でなく計算効率も悪いため、理論解析以外ではあまり用いられません。
4. 具体例:3次関数の微分#
簡単な3次関数で、実際にテンソルが出てくる様子を見てみましょう。
関数 :
f ( x ) = ∑ i x i 3 f(\mathbf{x}) = \sum_{i} x_i^3 f ( x ) = i ∑ x i 3
(各成分の3乗和)
勾配(1階) :
∂ f ∂ x i = 3 x i 2 ⟹ ∇ f = 3 x ∘ x ( アダマール積 ) \frac{\partial f}{\partial x_i} = 3x_i^2 \implies \nabla f = 3 \mathbf{x} \circ \mathbf{x} \quad (\text{アダマール積}) ∂ x i ∂ f = 3 x i 2 ⟹ ∇ f = 3 x ∘ x ( アダマール積 )
ヘッセ行列(2階) :
∂ 2 f ∂ x i ∂ x j = { 6 x i ( i = j ) 0 ( i ≠ j ) ⟹ H = 6 ⋅ diag ( x ) \frac{\partial^2 f}{\partial x_i \partial x_j} = \begin{cases} 6x_i & (i=j) \\ 0 & (i \neq j) \end{cases} \implies H = 6 \cdot \text{diag}(\mathbf{x}) ∂ x i ∂ x j ∂ 2 f = { 6 x i 0 ( i = j ) ( i = j ) ⟹ H = 6 ⋅ diag ( x )
3階微分テンソル :
∂ 3 f ∂ x i ∂ x j ∂ x k = { 6 ( i = j = k ) 0 ( それ以外 ) \frac{\partial^3 f}{\partial x_i \partial x_j \partial x_k} = \begin{cases} 6 & (i=j=k) \\ 0 & (\text{それ以外}) \end{cases} ∂ x i ∂ x j ∂ x k ∂ 3 f = { 6 0 ( i = j = k ) ( それ以外 )
これは、対角線 ( i , i , i ) (i,i,i) ( i , i , i ) 上にのみ値 6 6 6 が並び、それ以外が 0 0 0 であるような「対角テンソル」となります。
5. 計算量とメモリの壁#
実務(特に機械学習)で3階微分が使われない最大の理由は 「次元の呪い」 です。
パラメータ数 n = 1000 n = 1000 n = 1000 のモデルを考えます。
勾配 : 1000 1000 1000 要素 (4 4 4 KB)
ヘッセ行列 : 1 , 000 , 000 1,000,000 1 , 000 , 000 要素 (4 4 4 MB)
3階テンソル : 1 , 000 , 000 , 000 1,000,000,000 1 , 000 , 000 , 000 要素 (4 4 4 GB)
パラメータ数が 10 , 000 10,000 10 , 000 になると、3階テンソルは 1 , 000 1,000 1 , 000 億要素(4 4 4 TB)となり、メモリに格納することすら不可能になります。
そのため、準ニュートン法(BFGSなど)では、ヘッセ行列すら直接計算せず、勾配の履歴から近似する手法が取られます。ましてや3階微分をまともに扱うことは、計算資源的に極めて非効率なのです。
補足:4階微分と「4階テンソル」の世界#
3階微分(立方体)のさらに先、4階微分は 「4階テンソル(4th Order Tensor)」 と呼ばれます。
これは n × n × n × n n \times n \times n \times n n × n × n × n の成分を持つ多次元配列であり、もはや3次元空間に図示することすら困難ですが、数理科学においては極めて重要な意味を持ちます。
1. 定義と表記#
スカラー関数 f ( x ) f(\mathbf{x}) f ( x ) の4階微分は、4つの添字 ( i , j , k , l ) (i, j, k, l) ( i , j , k , l ) を持つテンソル Q \mathcal{Q} Q として定義されます。
( Q ) i j k l = ∂ 4 f ∂ x i ∂ x j ∂ x k ∂ x l (\mathcal{Q})_{ijkl} = \frac{\partial^4 f}{\partial x_i \partial x_j \partial x_k \partial x_l} ( Q ) ijk l = ∂ x i ∂ x j ∂ x k ∂ x l ∂ 4 f
テイラー展開の4次項 :
アインシュタインの縮約記法を用いると、4次の項は以下のように書かれます。
4th Term = 1 24 Q i j k l δ i δ j δ k δ l \text{4th Term} = \frac{1}{24} \mathcal{Q}_{ijkl} \delta_i \delta_j \delta_k \delta_l 4th Term = 24 1 Q ijk l δ i δ j δ k δ l
これは「4重縮約(Quadruple Contraction)」であり、成分 ( i , j , k , l ) (i,j,k,l) ( i , j , k , l ) と微小変化 δ \delta δ の4つの積の総和をとることを意味します。
2. なぜ4階テンソルが必要なのか?(実用例)#
「こんな複雑なもの、どこで使うんだ?」と思われるかもしれませんが、実は身近な物理法則や統計解析の根幹を支えています。
応用例1:弾性体力学(フックの法則の一般化)
バネのフックの法則 F = k x F=kx F = k x (力=バネ定数×伸び)を、3次元の物体に拡張することを考えます。
応力(Stress, σ i j \sigma_{ij} σ ij ) : 物体内部にかかる力。2階テンソル(行列)。
ひずみ(Strain, ϵ k l \epsilon_{kl} ϵ k l ) : 物体の変形。2階テンソル(行列)。
これらを結びつける「バネ定数」に相当するものが、弾性テンソル(Stiffness Tensor, C i j k l C_{ijkl} C ijk l ) です。
σ i j = ∑ k , l C i j k l ϵ k l \sigma_{ij} = \sum_{k,l} C_{ijkl} \epsilon_{kl} σ ij = k , l ∑ C ijk l ϵ k l
「行列」と「行列」を線形変換で結びつけるためには、どうしても4階テンソル(3 × 3 × 3 × 3 = 81 3 \times 3 \times 3 \times 3 = 81 3 × 3 × 3 × 3 = 81 成分)が必要になります。建物や自動車の強度計算(FEM解析)では、この4階テンソルが主役です。
応用例2:統計学(尖度・カートシス)
データの分布形状を調べる際、平均(1次)、分散(2次・共分散行列)、歪度(3次)に続く4次モーメントが 尖度(Kurtosis) です。
多変量解析において、データが正規分布からどれだけ「尖っている」か、あるいは「裾が厚いか」を評価するには、4次のモーメントテンソル(4th Cumulant)を解析する必要があります。これは独立成分分析(ICA)などの信号処理で、「非ガウス性」を見つけるための鍵となります。
3. 具体例:4次関数の微分#
最もシンプルな4次関数で、実際に微分してみましょう。
関数 :
f ( x ) = 1 24 ∑ i x i 4 f(\mathbf{x}) = \frac{1}{24} \sum_{i} x_i^4 f ( x ) = 24 1 i ∑ x i 4
1階微分(勾配ベクトル) :
∂ f ∂ x i = 1 6 x i 3 \frac{\partial f}{\partial x_i} = \frac{1}{6} x_i^3 ∂ x i ∂ f = 6 1 x i 3
2階微分(ヘッセ行列) :
∂ 2 f ∂ x i ∂ x j = 1 2 x i 2 δ i j ( 対角成分のみ ) \frac{\partial^2 f}{\partial x_i \partial x_j} = \frac{1}{2} x_i^2 \delta_{ij} \quad (\text{対角成分のみ}) ∂ x i ∂ x j ∂ 2 f = 2 1 x i 2 δ ij ( 対角成分のみ )
3階微分(3階テンソル) :
∂ 3 f ∂ x i ∂ x j ∂ x k = x i δ i j δ j k \frac{\partial^3 f}{\partial x_i \partial x_j \partial x_k} = x_i \delta_{ij} \delta_{jk} ∂ x i ∂ x j ∂ x k ∂ 3 f = x i δ ij δ jk
4階微分(4階テンソル) :
∂ 4 f ∂ x i ∂ x j ∂ x k ∂ x l = δ i j δ j k δ k l \frac{\partial^4 f}{\partial x_i \partial x_j \partial x_k \partial x_l} = \delta_{ij} \delta_{jk} \delta_{kl} ∂ x i ∂ x j ∂ x k ∂ x l ∂ 4 f = δ ij δ jk δ k l
これは、4つの添字がすべて等しい場合 (i = j = k = l i=j=k=l i = j = k = l ) にのみ値 1 1 1 を持ち、それ以外は 0 0 0 となる特殊なテンソル(一般化された単位テンソル)です。
4. 結論#
4階微分は、単なる数学的な遊びではありません。
物理 : 「行列(応力)」を入力して「行列(ひずみ)」を出力する関数の微分(感度)として現れる。
統計 : 「分散(行列)」のさらに奥にある「分布の鋭さ」を見るために現れる。
私たちが普段扱っている「行列(2階)」の世界を一歩外に出ると、そこにはより豊かで、より精密な「テンソル(高階)」の世界が広がっています。ここまで理解できれば、機械学習の論文に出てくる「Tensor Contraction」などの記述も、恐れることなく読み解けるはずです。