Home
2542 words
13 minutes
『The Matrix Cookbook』Page 15完全解読:構造化行列の微分公式と連鎖律

last_modified: 2026-01-10

生成AIによる自動生成記事に関する免責事項: 本記事は、Petersen & Pedersen著 The Matrix Cookbook (Nov 15, 2012 edition) のPage 15の内容(公式134〜142)を骨子とし、数理的な証明と応用例を大幅に加筆して再構成した解説記事です。筆者の学習目的で生成したものです。正確な内容は必ず一次情報で確認してください。

1. 序論:構造が生む「微分の歪み」を補正する#

Page 14 の最後で触れた「構造化行列の微分」について、Page 15 では具体的な計算手法と公式が提示されます。

行列の成分同士に拘束条件(対称性 Xij=XjiX_{ij}=X_{ji} や対角性 Xij=0(ij)X_{ij}=0 (i \neq j) など)がある場合、単純な全微分は通用しません。本ページでは、連鎖律(Chain Rule) を用いてこの問題を一般化し、特に実用性の高い 対称行列対角行列 の微分公式を導出します。これらは、正規分布の最尤推定やニューラルネットワークのパラメータ最適化において必須の知識です。


2. 構造行列と連鎖律 (Eq. 134–137)#

まずは、あらゆる構造化行列に対応できる汎用的なフレームワークを定義します。

2.1 構造行列 SijS^{ij} の定義 (Eq. 134)#

行列 AA の成分 AijA_{ij} を微小変化させたとき、行列全体がどう変化するかを表す行列を定義します。

【公式】

AAij=Sij(134)\frac{\partial A}{\partial A_{ij}} = S^{ij} \tag{134}

【解説】

  • 構造なし(一般行列): AijA_{ij} だけが 1 で他は 0。つまり Sij=JijS^{ij} = J^{ij}(シングルエントリ行列)。
  • 対称行列: AijA_{ij} を動かすと AjiA_{ji} も動く。つまり Sij=Jij+JjiS^{ij} = J^{ij} + J^{ji} (ただし i=ji=j の時は重複しないよう調整が必要)。

2.2 行列関数の連鎖律 (Eq. 135–137)#

関数 g(U)g(U) (ただし U=f(X)U=f(X))を XX で微分するための一般公式です。

【公式】

g(U)Xij=Tr[(g(U)U)TUXij](137)\frac{\partial g(U)}{\partial X_{ij}} = \text{Tr} \left[ \left( \frac{\partial g(U)}{\partial U} \right)^T \frac{\partial U}{\partial X_{ij}} \right] \tag{137}

【解説】 これは Page 14 Eq. 133 の再掲・詳細化です。 「求めたい勾配」は、「構造を無視した勾配 gU\frac{\partial g}{\partial U}」と「構造を表す微分 UXij\frac{\partial U}{\partial X_{ij}}」の内積(トレース)として計算されます。これがすべての構造化行列微分の基礎となります。


3. 対称行列の微分 (Symmetric Matrix)#

機械学習で最も頻出する構造化行列です。分散共分散行列、距離行列、カーネル行列などはすべて対称行列です。

3.1 対称化の一般公式 (Eq. 138)#

【公式】

dfdA=[fA]+[fA]Tdiag[fA](138)\frac{df}{dA} = \left[ \frac{\partial f}{\partial A} \right] + \left[ \frac{\partial f}{\partial A} \right]^T - \text{diag} \left[ \frac{\partial f}{\partial A} \right] \tag{138}

ここで [fA]\left[ \frac{\partial f}{\partial A} \right] は、対称性を無視して計算した「仮の勾配(Naive Gradient)」です。

【導出のロジック】 対称行列の構造行列は Sij=Jij+JjiJijJijS^{ij} = J^{ij} + J^{ji} - J^{ij}J^{ij} です(対角成分のダブルカウントを防ぐため)。 これを連鎖律に代入すると、

  1. JijJ^{ij} の寄与 \to そのままの勾配 GG
  2. JjiJ^{ji} の寄与 \to 転置された勾配 GTG^T
  3. JijJij-J^{ij}J^{ij} の寄与 \to 対角成分の引き算 diag(G)-\text{diag}(G) となり、Eq. 138 が導かれます。

3.2 具体的な適用例 (Eq. 139–141)#

【例1: トレースの微分】

