Home
5060 words
25 minutes
『The Matrix Cookbook』Page 14完全解読:逆行列トレース・ベクトルノルム・構造化行列

last_modified: 2026-01-10

生成AIによる自動生成記事に関する免責事項: 本記事は、Petersen & Pedersen著 The Matrix Cookbook (Nov 15, 2012 edition) のPage 14の内容(公式124〜133)を骨子とし、数理的な証明と応用例を大幅に加筆して再構成した解説記事です。

1. 序論:幾何学と構造へのアプローチ#

Page 14 では、行列微分の応用範囲をさらに広げる3つのトピックを扱います。

  1. 逆行列の複雑なトレース微分: 統計学(特に最尤推定)で現れる「逆行列」と「二次形式」が混ざった複雑な関数の微分です。
  2. ベクトルノルムの微分: 距離 x\|\mathbf{x}\| や正規化ベクトル x/x\mathbf{x}/\|\mathbf{x}\| の微分。これらは物理シミュレーション(バネの力など)や幾何学的最適化で不可欠です。
  3. 構造化行列の微分: 「対称行列」や「テープリッツ行列」など、成分同士が独立でない行列を微分するための一般則(連鎖律)を導入します。

2. 逆行列を含むトレース微分 (Eq. 124–128)#

Page 10 で扱った逆行列微分の応用編です。より複雑な、入れ子になった逆行列構造を扱います。

2.1 基本的な逆行列サンドイッチ (Eq. 124)#

【公式】

XTr(AX1B)=(X1BAX1)T=XTATBTXT(124)\frac{\partial}{\partial X} \text{Tr}(A X^{-1} B) = -(X^{-1} B A X^{-1})^T = -X^{-T} A^T B^T X^{-T} \tag{124}

【解説】 これは Page 10 Eq. 63 の再掲(あるいは変形)です。 d(X1)=X1(dX)X1d(X^{-1}) = -X^{-1} (dX) X^{-1} を代入し、トレースの巡回性を使うことで導かれます。 「逆行列の微分はマイナスがつき、両側から逆行列で挟まれる(1/x1/x21/x \to -1/x^2)」という基本ルール通りです。

2.2 一般化二次形式の逆行列 (Eq. 125–127)#

統計学における一般化最小二乗法(GLS)などで現れる形式です。ここでは B,CB, C は対称行列と仮定されています。

【公式一覧】

XTr[(XTCX)1A]=(CX(XTCX)1)(A+AT)(XTCX)1(125)\frac{\partial}{\partial X} \text{Tr}[(X^T C X)^{-1} A] = -(C X (X^T C X)^{-1}) (A + A^T) (X^T C X)^{-1} \tag{125} XTr[(XTCX)1(XTBX)]=2CX(XTCX)1XTBX(XTCX)1+2BX(XTCX)1(126)\frac{\partial}{\partial X} \text{Tr}[(X^T C X)^{-1} (X^T B X)] = -2 C X (X^T C X)^{-1} X^T B X (X^T C X)^{-1} + 2 B X (X^T C X)^{-1} \tag{126}

※ Eq. 127 は Eq. 126 の分母に定数行列 AA が加わっただけの形式((A+XTCX)1(A + X^T C X)^{-1})であり、構造は Eq. 126 と同一のため省略します。

【Eq. 125 の導出ステップ】 Y=XTCXY = X^T C X と置きます。求めたいのは Tr(Y1A)\text{Tr}(Y^{-1} A) の微分です。

  1. 合成関数の微分: dTr(Y1A)=Tr(Ad(Y1))=Tr(A(Y1dYY1))=Tr(Y1AY1dY)d \text{Tr}(Y^{-1} A) = \text{Tr}(A d(Y^{-1})) = \text{Tr}(A (-Y^{-1} dY Y^{-1})) = -\text{Tr}(Y^{-1} A Y^{-1} dY)
  2. 中身の微分: dY=d(XTCX)dY = d(X^T C X) です。CC は対称なので、Eq. 108 より、この微分(に対応する項)は 2CX2CX の形になります。
  3. 統合: これらを組み合わせると、逆行列 Y1=(XTCX)1Y^{-1} = (X^T C X)^{-1} が両側から掛かり、さらに AA の非対称性を考慮して A+ATA+A^T が現れます。

2.3 行列関数のトレース (Eq. 128)#

【公式】

Tr(sin(X))X=cos(X)T(128)\frac{\partial \text{Tr}(\sin(X))}{\partial X} = \cos(X)^T \tag{128}

【解説】 これは Page 12 Eq. 100 付近の「スカラー関数の拡張則」の具体例です。 行列の各成分に関数を適用する(Element-wise)場合、あるいは行列関数(テイラー展開で定義される)の場合、Tr(F(X))\text{Tr}(F(X)) の微分は f(X)Tf(X)^TffFF の導関数)となります。 (sinx)=cosx(\sin x)' = \cos x なので、そのまま cos(X)T\cos(X)^T となります。


3. ベクトルノルムの微分 (Derivatives of Vector Norms)#

ここは物理シミュレーションや幾何計算において最も実用的なセクションです。ユークリッドノルム(L2ノルム) x2=xTx\|\mathbf{x}\|_2 = \sqrt{\mathbf{x}^T \mathbf{x}} を扱います。

3.1 距離の勾配 (Eq. 129)#

【公式】

xxa2=xaxa2(129)\frac{\partial}{\partial \mathbf{x}} \|\mathbf{x} - \mathbf{a}\|_2 = \frac{\mathbf{x} - \mathbf{a}}{\|\mathbf{x} - \mathbf{a}\|_2} \tag{129}

【解説】 スカラーの微分 (x)=sgn(x)=x/x(|x|)' = \text{sgn}(x) = x/|x| のベクトル版です。 あるいは、u=12uu\nabla \sqrt{u} = \frac{1}{2\sqrt{u}} \nabla u と考えます。 u=xa2u = \|\mathbf{x}-\mathbf{a}\|^2 と置くと、u=2(xa)\nabla u = 2(\mathbf{x}-\mathbf{a}) なので、

12xa2(xa)=xaxa\frac{1}{2\|\mathbf{x}-\mathbf{a}\|} \cdot 2(\mathbf{x}-\mathbf{a}) = \frac{\mathbf{x}-\mathbf{a}}{\|\mathbf{x}-\mathbf{a}\|}

これは、a\mathbf{a} から x\mathbf{x} への**単位ベクトル(方向ベクトル)**を表します。物理的には「バネの復元力の方向」そのものです。

3.2 正規化ベクトルのヤコビアン (Eq. 130)#

【公式】

x(xaxa2)=Ixa2(xa)(xa)Txa23(130)\frac{\partial}{\partial \mathbf{x}} \left( \frac{\mathbf{x} - \mathbf{a}}{\|\mathbf{x} - \mathbf{a}\|_2} \right) = \frac{I}{\|\mathbf{x} - \mathbf{a}\|_2} - \frac{(\mathbf{x} - \mathbf{a})(\mathbf{x} - \mathbf{a})^T}{\|\mathbf{x} - \mathbf{a}\|_2^3} \tag{130}

【解説:射影行列としての意味】 これはベクトル値関数 f(x)=xx\mathbf{f}(\mathbf{x}) = \frac{\mathbf{x}}{\|\mathbf{x}\|} (簡単のため a=0\mathbf{a}=\mathbf{0})の微分(ヤコビ行列)です。 商の微分則をベクトルに適用して導出されます。 この式を整理すると、以下のようになります。

1x(IxxTx2)\frac{1}{\|\mathbf{x}\|} \left( I - \frac{\mathbf{x}\mathbf{x}^T}{\|\mathbf{x}\|^2} \right)

括弧の中身 P=InnTP = I - \mathbf{n}\mathbf{n}^Tn\mathbf{n} は単位ベクトル)は、「ベクトル x\mathbf{x} に垂直な空間への射影行列」 です。 正規化されたベクトルは、長さが変わらず方向だけが変わるため、その変化率は必ず元のベクトルと直交します。この式はその幾何学的性質を見事に表しています。

3.3 ノルム二乗の勾配 (Eq. 131, 132)#

【公式】

x22x=2x(131)\frac{\partial \|\mathbf{x}\|_2^2}{\partial \mathbf{x}} = 2\mathbf{x} \tag{131} XF2X=2X(132)\frac{\partial \|\mathbf{X}\|_F^2}{\partial X} = 2X \tag{132}

【解説】 これらは x2x^2 の微分が 2x2x であることのベクトル版・行列版です。 Eq. 132 は Page 13 Eq. 115 の再掲です。フロベニウスノルムの二乗は Tr(XXT)\text{Tr}(X X^T) なので、微分は 2X2X となります。