Tr(AX)X=A+AT(AI)(139)\frac{\partial \text{Tr}(AX)}{\partial X} = A + A^T - (A \circ I) \tag{139}
  • Naive: Tr(AX)\text{Tr}(AX)XX 微分は ATA^T です(Page 12 Eq. 100)。
  • Symmetric Correction: 公式 Eq. 138 に G=ATG=A^T を代入します。 AT+(AT)Tdiag(AT)=AT+Adiag(A)A^T + (A^T)^T - \text{diag}(A^T) = A^T + A - \text{diag}(A) 原典の (AI)(A \circ I)diag(A)\text{diag}(A) と同じ意味(アダマール積で対角成分を残す)です。

【例2: 行列式の微分】

det(X)X=det(X)(2X1(X1I))(140)\frac{\partial \det(X)}{\partial X} = \det(X) (2X^{-1} - (X^{-1} \circ I)) \tag{140}
  • Naive: det(X)\det(X) の微分は det(X)XT\det(X) X^{-T} です(Page 8 Eq. 49)。XX は対称なので X1X^{-1} と書けます。
  • Correction: G=det(X)X1G = \det(X) X^{-1} とすると、 G+GTdiag(G)=det(X)(X1+X1diag(X1))G + G^T - \text{diag}(G) = \det(X) (X^{-1} + X^{-1} - \text{diag}(X^{-1})) よって 2X1(X1I)2X^{-1} - (X^{-1} \circ I) となります。

【例3: 対数行列式の微分】

lndet(X)X=2X1(X1I)(141)\frac{\partial \ln \det(X)}{\partial X} = 2X^{-1} - (X^{-1} \circ I) \tag{141}
  • ガウス分布の対数尤度関数などで頻出する式です。Eq. 140 を det(X)\det(X) で割るだけで得られます。

4. 対角行列の微分 (Diagonal Matrix)#

ニューラルネットワークのScaling層や、独立成分分析などで現れます。

4.1 対角化の公式 (Eq. 142)#

【公式】

Tr(AX)X=AI(142)\frac{\partial \text{Tr}(AX)}{\partial X} = A \circ I \tag{142}

【解説】 行列 XX が対角行列である場合、非対角成分 Xij(ij)X_{ij} (i \neq j) は定数 0 であり、変数ではありません。 したがって、微分(感度)を持つのは対角成分 XiiX_{ii} だけです。

  • Naive: Tr(AX)\text{Tr}(AX) の微分は ATA^T
  • Diagonal Correction: 変数に対応する成分(対角成分)だけを残し、他を 0 にします(マスク処理)。 ATI=diag(A)A^T \circ I = \text{diag}(A)AA の対角成分は ATA^T の対角成分と同じなので、単に AA の対角成分を取り出す操作になります)。

5. 結論#

Page 15 は、理論と実装の乖離を埋めるための重要なページです。

  1. 「対称行列の勾配は A+ATA+A^T」ではない: しばしば 2A2AA+ATA+A^T と略されますが、厳密には対角成分の重複を引く必要があります(A+ATdiag(A)A+A^T - \text{diag}(A))。
  2. 連鎖律の威力: Eq. 137 の考え方さえあれば、どんな特殊な構造を持つ行列(三角行列、ブロック行列など)でも、自分で微分公式を導くことができます。

次の最終ページ(Page 16)に向けて、行列微分の主要なトピックはここでほぼ完結します。

参考文献#

  1. Petersen, K. B., & Pedersen, M. S. (2012). The Matrix Cookbook. Technical University of Denmark. (Page 15, Eqs 134-142)
  2. Magnus, J. R., & Neudecker, H. (2019). Matrix Differential Calculus. (Symmetric matrix derivatives)

補足:Eq. 138 の直感的理解(スイッチの配線図)#

対称行列の微分公式がなぜ「対角成分を引く」のか、スイッチと電球のアナロジーで復習しましょう。

dfdA=G自分+GTペアdiag(G)重複補正\frac{df}{dA} = \underbrace{G}_{\text{自分}} + \underbrace{G^T}_{\text{ペア}} - \underbrace{\text{diag}(G)}_{\text{重複補正}}
  1. 非対角成分 (iji \neq j):

    • スイッチ AijA_{ij} を押すと、自分 (ijij) とペア (jiji) の2つの電球が点灯します。
    • 感度 = Gij+GjiG_{ij} + G_{ji}
    • これは公式の G+GTG + G^T の部分で正しく計算されます。
  2. 対角成分 (i=ji = j):

    • スイッチ AiiA_{ii} を押すと、自分 (iiii) の電球しか点灯しません(ペアは自分自身)。
    • 単純に G+GTG + G^T を計算すると、Gii+Gii=2GiiG_{ii} + G_{ii} = 2 G_{ii} となり、感度を2倍に過大評価してしまいます。
    • そこで、diag(G)-\text{diag}(G) を引くことで、重複カウントを解消 します (2GiiGii=Gii2G_{ii} - G_{ii} = G_{ii})。