4. 構造化行列の微分 (Structured Matrices)#

Eq. 133 は、これまでの公式が通用しないケースに対する「最後の砦」です。

4.1 なぜ構造化行列で公式が壊れるのか?#

これまでの公式(例:Tr(AX)\text{Tr}(AX) の微分は ATA^T)は、行列 XX の全成分 XijX_{ij}互いに独立であることを前提としています。 しかし、XX対称行列Xij=XjiX_{ij} = X_{ji})である場合、XijX_{ij} を動かすと自動的に XjiX_{ji} も動いてしまいます。この「従属関係」を考慮しないと、微分結果は誤りになります(例えば、対角成分以外の感度が2倍になるなど)。

4.2 連鎖律による一般化 (Eq. 133)#

【公式】

dfdAij=klfAklAklAij=Tr[(fA)TAAij](133)\frac{df}{dA_{ij}} = \sum_{kl} \frac{\partial f}{\partial A_{kl}} \frac{\partial A_{kl}}{\partial A_{ij}} = \text{Tr} \left[ \left( \frac{\partial f}{\partial A} \right)^T \frac{\partial A}{\partial A_{ij}} \right] \tag{133}

【解説】 これは、スカラー関数の微分の連鎖律を成分レベルで記述したものです。

  • fAkl\frac{\partial f}{\partial A_{kl}}: 構造を無視して計算した「仮の勾配」(これまでのページの公式で求めたもの)。
  • AklAij\frac{\partial A_{kl}}{\partial A_{ij}}: 構造による拘束条件を表す項。
    • 例えば AA が対称行列なら、kl=ijkl=ij または kl=jikl=ji のとき 1、それ以外 0 となります。

【実践的対処法】 対称行列などの構造化行列を微分する場合、実務的には以下の手順がよく使われます。

  1. とりあえず構造を無視して微分する(行列微分公式を使う)。
  2. 得られた勾配行列 GG を、その構造に合わせて射影・対称化する。
    • 対称行列の場合: 正しい勾配は Gsym=G+GTdiag(G)G_{sym} = G + G^T - \text{diag}(G) のような補正が必要になります(定義によるが、単純に G+GTG+G^T とする場合もあるため注意が必要)。Eq. 133 はこの補正を厳密に行うための基礎式です。

5. 結論#

Page 14 は、行列微分を「現実の問題」に適用するためのツールボックスです。

  1. ベクトルノルム (Eq. 129, 130): 力学シミュレーション(粒子間の距離計算)や最適化(勾配の正規化)の実装においてよく使う公式です。
  2. 射影行列 (Eq. 130): InnTI - \mathbf{n}\mathbf{n}^T という形を見たら、「直交空間への射影だ」と直感できるようになりましょう。
  3. 構造化行列 (Eq. 133): 「対称行列を微分したら計算が合わない」という初心者が陥りやすい罠に対する、理論的な解決策を提供しています。

参考文献#

  1. Petersen, K. B., & Pedersen, M. S. (2012). The Matrix Cookbook. Technical University of Denmark. (Page 14, Eqs 124-133)
  2. Boyd, S., & Vandenberghe, L. (2004). Convex Optimization. Cambridge University Press. (Norms and Derivatives)
  3. Horn, R. A., & Johnson, C. R. (2012). Matrix Analysis. Cambridge University Press. (Structured Matrices)

補足:Page 14 の公式を「スカラー(数値)」で直感的に理解する#

ここでも、スカラーへの翻訳が理解の助けになります。

1. 逆行列のトレース (Eq. 124)#

公式: XTr(AX1B)\frac{\partial}{\partial X} \text{Tr}(A X^{-1} B)

  • スカラー翻訳: abx\frac{ab}{x} の微分
    • 微分: abx2=1xba1x-\frac{ab}{x^2} = - \frac{1}{x} \cdot b \cdot a \cdot \frac{1}{x}
  • 行列の事情:
    • XTATBTXT-X^{-T} A^T B^T X^{-T}(X1BAX1)T-(X^{-1} B A X^{-1})^T です。
    • マイナス符号と「2つの逆行列で挟む」という構造はスカラーと同じです。

2. 距離の微分 (Eq. 129)#

公式: xxa2\frac{\partial}{\partial \mathbf{x}} \|\mathbf{x} - \mathbf{a}\|_2

  • スカラー翻訳: xa|x-a| の微分
    • 微分: sgn(xa)=xaxa\text{sgn}(x-a) = \frac{x-a}{|x-a|}
  • 行列の事情:
    • xaxa2\frac{\mathbf{x}-\mathbf{a}}{\|\mathbf{x}-\mathbf{a}\|_2}。これは単位ベクトルであり、符号関数のベクトル版と解釈できます。

3. 正規化の微分 (Eq. 130)#

公式: x(xx)\frac{\partial}{\partial \mathbf{x}} \left( \frac{\mathbf{x}}{\|\mathbf{x}\|} \right)

  • スカラー翻訳: xx\frac{x}{|x|} の微分
    • 思考: スカラーの場合、x/xx/|x| は定数(1 または -1)なので、微分は 0 です。
    • 行列の事情:
      • 公式の結果は 1x(InnT)\frac{1}{\|\mathbf{x}\|} (I - \mathbf{n}\mathbf{n}^T) です。
      • 1次元の場合、nnT\mathbf{n}\mathbf{n}^T1×1=11 \times 1 = 1 になり、I=1I=1 なので、11=01-1=0
      • なんと、スカラーの直感(微分が0)と完全に一致します!
      • 多次元では「0」ではなく、「半径方向の変化は0だが、回転方向の変化は残る」ため、このような射影行列になります。

Page 14 の公式は、幾何学的な意味(方向、直交性)を数式で表現した美しい例と言えます。

補足:Eq. 130 の幾何学的意味(射影行列と曲率)#

『The Matrix Cookbook』Eq. 130 は、正規化ベクトルの微分を記述する公式ですが、その数式の形には「射影」と「回転」という幾何学の本質が凝縮されています。

x(xx)=1x(IxxTx2)(130)\frac{\partial}{\partial \mathbf{x}} \left( \frac{\mathbf{x}}{\|\mathbf{x}\|} \right) = \frac{1}{\|\mathbf{x}\|} \left( I - \frac{\mathbf{x}\mathbf{x}^T}{\|\mathbf{x}\|^2} \right) \tag{130}

この式が何を意味しているのか、数式を分解して解説します。

1. 数式の解剖:射影行列 PP_{\perp} の出現#

まず、単位ベクトル n=xx\mathbf{n} = \frac{\mathbf{x}}{\|\mathbf{x}\|} を定義して式を整理します。 右辺の括弧内は以下のように書き換えられます。

IxxTx2=I(xx)(xx)T=InnTI - \frac{\mathbf{x}\mathbf{x}^T}{\|\mathbf{x}\|^2} = I - \left( \frac{\mathbf{x}}{\|\mathbf{x}\|} \right) \left( \frac{\mathbf{x}}{\|\mathbf{x}\|} \right)^T = I - \mathbf{n}\mathbf{n}^T

これにより、ヤコビ行列 JJ は驚くほどシンプルな構造になります。

J=1xスケーリング×(InnT)射影行列 PJ = \underbrace{\frac{1}{\|\mathbf{x}\|}}_{\text{スケーリング}} \times \underbrace{(I - \mathbf{n}\mathbf{n}^T)}_{\text{射影行列 } P_{\perp}}

ここで現れた行列 P=InnTP_{\perp} = I - \mathbf{n}\mathbf{n}^T は、「ベクトル x\mathbf{x} に垂直な空間への射影行列」 です。

2. なぜ「垂直な空間」への射影なのか?#

微分の意味を考えるために、入力 x\mathbf{x} に微小な変化 dxd\mathbf{x} を加えたとき、正規化ベクトル n\mathbf{n} がどう変化するかを見てみましょう。

dn=Pdx=(InnT)dx=dxn(nTdx)d\mathbf{n} = P_{\perp} d\mathbf{x} = (I - \mathbf{n}\mathbf{n}^T) d\mathbf{x} = d\mathbf{x} - \mathbf{n}(\mathbf{n}^T d\mathbf{x})

入力の変化 dxd\mathbf{x} は、2つの成分に分解できます。

  1. 平行成分 (dxd\mathbf{x}_{\parallel}): x\mathbf{x} の長さを変える変化(n\mathbf{n} 方向)。
  2. 垂直成分 (dxd\mathbf{x}_{\perp}): x\mathbf{x} の向きを変える変化(n\mathbf{n} と直交)。