この「引き算」こそが、対称行列の微分を正しく実装するための鍵なのです。

補足:連鎖律 (Eq. 137) の具体的な使い方ガイド#

Eq. 137 は、行列の合成関数 g(f(X))g(f(X)) を微分するための「万能接着剤」です。抽象的に見えますが、以下の3ステップのアルゴリズムとして捉えると、機械的に計算できるようになります。

【連鎖律の3ステップ・レシピ】

  1. 外側の微分 (g/U\partial g / \partial U): UU をただの変数だと思って g(U)g(U) を微分する。
  2. 内側の微分 (U/Xij\partial U / \partial X_{ij}): XX の成分 XijX_{ij} が変化したとき、UU がどう変化するか(構造行列)を求める。
  3. トレースで接着: 上記2つを掛け合わせてトレースを取る。

実践例1:基本公式の再導出 (Tr(AX)\text{Tr}(AX) の微分)#

あえて Eq. 137 を使って、基本公式 Tr(AX)X=AT\frac{\partial \text{Tr}(AX)}{\partial X} = A^T を導いてみましょう。この式が正しく機能することの確認です。

設定:

  • 関数: g(U)=Tr(U)g(U) = \text{Tr}(U)
  • 中身: U=AXU = AX

Step 1: 外側の微分 g(U)=Tr(U)g(U) = \text{Tr}(U) なので、微分は単位行列です。

Aouter=gU=IA_{\text{outer}} = \frac{\partial g}{\partial U} = I

Step 2: 内側の微分 (XijX_{ij} による UU の変化) U=AXU = AX の成分 XijX_{ij} だけを 1 増やしたとき、UU はどう変化するか? XijX_{ij} に掛かっている係数は、行列 AA の第 ii 列目です。

UXij=AJij\frac{\partial U}{\partial X_{ij}} = A J^{ij}

(ここで JijJ^{ij}(i,j)(i, j) 成分だけが 1 の行列。AJijA J^{ij} は「AA の第 ii 列を第 jj 列に置いた行列」のような疎行列になります)

Step 3: トレースで接着 Eq. 137 に代入します。

gXij=Tr[(Aouter)T(AJij)]=Tr[IAJij]=Tr(AJij)\begin{aligned} \frac{\partial g}{\partial X_{ij}} &= \text{Tr} \left[ (A_{\text{outer}})^T \cdot (A J^{ij}) \right] \\ &= \text{Tr} \left[ I \cdot A J^{ij} \right] \\ &= \text{Tr} (A J^{ij}) \end{aligned}

Tr(AJij)\text{Tr}(A J^{ij}) は、行列 AJijA J^{ij} の対角成分の和です。 AJijA J^{ij} の対角成分 (k,k)(k, k)mAkm(Jij)mk\sum_m A_{km} (J^{ij})_{mk}JijJ^{ij}(i,j)(i, j) のみ 1 なので、m=i,k=jm=i, k=j のときだけ値が残ります。 つまり、対角和は AjiA_{ji} になります。

gXij=Aji    gX=AT\frac{\partial g}{\partial X_{ij}} = A_{ji} \implies \frac{\partial g}{\partial X} = A^T

正しく公式が導かれました。


実践例2:少し複雑な合成関数 (線形変換のノルム)#

ニューラルネットワークの層 (Y=WX+bY = WX + \mathbf{b}) の誤差逆伝播などでよく見る形です。

設定:

  • 目的関数: g(U)=UF2=Tr(UTU)g(U) = \| U \|_F^2 = \text{Tr}(U^T U)
  • 中身: U=WXU = WX
  • 求めたいもの: gX\frac{\partial g}{\partial X}

Step 1: 外側の微分 g(U)=Tr(UTU)g(U) = \text{Tr}(U^T U) の微分は、Page 13 Eq. 115 より 2U2U です。

gU=2U=2WX\frac{\partial g}{\partial U} = 2U = 2WX

Step 2: 内側の微分 先ほどと同様、U=WXU=WX なので、

UXij=WJij\frac{\partial U}{\partial X_{ij}} = W J^{ij}

Step 3: トレースで接着

gXij=Tr[(2WX)T(WJij)]=Tr[2XTWTWJij]\begin{aligned} \frac{\partial g}{\partial X_{ij}} &= \text{Tr} \left[ (2WX)^T \cdot (W J^{ij}) \right] \\ &= \text{Tr} \left[ 2X^T W^T W J^{ij} \right] \end{aligned}