この射影行列 PP_{\perp} は、以下のフィルタとして機能します。

  • 平行成分: nTdx0\mathbf{n}^T d\mathbf{x}_{\parallel} \neq 0 なので、dxdx=0d\mathbf{x}_{\parallel} - d\mathbf{x}_{\parallel} = \mathbf{0}。つまり、長さの変化は無視されます(正規化されるため)。
  • 垂直成分: nTdx=0\mathbf{n}^T d\mathbf{x}_{\perp} = 0 なので、dx0=dxd\mathbf{x}_{\perp} - \mathbf{0} = d\mathbf{x}_{\perp}。つまり、向きの変化だけがそのまま残ります

3. 係数 1/x1/\|\mathbf{x}\| の意味:曲率と半径#

式の先頭に掛かっている 1x\frac{1}{\|\mathbf{x}\|} は、幾何学的には 「回転半径の逆数(曲率)」 を表しています。

円運動をイメージしてください。

  • 半径 r=xr = \|\mathbf{x}\| の円周上を、距離 ds=dxds = \|d\mathbf{x}_{\perp}\| だけ動いたとき、角度の変化 dθd\theta はどれくらいでしょうか?
  • 関係式は ds=rdθds = r d\theta なので、dθ=1rdsd\theta = \frac{1}{r} ds です。

正規化ベクトルの微分もこれと同じです。

dn=1xdx\|d\mathbf{n}\| = \frac{1}{\|\mathbf{x}\|} \|d\mathbf{x}_{\perp}\|
  • dx\|d\mathbf{x}_{\perp}\|: 横方向への移動距離
  • 1/x1/\|\mathbf{x}\|: 半径の逆数
  • dn\|d\mathbf{n}\|: 単位球面上での移動量(角度変化)

つまり Eq. 130 は、「正規化ベクトルの変化率は、向きの変化成分だけを取り出し(PP_{\perp})、それを現在の半径で割って角度変化に変換する(1/r1/r」という物理的事実を記述しているのです。

まとめ#

Eq. 130 のヤコビ行列は、以下の2つの要素の積です。

  1. 幾何学的フィルタ (PP_{\perp}): 長さの変化を捨て、向きの変化だけを残す。
  2. 幾何学的スケーリング (1/x1/\|\mathbf{x}\|): 原点から遠いほど、同じ移動距離でも角度は変わりにくくなる。

この式は、勾配法において「重みベクトルの方向だけを最適化したい(Weight Normalization)」といった場面で、勾配がどのように補正されるかを理解する鍵となります。

解説:射影行列の一般化(InnTI - nn^T から B行列へ)#

質問者様が提示された式 P=IBT(BBT)1BP = I - B^T (BB^T)^{-1} B は、まさに P=InnTP = I - \mathbf{n}\mathbf{n}^T「複数の拘束条件(方向)を同時に扱う」 形に拡張したものです。

分子シミュレーションや拘束付き最適化において、この「B行列を使った射影」が何を意味するのかを解説します。

1. 数学的なつながり:nn が増えただけ#

まず、最も単純なケースで式が一致することを確認しましょう。

ケース1: 拘束が1つだけの場合(ベクトル n\mathbf{n} 行列 BB が、たった1つの行ベクトル nT\mathbf{n}^T で構成されているとします(B=nTB = \mathbf{n}^T)。 このとき、BBTBB^T はスカラー(内積 nTn=n2\mathbf{n}^T \mathbf{n} = \|\mathbf{n}\|^2)になります。 式に代入すると:

P=I(nT)T(nTn)1(nT)=In1n2nT=InnTn2\begin{aligned} P &= I - (\mathbf{n}^T)^T (\mathbf{n}^T \mathbf{n})^{-1} (\mathbf{n}^T) \\ &= I - \mathbf{n} \frac{1}{\|\mathbf{n}\|^2} \mathbf{n}^T \\ &= I - \frac{\mathbf{n}\mathbf{n}^T}{\|\mathbf{n}\|^2} \end{aligned}

もし n\mathbf{n} が単位ベクトル(n=1\|\mathbf{n}\|=1)なら、完全に InnTI - \mathbf{n}\mathbf{n}^T と一致します。

ケース2: 拘束が複数の場合(行列 BB 行列 BB が複数の行ベクトル b1T,b2T,\mathbf{b}_1^T, \mathbf{b}_2^T, \dots を束ねたものだとします。

B=[b1Tb2T]B = \begin{bmatrix} — \mathbf{b}_1^T — \\ — \mathbf{b}_2^T — \\ \vdots \end{bmatrix}

このとき、P=IBT(BBT)1BP = I - B^T (BB^T)^{-1} B は、「ベクトル b1,b2,\mathbf{b}_1, \mathbf{b}_2, \dots が張る空間(Row Space)にある成分をすべて除去し、それら全てに垂直な空間(Null Space)だけを残す射影行列」 となります。

2. 「B行列」の正体と物理的意味#

分子シミュレーションの文脈、特に WilsonのB行列(内部座標 qq のデカルト座標 xx に対する微分 Bij=qi/xjB_{ij} = \partial q_i / \partial x_j)として考えると、この射影の意味がより鮮明になります。

  • nnT\mathbf{n}\mathbf{n}^T の意味:
    • 「ある1つの方向(例:結合軸方向)の成分を捨てる」
    • 応用例: 結合距離を固定する(RATTLE/SHAKEなど)。
  • BT(BBT)1BB^T (BB^T)^{-1} B の意味:
    • 「内部座標の定義に関わるすべての方向(全結合、全角度の変化方向)の成分をまとめて捨てる」
    • 応用例:
      1. 並進・回転の除去: 全体の並進や回転に対応するモードをB行列に含めて射影することで、内部運動だけを取り出す(Eckart条件)。
      2. 冗長な座標の処理: 冗長内部座標系における逆変換(G-inverse)などで現れる。

3. (BBT)1(BB^T)^{-1} は何をしている?#

単に bibiT\sum \mathbf{b}_i \mathbf{b}_i^T と足し合わせるのではなく、間に (BBT)1(BB^T)^{-1}(Gram行列の逆行列)挟む理由は、「基底ベクトル bi\mathbf{b}_i 同士が直交していない(重なっている)から」 です。

  • InnTI - \mathbf{n}\mathbf{n}^T: n\mathbf{n} が1本なので、自分の長さで割るだけで正規化完了。
  • IBT(BBT)1BI - B^T (BB^T)^{-1} B: bi\mathbf{b}_i 同士が斜めに交わっている場合、単純な足し算では重複カウントしてしまいます。(BBT)1(BB^T)^{-1} はこの「重なり(Overlap)」を補正して、きれいに直交化する役割(正規直交化の一般化)を果たしています。

結論#

Psingle=InnTnTn多次元化Pmulti=IBT(BBT)1BP_{\text{single}} = I - \frac{\mathbf{n}\mathbf{n}^T}{\mathbf{n}^T\mathbf{n}} \quad \xrightarrow{\text{多次元化}} \quad P_{\text{multi}} = I - B^T (B B^T)^{-1} B

両者は全く同じ概念です。 「指定された方向(n\mathbf{n} または BB の行)への成分をきれいに削ぎ落とし、残りの成分(垂直成分)だけを取り出す」 という幾何学的な操作を表しています。

補足:構造化行列の微分と連鎖律 (Eq. 133)#

『The Matrix Cookbook』Eq. 133 は、対称行列や対角行列など、成分同士が独立ではない**「構造化行列(Structured Matrix)」**を扱うための、非常に重要な公式です。

通常の行列微分公式がなぜ通用しないのか、そして Eq. 133 がどのようにそれを解決するのかを解説します。

1. なぜこれが必要なのか?(直感的なイメージ)#

これまでの公式(例:Tr(AX)X=AT\frac{\partial \text{Tr}(AX)}{\partial X} = A^T)は、行列 XX の全ての成分 X11,X12,X_{11}, X_{12}, \dots「独立した別々の変数(スイッチ)」 であることを前提としています。

しかし、対称行列 (Xij=XjiX_{ij} = X_{ji}) の場合、話が変わります。

  • 独立の場合: スイッチ X12X_{12} を押しても、電球 X21X_{21} は点きません。
  • 対称行列の場合: スイッチ X12X_{12} を押すと、配線が繋がっているため、電球 X21X_{21}同時に点灯します。

つまり、ある成分を操作したときの影響範囲が、その成分単体だけではないのです。この「連動」を考慮しないと、微分の計算結果(勾配)は誤ったものになります。

2. 公式の解剖#

Eq. 133 は、この連動性を考慮した**「微分の連鎖律」**です。

dfdAij=klfAkl①仮の勾配AklAij②連動ルール(133)\frac{df}{dA_{ij}} = \sum_{kl} \underbrace{\frac{\partial f}{\partial A_{kl}}}_{\text{①仮の勾配}} \underbrace{\frac{\partial A_{kl}}{\partial A_{ij}}}_{\text{②連動ルール}} \tag{133}
  • ① 仮の勾配: 構造を無視して、既存の公式で求めた勾配。「もし全成分が独立だったら?」という値。
  • ② 連動ルール: 成分 AijA_{ij} を動かしたとき、他のどの成分 AklA_{kl} が連動して動くか?(0 または 1)。

結論: 「スイッチ AijA_{ij} の本当の感度を知りたければ、そのスイッチで反応する全ての電球 (klkl) の感度を合計しなさい」ということです。

3. 具体例:対称行列の微分#

関数 f=Tr(BX)f = \text{Tr}(B X) を、対称行列 XX (X=XTX=X^T) で微分してみましょう。

Step 1: 仮の勾配を求める とりあえず構造を無視して微分します。

G=fXnaive=BTG = \frac{\partial f}{\partial X_{\text{naive}}} = B^T

成分で書くと Gkl=(BT)kl=BlkG_{kl} = (B^T)_{kl} = B_{lk} です。

Step 2: 連動ルールを確認して合計する Eq. 133 に従って計算します。

  • ケースA: 対角成分 XiiX_{ii} の場合
    • 連動するのは自分自身 (k=i,l=ik=i, l=i) だけです。
    • 結果: Gii×1=BiiG_{ii} \times 1 = B_{ii}
  • ケースB: 非対角成分 XijX_{ij} (iji \neq j) の場合
    • 自分 (k=i,l=jk=i, l=j) と、対称位置 (k=j,l=ik=j, l=i) の2箇所が動きます。
    • 結果: Gij×1+Gji×1=Bji+BijG_{ij} \times 1 + G_{ji} \times 1 = B_{ji} + B_{ij}

Step 3: 行列の形にまとめる 得られた正しい勾配を行列形式で書くと以下のようになります。

dfdXsym=B+BTdiag(B)\frac{df}{dX_{sym}} = B + B^T - \text{diag}(B)

(対角成分は BiiB_{ii} だけなのに、B+BTB+B^T だと 2Bii2B_{ii} とダブルカウントされてしまうため、重複分を引きます)

4. 他のパターンの例#

この考え方は、あらゆる構造化行列に応用できます。

  • 対角行列 (X=diag(x)X = \text{diag}(\mathbf{x}))
    • 連動ルール: 非対角成分は定数(0)なので動きません。
    • 結果: 仮の勾配 GG の対角成分だけを取り出します。 dfdX=diag(G)=IG\frac{df}{dX} = \text{diag}(G) = I \circ G
  • 成分がすべて同じ行列 (Xij=xX_{ij} = x)
    • 連動ルール: 1つの xx を動かすと、全成分 XklX_{kl} が動きます。
    • 結果: 仮の勾配 GG の全成分の合計になります。 dfdx=klGkl\frac{df}{dx} = \sum_{kl} G_{kl}

まとめ#

構造化行列の微分で迷ったら、以下の手順を踏んでください。

  1. Naive Gradient: 構造を忘れて、公式通りに微分する。
  2. Projection: 行列の構造(対称性など)に合わせて、得られた勾配の成分を足し合わせたり、マスクしたりする。

Eq. 133 は、この「足し合わせ」の理論的根拠を与えているのです。

『The Matrix Cookbook』Page 14完全解読:逆行列トレース・ベクトルノルム・構造化行列
https://ss0832.github.io/posts/20260110_the_matrix_cookbook_8/
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 15完全解読:構造化行列の微分公式と連鎖律
2026-01-10
『The Matrix Cookbook』Page 15に記載された構造化行列(対称行列・対角行列)の微分公式(Eq. 134-142)を完全網羅。構造行列 S^ij の定義、一般的な連鎖律、および対称行列における「対角成分の重複補正」の数理的背景から、共分散行列推定や対角スケーリング層への応用までを体系的に論じる包括的解説書。
『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)を完全網羅。統計的推定や制御理論、機械学習の損失関数設計への応用を含め、数理的背景から実務実装までを体系的に論じる包括的解説書。