ここでトレースの性質 Tr(MJij)=Mji\text{Tr}(M J^{ij}) = M_{ji} (行列 MM(j,i)(j, i) 成分)を使います。 M=2XTWTWM = 2X^T W^T W とすると、

gXij=(2XTWTW)ji=(2WTWX)ij\frac{\partial g}{\partial X_{ij}} = (2X^T W^T W)_{ji} = (2 W^T W X)_{ij}

成分 (i,j)(i, j)(2WTWX)ij(2 W^T W X)_{ij} になるということは、行列全体では:

gX=2WTWX\frac{\partial g}{\partial X} = 2 W^T W X

まとめ#

Eq. 137 の本質は、**「偏微分の成分計算 (XijX_{ij}) を、トレース演算 (Tr\text{Tr}) に置き換えて、行列のまま処理する」**点にあります。

  • UXij\frac{\partial U}{\partial X_{ij}} の部分に、構造(対称性など)や変換(AXAXなど)の情報が集約されます。
  • これにより、複雑な合成関数でも「外側の微分」と「内側の微分」を別々に計算して、最後にガチャンと組み合わせるだけで勾配が得られます。
『The Matrix Cookbook』Page 15完全解読:構造化行列の微分公式と連鎖律
https://ss0832.github.io/posts/20260110_the_matrix_cookbook_9/
Author
ss0832
Published at
2026-01-10
License
CC BY-NC-SA 4.0

Related Posts

『The Matrix Cookbook』Page 16完全解読:テープリッツ行列の微分と構造化行列の総括
2026-01-10
『The Matrix Cookbook』の最終ページ(Page 16)に記載されたテープリッツ行列の微分公式(Eq. 143-144)を完全網羅。対角成分が連動する特殊構造における微分の定義 α(A) と、対称テープリッツ行列への拡張、さらにシリーズ全体の総括を含めた包括的解説書。
『The Matrix Cookbook』Page 14完全解読:逆行列トレース・ベクトルノルム・構造化行列
2026-01-10
『The Matrix Cookbook』Page 14に記載された逆行列を含む複雑なトレース微分(Eq. 124-128)、ベクトルノルムの微分と射影行列(Eq. 129-131)、および構造化行列(対称行列など)に対する微分の連鎖律(Eq. 133)を完全網羅。幾何学的最適化や物理シミュレーションへの応用を含め、数理的背景から実務実装までを体系的に論じる包括的解説書。
『The Matrix Cookbook』Page 8完全解読:行列微分の構造・証明・応用
2026-01-10
『The Matrix Cookbook』Page 8を起点に、行列式の微分(ヤコビの公式)の完全証明(固有値分解・行列指数関数)、対数行列式の凸性解析、そして統計学(多変量正規分布の最尤推定)・物理学(連続体力学)・最適制御(D-最適計画)への具体的応用までを体系的に論じる。公式の羅列を超え、数理的背景と実用性を兼ね備えた包括的な解説書。
『The Matrix Cookbook』Page 9完全解読:複合行列式の微分と逆行列の摂動論
2026-01-10
『The Matrix Cookbook』Page 9に記載された複合関数の行列式微分(二次形式、線形形式)および逆行列の汎用微分公式(Eq. 49-59)を完全網羅。ウィシャート分布の解析、ガウス過程回帰、準ニュートン法への応用を含め、数理的背景から実務実装までを体系的に論じる包括的解説書。
『The Matrix Cookbook』Page 10完全解読:逆行列の成分微分・固有値摂動論・基本形式
2026-01-10
『The Matrix Cookbook』Page 10に記載された逆行列の成分ごとの微分公式、対称行列における固有値・固有ベクトルの微分(摂動論)、および基本的なベクトル・スカラー形式の一次微分(Eq. 60-75)を完全網羅。レイリー商の微分や、構造解析・主成分分析(PCA)への応用を含め、数理的背景から実務実装までを体系的に論じる包括的解説書。
『The Matrix Cookbook』Page 11完全解読:二次形式・高次形式・最小二乗法の微分
2026-01-10
『The Matrix Cookbook』Page 11に記載された二次形式(ベクトル・行列)、最小二乗法関連の微分、複素LMSアルゴリズム、および行列のn乗(高次形式)の微分公式(Eq. 76-91)を完全網羅。統計的推定や制御理論、機械学習の損失関数設計への応用を含め、数理的背景から実務実装までを体系的に論じる包括的解説書。