証明集 第13章: 構造行列の微分

Proofs Chapter 13: Derivatives of Structured Matrices

本章では構造行列(対称行列、Toeplitz行列、三角行列など)の微分を証明する。 実際の応用では行列が任意の形状を取ることは稀で、対称性や帯構造などの制約を持つ。 共分散行列(対称正定値)の推定、時系列のToeplitz構造を利用した効率的推定、 Cholesky分解を用いた数値的に安定な最適化など、構造を考慮した微分は 計算効率と数値安定性の両面で重要である。 vec演算子とKronecker積を用いた体系的な導出法を示す。

前提知識: 第5章(トレースの微分)第4章(行列微分の基本公式)関連する章: 第15章(特殊行列の微分)

13. 構造行列の微分

本章の前提条件
本章の公式は、特に断りのない限り、以下の条件下で成立する:
  • すべての公式は分母レイアウト(denominator layout)に基づく
  • 構造行列では成分間に制約があるため、独立変数の数が減少する
  • $\circ$ はHadamard積(要素ごとの積)を表す

特殊な構造を持つ行列(対称、Toeplitz、三角行列など)に関する微分公式を導出する。構造行列では成分間に制約があり、独立変数の数が減るため、通常の行列微分公式をそのまま適用できない。

構造行列の基本理論

まず構造行列の微分の一般的な枠組みを導出し、一般行列・対称行列の場合に適用する。

13.1 構造行列による微分の一般公式

公式:$\displaystyle\dfrac{df}{dA_{ij}} = \displaystyle\sum_{kl} \displaystyle\dfrac{\partial f}{\partial A_{kl}} \displaystyle\dfrac{\partial A_{kl}}{\partial A_{ij}} = \text{tr}\left[\left(\displaystyle\dfrac{\partial f}{\partial \boldsymbol{A}}\right)^\top \boldsymbol{S}^{ij}\right]$
条件:$f(\boldsymbol{A})$ はスカラ関数、$\boldsymbol{S}^{ij} = \displaystyle\dfrac{\partial \boldsymbol{A}}{\partial A_{ij}}$ は構造行列
証明

スカラ関数 $f(\boldsymbol{A})$ を考える。$\boldsymbol{A}$ が構造行列である場合、成分間に制約があり、独立変数 $A_{ij}$ を変化させると他の成分も連動して変化する。

連鎖律(1.26)を適用する。$A_{ij}$ を変化させたとき、それに連動して変化するすべての成分 $A_{kl}$ を通じて $f$ がどう変化するかを考える。

\begin{equation}\dfrac{df}{dA_{ij}} = \displaystyle\sum_{k,l} \dfrac{\partial f}{\partial A_{kl}} \dfrac{\partial A_{kl}}{\partial A_{ij}} \label{eq:13-1-1}\end{equation}

構造行列 $\boldsymbol{S}^{ij}$ を定義する。これは「$A_{ij}$ を1だけ変化させたとき、行列 $\boldsymbol{A}$ 全体がどう変化するか」を表す行列である。

\begin{equation}\boldsymbol{S}^{ij} = \dfrac{\partial \boldsymbol{A}}{\partial A_{ij}} \label{eq:13-1-2}\end{equation}

$\boldsymbol{S}^{ij}$ の $(k,l)$ 成分は次のようになる。

\begin{equation}(\boldsymbol{S}^{ij})_{kl} = \dfrac{\partial A_{kl}}{\partial A_{ij}} \label{eq:13-1-3}\end{equation}

$\eqref{eq:13-1-1}$ を行列形式で書き換える。勾配行列 $\boldsymbol{G} = \displaystyle\dfrac{\partial f}{\partial \boldsymbol{A}}$ を導入すると、$G_{kl} = \displaystyle\dfrac{\partial f}{\partial A_{kl}}$ である。

\begin{equation}\dfrac{df}{dA_{ij}} = \displaystyle\sum_{k,l} G_{kl} (\boldsymbol{S}^{ij})_{kl} \label{eq:13-1-4}\end{equation}

行列の成分ごとの積の和はトレースで表現できる。一般に、$\displaystyle\sum_{k,l} P_{kl} Q_{kl} = \text{tr}(\boldsymbol{P}^\top \boldsymbol{Q})$ が成り立つ。

\begin{equation}\displaystyle\sum_{k,l} G_{kl} (\boldsymbol{S}^{ij})_{kl} = \text{tr}(\boldsymbol{G}^\top \boldsymbol{S}^{ij}) \label{eq:13-1-5}\end{equation}

$\eqref{eq:13-1-5}$ を $\eqref{eq:13-1-4}$ に代入して、最終結果を得る。

\begin{equation}\dfrac{df}{dA_{ij}} = \text{tr}\left[\left(\dfrac{\partial f}{\partial \boldsymbol{A}}\right)^\top \boldsymbol{S}^{ij}\right] \label{eq:13-1-6}\end{equation}

補足:$\eqref{eq:13-1-6}$ は構造行列に対する微分の一般的な枠組みを与える。構造行列の種類(対称、三角、Toeplitz など)に応じて $\boldsymbol{S}^{ij}$ の形が決まる。

13.2 一般行列の構造行列

公式:$\boldsymbol{S}^{ij} = \displaystyle\dfrac{\partial \boldsymbol{A}}{\partial A_{ij}} = \boldsymbol{J}^{ij}$
条件:$\boldsymbol{A}$ は特殊な構造を持たない一般行列、$\boldsymbol{J}^{ij}$ は $(i,j)$ 成分のみ 1 の単一成分行列
証明

一般行列 $\boldsymbol{A} \in \mathbb{R}^{m \times n}$ を考える。一般行列ではすべての成分が独立であり、成分間に制約がない。

$\boldsymbol{A}$ の成分 $A_{kl}$ を独立変数 $A_{ij}$ で偏微分することを考える。$A_{ij}$ を変化させても他の成分は変化しないので、次のようになる。

\begin{equation}\dfrac{\partial A_{kl}}{\partial A_{ij}} = \begin{cases} 1 & (k = i \text{ かつ } l = j) \\ 0 & (\text{それ以外}) \end{cases} \label{eq:13-2-1}\end{equation}

$\eqref{eq:13-2-1}$ をKroneckerのデルタを用いて表す。

\begin{equation}\dfrac{\partial A_{kl}}{\partial A_{ij}} = \delta_{ik} \delta_{jl} \label{eq:13-2-2}\end{equation}

ここで $\delta_{ik}$ は $i = k$ のとき 1、それ以外で 0 である。

単一成分行列 $\boldsymbol{J}^{ij}$ を定義する。これは $(i,j)$ 成分のみが 1 で、他の成分がすべて 0 の行列である。

\begin{equation}(\boldsymbol{J}^{ij})_{kl} = \delta_{ik} \delta_{jl} \label{eq:13-2-3}\end{equation}

$\eqref{eq:13-2-2}$ と $\eqref{eq:13-2-3}$ を比較すると、両者は一致する。

\begin{equation}\dfrac{\partial A_{kl}}{\partial A_{ij}} = (\boldsymbol{J}^{ij})_{kl} \label{eq:13-2-4}\end{equation}

$\eqref{eq:13-2-4}$ はすべての $(k,l)$ について成り立つので、行列形式で最終結果を得る。

\begin{equation}\boldsymbol{S}^{ij} = \dfrac{\partial \boldsymbol{A}}{\partial A_{ij}} = \boldsymbol{J}^{ij} \label{eq:13-2-5}\end{equation}

補足:一般行列の場合、構造行列 $\boldsymbol{S}^{ij}$ は単に単一成分行列 $\boldsymbol{J}^{ij}$ となる。これは最も単純な場合であり、構造による制約がないことを反映している。

13.3 対称行列の構造行列

公式:$\boldsymbol{S}^{ij} = \displaystyle\dfrac{\partial \boldsymbol{A}}{\partial A_{ij}} = \boldsymbol{J}^{ij} + \boldsymbol{J}^{ji} - \delta_{ij}\boldsymbol{J}^{ij}$
条件:$\boldsymbol{A}$ は対称行列($\boldsymbol{A} = \boldsymbol{A}^\top$)
証明

対称行列 $\boldsymbol{A} \in \mathbb{R}^{n \times n}$ を考える。対称性の条件より、すべての $i, j$ に対して次の制約が成り立つ。

\begin{equation}A_{ij} = A_{ji} \label{eq:13-3-1}\end{equation}

独立変数 $A_{ij}$($i \leq j$ とする)を変化させたとき、$\boldsymbol{A}$ の成分 $A_{kl}$ がどう変化するかを場合分けして考える。

【場合1】$i \neq j$ のとき(非対角成分)

$A_{ij}$ を変化させると、制約 $\eqref{eq:13-3-1}$ により $A_{ji}$ も同時に変化する。

\begin{equation}\dfrac{\partial A_{kl}}{\partial A_{ij}} = \begin{cases} 1 & (k = i, l = j) \\ 1 & (k = j, l = i) \\ 0 & (\text{それ以外}) \end{cases} \label{eq:13-3-2}\end{equation}

【場合2】$i = j$ のとき(対角成分)

$A_{ii}$ を変化させても、$A_{ii} = A_{ii}$ という制約は自明に満たされる。他の成分は変化しない。

\begin{equation}\dfrac{\partial A_{kl}}{\partial A_{ii}} = \begin{cases} 1 & (k = i, l = i) \\ 0 & (\text{それ以外}) \end{cases} \label{eq:13-3-3}\end{equation}

$\eqref{eq:13-3-2}$ と $\eqref{eq:13-3-3}$ を統一的に書く。Kroneckerのデルタを用いると次のようになる。

\begin{equation}\dfrac{\partial A_{kl}}{\partial A_{ij}} = \delta_{ik}\delta_{jl} + \delta_{il}\delta_{jk} - \delta_{ij}\delta_{ik}\delta_{jl} \label{eq:13-3-4}\end{equation}

$\eqref{eq:13-3-4}$ の各項を確認する。

  • 第1項 $\delta_{ik}\delta_{jl}$:$(k,l) = (i,j)$ のときに 1
  • 第2項 $\delta_{il}\delta_{jk}$:$(k,l) = (j,i)$ のときに 1
  • 第3項 $-\delta_{ij}\delta_{ik}\delta_{jl}$:$i = j$ かつ $(k,l) = (i,i)$ のときに $-1$(対角成分の重複を補正)

$\eqref{eq:13-3-4}$ を行列形式で書く。単一成分行列の定義 $(\boldsymbol{J}^{pq})_{kl} = \delta_{pk}\delta_{ql}$ を用いる。

\begin{equation}(\boldsymbol{S}^{ij})_{kl} = (\boldsymbol{J}^{ij})_{kl} + (\boldsymbol{J}^{ji})_{kl} - \delta_{ij}(\boldsymbol{J}^{ij})_{kl} \label{eq:13-3-5}\end{equation}

$\eqref{eq:13-3-5}$ はすべての $(k,l)$ について成り立つので、最終結果を得る。

\begin{equation}\boldsymbol{S}^{ij} = \boldsymbol{J}^{ij} + \boldsymbol{J}^{ji} - \delta_{ij}\boldsymbol{J}^{ij} \label{eq:13-3-6}\end{equation}

補足:$\eqref{eq:13-3-6}$ を場合分けすると、$i \neq j$ のとき $\boldsymbol{S}^{ij} = \boldsymbol{J}^{ij} + \boldsymbol{J}^{ji}$(2つの位置が同時に変化)、$i = j$ のとき $\boldsymbol{S}^{ii} = \boldsymbol{J}^{ii}$(対角成分のみ変化)となる。

13.4 対称行列による微分

公式:$\displaystyle\dfrac{\partial f}{\partial \boldsymbol{A}}\bigg|_{\text{sym}} = \displaystyle\dfrac{\partial f}{\partial \boldsymbol{A}}\bigg|_{\text{gen}} + \left(\displaystyle\dfrac{\partial f}{\partial \boldsymbol{A}}\bigg|_{\text{gen}}\right)^\top - \text{diag}\left(\displaystyle\dfrac{\partial f}{\partial \boldsymbol{A}}\bigg|_{\text{gen}}\right)$
条件:$f(\boldsymbol{A})$ はスカラ関数、$\boldsymbol{A}$ は対称行列
証明

スカラ関数 $f(\boldsymbol{A})$ を考える。$\boldsymbol{A}$ が対称行列のとき、独立変数は下三角部分(対角を含む)のみである。

13.1 の $\eqref{eq:13-1-6}$ より、構造行列を用いた微分公式は次のようになる。

\begin{equation}\dfrac{df}{dA_{ij}} = \text{tr}\left[\left(\dfrac{\partial f}{\partial \boldsymbol{A}}\right)^\top \boldsymbol{S}^{ij}\right] \label{eq:13-4-1}\end{equation}

一般行列として計算した勾配を $\boldsymbol{G} = \displaystyle\dfrac{\partial f}{\partial \boldsymbol{A}}\big|_{\text{gen}}$ とする。トレースの性質 $\text{tr}(\boldsymbol{G}^\top \boldsymbol{J}^{pq}) = G_{pq}$ を用いる。

\begin{equation}\text{tr}(\boldsymbol{G}^\top \boldsymbol{J}^{pq}) = \displaystyle\sum_{k,l} G_{kl} (\boldsymbol{J}^{pq})_{kl} = \displaystyle\sum_{k,l} G_{kl} \delta_{pk}\delta_{ql} = G_{pq} \label{eq:13-4-2}\end{equation}

13.3 の $\eqref{eq:13-3-6}$ より、対称行列の構造行列は $\boldsymbol{S}^{ij} = \boldsymbol{J}^{ij} + \boldsymbol{J}^{ji} - \delta_{ij}\boldsymbol{J}^{ij}$ である。これを $\eqref{eq:13-4-1}$ に代入する。

\begin{equation}\dfrac{df}{dA_{ij}} = \text{tr}\left[\boldsymbol{G}^\top (\boldsymbol{J}^{ij} + \boldsymbol{J}^{ji} - \delta_{ij}\boldsymbol{J}^{ij})\right] \label{eq:13-4-3}\end{equation}

トレースの線形性より、$\eqref{eq:13-4-3}$ を展開する。

\begin{equation}\dfrac{df}{dA_{ij}} = \text{tr}(\boldsymbol{G}^\top \boldsymbol{J}^{ij}) + \text{tr}(\boldsymbol{G}^\top \boldsymbol{J}^{ji}) - \delta_{ij}\text{tr}(\boldsymbol{G}^\top \boldsymbol{J}^{ij}) \label{eq:13-4-4}\end{equation}

$\eqref{eq:13-4-2}$ を用いて各項を計算する。

\begin{equation}\text{tr}(\boldsymbol{G}^\top \boldsymbol{J}^{ij}) = G_{ij} \label{eq:13-4-5}\end{equation}

\begin{equation}\text{tr}(\boldsymbol{G}^\top \boldsymbol{J}^{ji}) = G_{ji} \label{eq:13-4-6}\end{equation}

$\eqref{eq:13-4-5}$ と $\eqref{eq:13-4-6}$ を $\eqref{eq:13-4-4}$ に代入する。

\begin{equation}\dfrac{df}{dA_{ij}} = G_{ij} + G_{ji} - \delta_{ij} G_{ij} \label{eq:13-4-7}\end{equation}

$\eqref{eq:13-4-7}$ を行列形式で書く。対称行列の微分 $\displaystyle\dfrac{\partial f}{\partial \boldsymbol{A}}\big|_{\text{sym}}$ の $(i,j)$ 成分が $\eqref{eq:13-4-7}$ で与えられる。

\begin{equation}\left(\dfrac{\partial f}{\partial \boldsymbol{A}}\bigg|_{\text{sym}}\right)_{ij} = G_{ij} + G_{ji} - \delta_{ij} G_{ij} \label{eq:13-4-8}\end{equation}

$\eqref{eq:13-4-8}$ の各項を行列で表現する。

  • $G_{ij}$ は $\boldsymbol{G}$ の $(i,j)$ 成分
  • $G_{ji}$ は $\boldsymbol{G}^\top$ の $(i,j)$ 成分
  • $\delta_{ij} G_{ij}$ は対角行列 $\text{diag}(\boldsymbol{G})$ の $(i,j)$ 成分

したがって、最終結果を得る。

\begin{equation}\dfrac{\partial f}{\partial \boldsymbol{A}}\bigg|_{\text{sym}} = \boldsymbol{G} + \boldsymbol{G}^\top - \text{diag}(\boldsymbol{G}) \label{eq:13-4-9}\end{equation}

$\boldsymbol{G} = \displaystyle\dfrac{\partial f}{\partial \boldsymbol{A}}\big|_{\text{gen}}$ を代入して書き直す。

\begin{equation}\dfrac{\partial f}{\partial \boldsymbol{A}}\bigg|_{\text{sym}} = \dfrac{\partial f}{\partial \boldsymbol{A}}\bigg|_{\text{gen}} + \left(\dfrac{\partial f}{\partial \boldsymbol{A}}\bigg|_{\text{gen}}\right)^\top - \text{diag}\left(\dfrac{\partial f}{\partial \boldsymbol{A}}\bigg|_{\text{gen}}\right) \label{eq:13-4-10}\end{equation}

補足:文献によっては $\dfrac{1}{2}(\boldsymbol{G} + \boldsymbol{G}^\top)$ を「対称行列の勾配」として紹介することがあるが、これは単なる対称化(symmetrization)であり、対称行列の制約下での正しい勾配 $\eqref{eq:13-4-10}$ とは異なる。具体的には、対称化では対角成分が $\dfrac{1}{2}G_{ii} + \dfrac{1}{2}G_{ii} = G_{ii}$ となり $\eqref{eq:13-4-10}$ と一致するが、これは偶然であり、導出の根拠が異なる。制約付き最適化(例:共分散行列の推定)では $\eqref{eq:13-4-10}$ を用いるべきである。

13.1 vec演算子と関連行列

行列を列ベクトルに変換する vec 演算子と関連する行列の性質を証明する。

13.5 行列積のベクトル化

公式:$\text{vec}(\boldsymbol{A}\boldsymbol{X}\boldsymbol{B}) = (\boldsymbol{B}^\top \otimes \boldsymbol{A})\,\text{vec}(\boldsymbol{X})$
条件:$\boldsymbol{A} \in \mathbb{R}^{m \times n}$、$\boldsymbol{X} \in \mathbb{R}^{n \times p}$、$\boldsymbol{B} \in \mathbb{R}^{p \times q}$
証明

行列積 $\boldsymbol{C} = \boldsymbol{A}\boldsymbol{X}\boldsymbol{B}$ を考える。$\boldsymbol{C} \in \mathbb{R}^{m \times q}$ である。

$\boldsymbol{C}$ の $(i,j)$ 成分を計算する。行列積の定義より次のようになる。

\begin{equation}C_{ij} = \displaystyle\sum_{k=0}^{n-1} \displaystyle\sum_{l=0}^{p-1} A_{ik} X_{kl} B_{lj} \label{eq:13-7-1}\end{equation}

vec 演算子の定義を確認する。$\text{vec}(\boldsymbol{X})$ は $\boldsymbol{X}$ の列を縦に並べた $np$ 次元ベクトルである。$X_{kl}$ は $\text{vec}(\boldsymbol{X})$ の位置 $k + nl$ にある。

\begin{equation}[\text{vec}(\boldsymbol{X})]_{k + nl} = X_{kl} \label{eq:13-7-2}\end{equation}

同様に、$\text{vec}(\boldsymbol{C})$ において $C_{ij}$ は位置 $i + mj$ にある。

\begin{equation}[\text{vec}(\boldsymbol{C})]_{i + mj} = C_{ij} \label{eq:13-7-3}\end{equation}

Kronecker積 $\boldsymbol{B}^\top \otimes \boldsymbol{A}$ の定義を確認する。$\boldsymbol{B}^\top \in \mathbb{R}^{q \times p}$、$\boldsymbol{A} \in \mathbb{R}^{m \times n}$ なので、$\boldsymbol{B}^\top \otimes \boldsymbol{A} \in \mathbb{R}^{mq \times np}$ である。

\begin{equation}\boldsymbol{B}^\top \otimes \boldsymbol{A} = \begin{pmatrix} B_{00} \boldsymbol{A} & B_{10} \boldsymbol{A} & \cdots & B_{p-1,0} \boldsymbol{A} \\ B_{01} \boldsymbol{A} & B_{11} \boldsymbol{A} & \cdots & B_{p-1,1} \boldsymbol{A} \\ \vdots & \vdots & \ddots & \vdots \\ B_{0,q-1} \boldsymbol{A} & B_{1,q-1} \boldsymbol{A} & \cdots & B_{p-1,q-1} \boldsymbol{A} \end{pmatrix} \label{eq:13-7-4}\end{equation}

$\boldsymbol{B}^\top \otimes \boldsymbol{A}$ の成分を添字で表す。行 $i + mj$($0 \leq i \leq m-1$、$0 \leq j \leq q-1$)、列 $k + nl$($0 \leq k \leq n-1$、$0 \leq l \leq p-1$)の成分は次のようになる。

\begin{equation}(\boldsymbol{B}^\top \otimes \boldsymbol{A})_{i + mj,\, k + nl} = (\boldsymbol{B}^\top)_{jl} A_{ik} = B_{lj} A_{ik} \label{eq:13-7-5}\end{equation}

$(\boldsymbol{B}^\top \otimes \boldsymbol{A})\,\text{vec}(\boldsymbol{X})$ の成分を計算する。行列とベクトルの積の定義より、位置 $i + mj$ の成分は次のようになる。

\begin{equation}[(\boldsymbol{B}^\top \otimes \boldsymbol{A})\,\text{vec}(\boldsymbol{X})]_{i + mj} = \displaystyle\sum_{k=0}^{n-1} \displaystyle\sum_{l=0}^{p-1} (\boldsymbol{B}^\top \otimes \boldsymbol{A})_{i + mj,\, k + nl} [\text{vec}(\boldsymbol{X})]_{k + nl} \label{eq:13-7-6}\end{equation}

$\eqref{eq:13-7-5}$ と $\eqref{eq:13-7-2}$ を $\eqref{eq:13-7-6}$ に代入する。

\begin{equation}[(\boldsymbol{B}^\top \otimes \boldsymbol{A})\,\text{vec}(\boldsymbol{X})]_{i + mj} = \displaystyle\sum_{k=0}^{n-1} \displaystyle\sum_{l=0}^{p-1} B_{lj} A_{ik} X_{kl} \label{eq:13-7-7}\end{equation}

$\eqref{eq:13-7-7}$ の右辺を整理する。スカラの積は順序を変えられる。

\begin{equation}\displaystyle\sum_{k=0}^{n-1} \displaystyle\sum_{l=0}^{p-1} B_{lj} A_{ik} X_{kl} = \displaystyle\sum_{k=0}^{n-1} \displaystyle\sum_{l=0}^{p-1} A_{ik} X_{kl} B_{lj} \label{eq:13-7-8}\end{equation}

$\eqref{eq:13-7-1}$ と $\eqref{eq:13-7-8}$ を比較すると、両者は一致する。

\begin{equation}[(\boldsymbol{B}^\top \otimes \boldsymbol{A})\,\text{vec}(\boldsymbol{X})]_{i + mj} = C_{ij} = [\text{vec}(\boldsymbol{C})]_{i + mj} \label{eq:13-7-9}\end{equation}

$\eqref{eq:13-7-9}$ はすべての $(i,j)$ について成り立つので、ベクトルとして等しい。したがって、最終結果を得る。

\begin{equation}\text{vec}(\boldsymbol{A}\boldsymbol{X}\boldsymbol{B}) = (\boldsymbol{B}^\top \otimes \boldsymbol{A})\,\text{vec}(\boldsymbol{X}) \label{eq:13-7-10}\end{equation}

補足:$\boldsymbol{B} = \boldsymbol{I}$ のとき $\text{vec}(\boldsymbol{A}\boldsymbol{X}) = (\boldsymbol{I} \otimes \boldsymbol{A})\,\text{vec}(\boldsymbol{X})$、$\boldsymbol{A} = \boldsymbol{I}$ のとき $\text{vec}(\boldsymbol{X}\boldsymbol{B}) = (\boldsymbol{B}^\top \otimes \boldsymbol{I})\,\text{vec}(\boldsymbol{X})$ となる。

13.6 可換行列(commutation matrix)

公式:$\boldsymbol{K}_{mn}\,\text{vec}(\boldsymbol{A}) = \text{vec}(\boldsymbol{A}^\top)$($\boldsymbol{A} \in \mathbb{R}^{m \times n}$)
条件:$\boldsymbol{K}_{mn}$ は $mn \times mn$ 置換行列
証明

行列 $\boldsymbol{A} \in \mathbb{R}^{m \times n}$ を考える。$\text{vec}(\boldsymbol{A})$ と $\text{vec}(\boldsymbol{A}^\top)$ における成分の位置の関係を調べる。

$\boldsymbol{A}$ の $(i,j)$ 成分 $A_{ij}$ は $\text{vec}(\boldsymbol{A})$ の位置 $i + mj$ にある。

\begin{equation}[\text{vec}(\boldsymbol{A})]_{i + mj} = A_{ij} \label{eq:13-8-1}\end{equation}

$\boldsymbol{A}^\top \in \mathbb{R}^{n \times m}$ の $(j,i)$ 成分は $(\boldsymbol{A}^\top)_{ji} = A_{ij}$ である。この成分は $\text{vec}(\boldsymbol{A}^\top)$ の位置 $j + ni$ にある。

\begin{equation}[\text{vec}(\boldsymbol{A}^\top)]_{j + ni} = A_{ij} \label{eq:13-8-2}\end{equation}

$\eqref{eq:13-8-1}$ と $\eqref{eq:13-8-2}$ より、$\text{vec}(\boldsymbol{A})$ の位置 $i + mj$ にある成分は、$\text{vec}(\boldsymbol{A}^\top)$ の位置 $j + ni$ に移動する必要がある。

可換行列 $\boldsymbol{K}_{mn}$ を定義する。これは $mn \times mn$ の置換行列で、次の性質を持つ。

\begin{equation}(\boldsymbol{K}_{mn})_{j + ni,\, i + mj} = 1 \label{eq:13-8-3}\end{equation}

他の成分はすべて 0 である。

$\boldsymbol{K}_{mn}\,\text{vec}(\boldsymbol{A})$ の成分を計算する。位置 $j + ni$ の成分は次のようになる。

\begin{equation}[\boldsymbol{K}_{mn}\,\text{vec}(\boldsymbol{A})]_{j + ni} = \displaystyle\sum_{k=0}^{mn-1} (\boldsymbol{K}_{mn})_{j + ni,\, k} [\text{vec}(\boldsymbol{A})]_k \label{eq:13-8-4}\end{equation}

$\boldsymbol{K}_{mn}$ は各行に1つだけ 1 を持つ置換行列である。$\eqref{eq:13-8-3}$ より、行 $j + ni$ では列 $i + mj$ のみが 1 である。

\begin{equation}[\boldsymbol{K}_{mn}\,\text{vec}(\boldsymbol{A})]_{j + ni} = [\text{vec}(\boldsymbol{A})]_{i + mj} \label{eq:13-8-5}\end{equation}

$\eqref{eq:13-8-1}$ を $\eqref{eq:13-8-5}$ に代入する。

\begin{equation}[\boldsymbol{K}_{mn}\,\text{vec}(\boldsymbol{A})]_{j + ni} = A_{ij} \label{eq:13-8-6}\end{equation}

$\eqref{eq:13-8-2}$ と $\eqref{eq:13-8-6}$ を比較すると、両者は一致する。

\begin{equation}[\boldsymbol{K}_{mn}\,\text{vec}(\boldsymbol{A})]_{j + ni} = [\text{vec}(\boldsymbol{A}^\top)]_{j + ni} \label{eq:13-8-7}\end{equation}

$\eqref{eq:13-8-7}$ はすべての $(i,j)$($0 \leq i \leq m-1$、$0 \leq j \leq n-1$)について成り立つので、最終結果を得る。

\begin{equation}\boldsymbol{K}_{mn}\,\text{vec}(\boldsymbol{A}) = \text{vec}(\boldsymbol{A}^\top) \label{eq:13-8-8}\end{equation}

補足:$\boldsymbol{K}_{mn}^\top = \boldsymbol{K}_{nm}$ かつ $\boldsymbol{K}_{mn} \boldsymbol{K}_{nm} = \boldsymbol{I}_{mn}$ が成り立つ。$\boldsymbol{K}_{mn}$ は「転置をベクトル化した世界で表現する」行列である。

13.7 Kronecker積の順序交換

公式:$\boldsymbol{K}_{mn}(\boldsymbol{A} \otimes \boldsymbol{B}) = (\boldsymbol{B} \otimes \boldsymbol{A})\boldsymbol{K}_{pq}$
条件:$\boldsymbol{A} \in \mathbb{R}^{m \times p}$、$\boldsymbol{B} \in \mathbb{R}^{n \times q}$
証明

任意の行列 $\boldsymbol{X} \in \mathbb{R}^{p \times q}$ に対して、両辺を $\text{vec}(\boldsymbol{X})$ に作用させて等しいことを示す。

【左辺の計算】

13.5 の $\eqref{eq:13-7-10}$ で $\boldsymbol{B} \to \boldsymbol{B}^\top$ とすると、次が成り立つ。

\begin{equation}\text{vec}(\boldsymbol{A}\boldsymbol{X}\boldsymbol{B}^\top) = (\boldsymbol{B} \otimes \boldsymbol{A})\,\text{vec}(\boldsymbol{X}) \label{eq:13-9-1}\end{equation}

$(\boldsymbol{A} \otimes \boldsymbol{B})\,\text{vec}(\boldsymbol{X})$ を計算するため、$\eqref{eq:13-7-10}$ の別の形を使う。添字を入れ替えて

\begin{equation}\text{vec}(\boldsymbol{B}\boldsymbol{Y}\boldsymbol{A}^\top) = (\boldsymbol{A} \otimes \boldsymbol{B})\,\text{vec}(\boldsymbol{Y}) \label{eq:13-9-2}\end{equation}

ここで $\boldsymbol{Y} \in \mathbb{R}^{q \times p}$ である。

$\boldsymbol{Y} = \boldsymbol{X}^\top$ とおく。$\text{vec}(\boldsymbol{Y}) = \text{vec}(\boldsymbol{X}^\top)$ である。13.6 の $\eqref{eq:13-8-8}$ より

\begin{equation}\text{vec}(\boldsymbol{X}^\top) = \boldsymbol{K}_{pq}\,\text{vec}(\boldsymbol{X}) \label{eq:13-9-3}\end{equation}

$\eqref{eq:13-9-3}$ を $\eqref{eq:13-9-2}$ に代入する。

\begin{equation}\text{vec}(\boldsymbol{B}\boldsymbol{X}^\top\boldsymbol{A}^\top) = (\boldsymbol{A} \otimes \boldsymbol{B})\boldsymbol{K}_{pq}\,\text{vec}(\boldsymbol{X}) \label{eq:13-9-4}\end{equation}

左辺に可換行列を作用させる。$\boldsymbol{C} = \boldsymbol{A}\boldsymbol{X}\boldsymbol{B}^\top \in \mathbb{R}^{m \times n}$ とおくと、$\boldsymbol{C}^\top = \boldsymbol{B}\boldsymbol{X}^\top\boldsymbol{A}^\top \in \mathbb{R}^{n \times m}$ である。

\begin{equation}\boldsymbol{K}_{mn}\,\text{vec}(\boldsymbol{C}) = \text{vec}(\boldsymbol{C}^\top) = \text{vec}(\boldsymbol{B}\boldsymbol{X}^\top\boldsymbol{A}^\top) \label{eq:13-9-5}\end{equation}

$\eqref{eq:13-9-1}$ より $\text{vec}(\boldsymbol{C}) = (\boldsymbol{B} \otimes \boldsymbol{A})\,\text{vec}(\boldsymbol{X})$ なので、$\eqref{eq:13-9-5}$ は

\begin{equation}\boldsymbol{K}_{mn}(\boldsymbol{B} \otimes \boldsymbol{A})\,\text{vec}(\boldsymbol{X}) = \text{vec}(\boldsymbol{B}\boldsymbol{X}^\top\boldsymbol{A}^\top) \label{eq:13-9-6}\end{equation}

【右辺の計算】

$\eqref{eq:13-9-4}$ より、$(\boldsymbol{A} \otimes \boldsymbol{B})\boldsymbol{K}_{pq}\,\text{vec}(\boldsymbol{X}) = \text{vec}(\boldsymbol{B}\boldsymbol{X}^\top\boldsymbol{A}^\top)$ である。

【比較】

$\eqref{eq:13-9-6}$ の左辺と右辺を比較する。$\boldsymbol{A}$ と $\boldsymbol{B}$ を入れ替えると

\begin{equation}\boldsymbol{K}_{mn}(\boldsymbol{A} \otimes \boldsymbol{B})\,\text{vec}(\boldsymbol{X}) = \text{vec}(\boldsymbol{A}\boldsymbol{X}^\top\boldsymbol{B}^\top) \label{eq:13-9-7}\end{equation}

一方、$\eqref{eq:13-9-2}$ で $\boldsymbol{A}$ と $\boldsymbol{B}$ を入れ替えると

\begin{equation}(\boldsymbol{B} \otimes \boldsymbol{A})\,\text{vec}(\boldsymbol{X}^\top) = \text{vec}(\boldsymbol{A}\boldsymbol{X}^\top\boldsymbol{B}^\top) \label{eq:13-9-8}\end{equation}

$\eqref{eq:13-9-3}$ を $\eqref{eq:13-9-8}$ に代入すると

\begin{equation}(\boldsymbol{B} \otimes \boldsymbol{A})\boldsymbol{K}_{pq}\,\text{vec}(\boldsymbol{X}) = \text{vec}(\boldsymbol{A}\boldsymbol{X}^\top\boldsymbol{B}^\top) \label{eq:13-9-9}\end{equation}

$\eqref{eq:13-9-7}$ と $\eqref{eq:13-9-9}$ より、任意の $\boldsymbol{X}$ に対して次が成り立つ。

\begin{equation}\boldsymbol{K}_{mn}(\boldsymbol{A} \otimes \boldsymbol{B})\,\text{vec}(\boldsymbol{X}) = (\boldsymbol{B} \otimes \boldsymbol{A})\boldsymbol{K}_{pq}\,\text{vec}(\boldsymbol{X}) \label{eq:13-9-10}\end{equation}

$\text{vec}(\boldsymbol{X})$ は任意なので、行列として等しい。

\begin{equation}\boldsymbol{K}_{mn}(\boldsymbol{A} \otimes \boldsymbol{B}) = (\boldsymbol{B} \otimes \boldsymbol{A})\boldsymbol{K}_{pq} \label{eq:13-9-11}\end{equation}

補足:この公式は Kronecker 積の順序を入れ替える際に可換行列を用いて調整できることを示している。特に $\boldsymbol{A}$、$\boldsymbol{B}$ が正方行列で同じサイズのとき、$\boldsymbol{K}_{nn}(\boldsymbol{A} \otimes \boldsymbol{B}) = (\boldsymbol{B} \otimes \boldsymbol{A})\boldsymbol{K}_{nn}$ となる。

13.8 duplication matrix

公式:$\boldsymbol{D}_n\,\text{vech}(\boldsymbol{A}) = \text{vec}(\boldsymbol{A})$($\boldsymbol{A}$ は $n \times n$ 対称行列)
条件:$\boldsymbol{D}_n$ は $n^2 \times n(n+1)/2$ 行列、$\text{vech}$ は下三角部分のベクトル化
証明(構成的)

対称行列 $\boldsymbol{A} \in \mathbb{R}^{n \times n}$ を考える。対称性より $A_{ij} = A_{ji}$ が成り立つので、独立な成分は下三角部分(対角を含む)のみである。

$\text{vech}$ 演算子を定義する。$\text{vech}(\boldsymbol{A})$ は $\boldsymbol{A}$ の下三角部分を列ごとに並べた $n(n+1)/2$ 次元ベクトルである。

\begin{equation}\text{vech}(\boldsymbol{A}) = (A_{00}, A_{10}, \ldots, A_{n-1,0}, A_{11}, A_{21}, \ldots, A_{n-1,1}, \ldots, A_{n-1,n-1})^\top \label{eq:13-10-1}\end{equation}

$\text{vech}(\boldsymbol{A})$ における $A_{ij}$($i \geq j$)の位置 $\nu(i,j)$ を求める。第 $j$ 列の下三角部分は $A_{jj}, A_{j+1,j}, \ldots, A_{n-1,j}$ の $n - j$ 個の成分を含む。

\begin{equation}\nu(i,j) = \displaystyle\sum_{k=0}^{j-1}(n - k) + (i - j) = \dfrac{j(2n - j - 1)}{2} + i \label{eq:13-10-2}\end{equation}

$\text{vec}(\boldsymbol{A})$ における $A_{ij}$ の位置は $i + nj$ である。

\begin{equation}\mu(i,j) = i + nj \label{eq:13-10-3}\end{equation}

duplication matrix $\boldsymbol{D}_n \in \mathbb{R}^{n^2 \times n(n+1)/2}$ を構成する。$\text{vech}(\boldsymbol{A})$ の各成分を $\text{vec}(\boldsymbol{A})$ の適切な位置に配置する。

$A_{ij}$($i \geq j$)に対して、$\boldsymbol{D}_n$ は以下の位置に 1 を配置する。

  • 行 $\mu(i,j) = i + nj$、列 $\nu(i,j)$:$A_{ij}$ を位置 $(i,j)$ に配置
  • $i \neq j$ のとき、行 $\mu(j,i) = j + ni$、列 $\nu(i,j)$:$A_{ij}$ を位置 $(j,i)$ に複製

$\boldsymbol{D}_n$ の成分を式で表す。$\text{vech}(\boldsymbol{A})$ の第 $\nu(i,j)$ 成分($i \geq j$)に対して

\begin{equation}(\boldsymbol{D}_n)_{\mu(i,j),\, \nu(i,j)} = 1 \label{eq:13-10-4}\end{equation}

\begin{equation}(\boldsymbol{D}_n)_{\mu(j,i),\, \nu(i,j)} = 1 \quad (i \neq j \text{ のとき}) \label{eq:13-10-5}\end{equation}

$\boldsymbol{D}_n\,\text{vech}(\boldsymbol{A})$ を計算する。位置 $\mu(i,j) = i + nj$ の成分は次のようになる。

【場合1】$i \geq j$ のとき

\begin{equation}[\boldsymbol{D}_n\,\text{vech}(\boldsymbol{A})]_{i + nj} = [\text{vech}(\boldsymbol{A})]_{\nu(i,j)} = A_{ij} \label{eq:13-10-6}\end{equation}

【場合2】$i < j$ のとき(上三角部分)

対称性より $A_{ij} = A_{ji}$ であり、$\text{vech}(\boldsymbol{A})$ には $A_{ji}$ が位置 $\nu(j,i)$ に含まれる。

\begin{equation}[\boldsymbol{D}_n\,\text{vech}(\boldsymbol{A})]_{i + nj} = [\text{vech}(\boldsymbol{A})]_{\nu(j,i)} = A_{ji} = A_{ij} \label{eq:13-10-7}\end{equation}

$\eqref{eq:13-10-6}$ と $\eqref{eq:13-10-7}$ より、すべての $(i,j)$ に対して次が成り立つ。

\begin{equation}[\boldsymbol{D}_n\,\text{vech}(\boldsymbol{A})]_{i + nj} = A_{ij} = [\text{vec}(\boldsymbol{A})]_{i + nj} \label{eq:13-10-8}\end{equation}

したがって、最終結果を得る。

\begin{equation}\boldsymbol{D}_n\,\text{vech}(\boldsymbol{A}) = \text{vec}(\boldsymbol{A}) \label{eq:13-10-9}\end{equation}

補足:$\boldsymbol{D}_n$ はフルランク(列フルランク)で、$\boldsymbol{D}_n^\top \boldsymbol{D}_n$ は正則である。対角成分は1回、非対角成分は2回現れるという構造を反映している。

13.9 elimination matrix

公式:$\boldsymbol{L}_n\,\text{vec}(\boldsymbol{A}) = \text{vech}(\boldsymbol{A})$($\boldsymbol{A}$ は $n \times n$ 対称行列)
条件:$\boldsymbol{L}_n$ は $n(n+1)/2 \times n^2$ 行列
証明(構成的)

elimination matrix $\boldsymbol{L}_n$ は $\text{vec}(\boldsymbol{A})$ から下三角部分のみを抽出する行列である。

13.8 で定義した位置関数 $\nu(i,j)$ と $\mu(i,j)$ を用いる。

\begin{equation}\nu(i,j) = \dfrac{j(2n - j - 1)}{2} + i \quad (i \geq j) \label{eq:13-11-1}\end{equation}

\begin{equation}\mu(i,j) = i + nj \label{eq:13-11-2}\end{equation}

$\boldsymbol{L}_n \in \mathbb{R}^{n(n+1)/2 \times n^2}$ を構成する。$\text{vech}(\boldsymbol{A})$ の第 $\nu(i,j)$ 成分($i \geq j$)は $\text{vec}(\boldsymbol{A})$ の第 $\mu(i,j)$ 成分から取得する。

\begin{equation}(\boldsymbol{L}_n)_{\nu(i,j),\, \mu(i,j)} = 1 \quad (i \geq j) \label{eq:13-11-3}\end{equation}

他の成分はすべて 0 である。

$\boldsymbol{L}_n\,\text{vec}(\boldsymbol{A})$ を計算する。位置 $\nu(i,j)$($i \geq j$)の成分は次のようになる。

\begin{equation}[\boldsymbol{L}_n\,\text{vec}(\boldsymbol{A})]_{\nu(i,j)} = \displaystyle\sum_{k=0}^{n^2-1} (\boldsymbol{L}_n)_{\nu(i,j),\, k} [\text{vec}(\boldsymbol{A})]_k \label{eq:13-11-4}\end{equation}

$\boldsymbol{L}_n$ は各行に1つだけ 1 を持つ。$\eqref{eq:13-11-3}$ より、行 $\nu(i,j)$ では列 $\mu(i,j)$ のみが 1 である。

\begin{equation}[\boldsymbol{L}_n\,\text{vec}(\boldsymbol{A})]_{\nu(i,j)} = [\text{vec}(\boldsymbol{A})]_{\mu(i,j)} \label{eq:13-11-5}\end{equation}

$\eqref{eq:13-11-2}$ より $[\text{vec}(\boldsymbol{A})]_{\mu(i,j)} = [\text{vec}(\boldsymbol{A})]_{i + nj} = A_{ij}$ である。

\begin{equation}[\boldsymbol{L}_n\,\text{vec}(\boldsymbol{A})]_{\nu(i,j)} = A_{ij} \label{eq:13-11-6}\end{equation}

$\eqref{eq:13-10-1}$ の定義より、$[\text{vech}(\boldsymbol{A})]_{\nu(i,j)} = A_{ij}$ である。したがって

\begin{equation}[\boldsymbol{L}_n\,\text{vec}(\boldsymbol{A})]_{\nu(i,j)} = [\text{vech}(\boldsymbol{A})]_{\nu(i,j)} \label{eq:13-11-7}\end{equation}

$\eqref{eq:13-11-7}$ はすべての $(i,j)$($i \geq j$)について成り立つので、最終結果を得る。

\begin{equation}\boldsymbol{L}_n\,\text{vec}(\boldsymbol{A}) = \text{vech}(\boldsymbol{A}) \label{eq:13-11-8}\end{equation}

補足:$\boldsymbol{L}_n$ は「選択行列」とも呼ばれ、$\text{vec}(\boldsymbol{A})$ の $n^2$ 個の成分から下三角部分の $n(n+1)/2$ 個を選択する。上三角部分の成分は対称性により冗長なので除去される。

13.10 elimination・duplication の関係

公式:$\boldsymbol{L}_n \boldsymbol{D}_n = \boldsymbol{I}_{n(n+1)/2}$
条件:$\boldsymbol{L}_n$、$\boldsymbol{D}_n$ は上記で定義
証明

任意の対称行列 $\boldsymbol{A} \in \mathbb{R}^{n \times n}$ を考える。

13.8 の $\eqref{eq:13-10-9}$ より、duplication matrix の性質は次のとおりである。

\begin{equation}\boldsymbol{D}_n\,\text{vech}(\boldsymbol{A}) = \text{vec}(\boldsymbol{A}) \label{eq:13-12-1}\end{equation}

13.9 の $\eqref{eq:13-11-8}$ より、elimination matrix の性質は次のとおりである。

\begin{equation}\boldsymbol{L}_n\,\text{vec}(\boldsymbol{A}) = \text{vech}(\boldsymbol{A}) \label{eq:13-12-2}\end{equation}

$\eqref{eq:13-12-1}$ の両辺に左から $\boldsymbol{L}_n$ を掛ける。

\begin{equation}\boldsymbol{L}_n \boldsymbol{D}_n\,\text{vech}(\boldsymbol{A}) = \boldsymbol{L}_n\,\text{vec}(\boldsymbol{A}) \label{eq:13-12-3}\end{equation}

$\eqref{eq:13-12-2}$ を $\eqref{eq:13-12-3}$ の右辺に代入する。

\begin{equation}\boldsymbol{L}_n \boldsymbol{D}_n\,\text{vech}(\boldsymbol{A}) = \text{vech}(\boldsymbol{A}) \label{eq:13-12-4}\end{equation}

$\eqref{eq:13-12-4}$ を変形する。

\begin{equation}(\boldsymbol{L}_n \boldsymbol{D}_n - \boldsymbol{I}_{n(n+1)/2})\,\text{vech}(\boldsymbol{A}) = \boldsymbol{0} \label{eq:13-12-5}\end{equation}

$\text{vech}(\boldsymbol{A})$ は任意の対称行列に対応するので、$\text{vech}(\boldsymbol{A})$ は $\mathbb{R}^{n(n+1)/2}$ の任意のベクトルを取りうる。

$\eqref{eq:13-12-5}$ が任意の $\text{vech}(\boldsymbol{A})$ に対して成り立つためには、係数行列がゼロ行列でなければならない。

\begin{equation}\boldsymbol{L}_n \boldsymbol{D}_n - \boldsymbol{I}_{n(n+1)/2} = \boldsymbol{O} \label{eq:13-12-6}\end{equation}

$\eqref{eq:13-12-6}$ を整理して、最終結果を得る。

\begin{equation}\boldsymbol{L}_n \boldsymbol{D}_n = \boldsymbol{I}_{n(n+1)/2} \label{eq:13-12-7}\end{equation}

補足:$\eqref{eq:13-12-7}$ より、$\boldsymbol{L}_n$ は $\boldsymbol{D}_n$ の左逆行列である。ただし $\boldsymbol{D}_n \boldsymbol{L}_n \neq \boldsymbol{I}_{n^2}$ であることに注意する。$\boldsymbol{D}_n \boldsymbol{L}_n$ は $n^2 \times n^2$ 行列で、一般行列から対称部分を抽出して複製する操作を表す。

13.11 ベクトル化の微分

公式:$\displaystyle\dfrac{\partial\,\text{vec}(\boldsymbol{X})}{\partial\,\text{vec}(\boldsymbol{X})^\top} = \boldsymbol{I}_{mn}$($\boldsymbol{X} \in \mathbb{R}^{m \times n}$)
条件:$\text{vec}(\boldsymbol{X})$ は $mn$ 次元ベクトル
証明

行列 $\boldsymbol{X} \in \mathbb{R}^{m \times n}$ を考える。$\text{vec}(\boldsymbol{X})$ は $mn$ 次元ベクトルである。

$\text{vec}(\boldsymbol{X})$ の成分を $y_k$($k = 0, \ldots, mn-1$)とする。vec 演算子の定義より、$y_k$ は $\boldsymbol{X}$ の成分と次のように対応する。

\begin{equation}y_k = X_{ij} \quad \text{ただし } k = i + mj \label{eq:13-13-1}\end{equation}

同様に、$\text{vec}(\boldsymbol{X})$ の成分を独立変数として $x_l$($l = 0, \ldots, mn-1$)とする。

\begin{equation}x_l = X_{pq} \quad \text{ただし } l = p + mq \label{eq:13-13-2}\end{equation}

$\eqref{eq:13-13-1}$ と $\eqref{eq:13-13-2}$ より、$y_k = x_k$ が成り立つ。すなわち、$\text{vec}(\boldsymbol{X})$ の各成分は自分自身を変数として持つ恒等写像である。

\begin{equation}y_k = x_k \quad (k = 0, \ldots, mn-1) \label{eq:13-13-3}\end{equation}

$y_k$ を $x_l$ で偏微分する。$\eqref{eq:13-13-3}$ より

\begin{equation}\dfrac{\partial y_k}{\partial x_l} = \dfrac{\partial x_k}{\partial x_l} \label{eq:13-13-4}\end{equation}

$x_k$ と $x_l$ は独立変数なので、偏微分は Kronecker のデルタとなる。

\begin{equation}\dfrac{\partial x_k}{\partial x_l} = \delta_{kl} = \begin{cases} 1 & (k = l) \\ 0 & (k \neq l) \end{cases} \label{eq:13-13-5}\end{equation}

$\eqref{eq:13-13-5}$ を $\eqref{eq:13-13-4}$ に代入する。

\begin{equation}\dfrac{\partial y_k}{\partial x_l} = \delta_{kl} \label{eq:13-13-6}\end{equation}

微分行列 $\displaystyle\dfrac{\partial\,\text{vec}(\boldsymbol{X})}{\partial\,\text{vec}(\boldsymbol{X})^\top}$ の $(k,l)$ 成分は $\displaystyle\dfrac{\partial y_k}{\partial x_l}$ である。

\begin{equation}\left(\dfrac{\partial\,\text{vec}(\boldsymbol{X})}{\partial\,\text{vec}(\boldsymbol{X})^\top}\right)_{kl} = \dfrac{\partial y_k}{\partial x_l} = \delta_{kl} \label{eq:13-13-7}\end{equation}

$\delta_{kl}$ は単位行列 $\boldsymbol{I}_{mn}$ の $(k,l)$ 成分である。

\begin{equation}(\boldsymbol{I}_{mn})_{kl} = \delta_{kl} \label{eq:13-13-8}\end{equation}

$\eqref{eq:13-13-7}$ と $\eqref{eq:13-13-8}$ より、すべての $(k,l)$ について成分が一致するので、行列として等しい。

\begin{equation}\dfrac{\partial\,\text{vec}(\boldsymbol{X})}{\partial\,\text{vec}(\boldsymbol{X})^\top} = \boldsymbol{I}_{mn} \label{eq:13-13-9}\end{equation}

補足:$\eqref{eq:13-13-9}$ は自明に見えるが、連鎖律を用いた複雑な行列微分の計算で基礎となる重要な公式である。例えば、$\displaystyle\dfrac{\partial\,\text{vec}(\boldsymbol{A}\boldsymbol{X}\boldsymbol{B})}{\partial\,\text{vec}(\boldsymbol{X})^\top} = (\boldsymbol{B}^\top \otimes \boldsymbol{A}) \displaystyle\dfrac{\partial\,\text{vec}(\boldsymbol{X})}{\partial\,\text{vec}(\boldsymbol{X})^\top} = \boldsymbol{B}^\top \otimes \boldsymbol{A}$ のように用いる。

13.2 Cholesky分解の勾配

13.12 Cholesky分解の勾配

公式:正定値行列 $\boldsymbol{A} = \boldsymbol{L}\boldsymbol{L}^\top$($\boldsymbol{L}$: 下三角)に対し、$\boldsymbol{\Phi} = \boldsymbol{L}^\top \bar{\boldsymbol{L}}$ とおくと $$\dfrac{\partial \mathcal{L}}{\partial \boldsymbol{A}} = \boldsymbol{L}^{-\top}\!\left(\text{tril}(\boldsymbol{\Phi}) - \tfrac{1}{2}\text{diag}(\boldsymbol{\Phi})\right)\boldsymbol{L}^{-1}$$ ここで $\bar{\boldsymbol{L}} = \partial \mathcal{L}/\partial \boldsymbol{L}$ は $\boldsymbol{L}$ への上流勾配である。
条件:$\boldsymbol{A} \in \mathbb{R}^{n \times n}$ は正定値対称、$\boldsymbol{L}$ は正の対角成分を持つ下三角行列、$\bar{\boldsymbol{L}} = \partial \mathcal{L}/\partial \boldsymbol{L}$
証明

損失関数 $\mathcal{L}$ の $\boldsymbol{A}$ に関する勾配を、Cholesky分解を経由して求める。連鎖律より

\begin{equation}\dfrac{\partial \mathcal{L}}{\partial A_{ij}} = \displaystyle\sum_{k,l} \dfrac{\partial \mathcal{L}}{\partial L_{kl}} \dfrac{\partial L_{kl}}{\partial A_{ij}} \label{eq:13-14-1}\end{equation}

$\boldsymbol{A} = \boldsymbol{L}\boldsymbol{L}^\top$ の微分を考える。両辺の微分をとると

\begin{equation}d\boldsymbol{A} = (d\boldsymbol{L})\,\boldsymbol{L}^\top + \boldsymbol{L}\,(d\boldsymbol{L})^\top \label{eq:13-14-2}\end{equation}

$\boldsymbol{S} = \boldsymbol{L}^{-1}\,(d\boldsymbol{A})\,\boldsymbol{L}^{-\top}$ とおくと、$\eqref{eq:13-14-2}$ の両辺に左から $\boldsymbol{L}^{-1}$、右から $\boldsymbol{L}^{-\top}$ をかけて

\begin{equation}\boldsymbol{S} = \boldsymbol{L}^{-1}(d\boldsymbol{L}) + (\boldsymbol{L}^{-1}(d\boldsymbol{L}))^\top \label{eq:13-14-3}\end{equation}

$\boldsymbol{\Omega} = \boldsymbol{L}^{-1}(d\boldsymbol{L})$ は下三角行列である($\boldsymbol{L}^{-1}$ も $d\boldsymbol{L}$ も下三角であるため)。$\eqref{eq:13-14-3}$ より $\boldsymbol{S} = \boldsymbol{\Omega} + \boldsymbol{\Omega}^\top$ であるから

\begin{equation}\boldsymbol{\Omega} = \text{tril}(\boldsymbol{S}) - \tfrac{1}{2}\text{diag}(\boldsymbol{S}) \label{eq:13-14-4}\end{equation}

ここで $\text{tril}$ は下三角部分(対角含む)、$\text{diag}$ は対角成分のみを取り出す操作である。$\boldsymbol{S}$ は対称行列なので、$\text{tril}(\boldsymbol{S})$ の対角成分は $S_{ii}$ であり、$\boldsymbol{\Omega} + \boldsymbol{\Omega}^\top$ の対角成分は $2\Omega_{ii}$ であるから、$\Omega_{ii} = \dfrac{1}{2}S_{ii}$ となり $\eqref{eq:13-14-4}$ が成り立つ。

$d\boldsymbol{L} = \boldsymbol{L}\boldsymbol{\Omega}$ を用いて、スカラ損失 $\mathcal{L}$ の微分は

\begin{equation}d\mathcal{L} = \text{tr}\!\bigl(\bar{\boldsymbol{L}}^\top\, d\boldsymbol{L}\bigr) = \text{tr}\!\bigl(\bar{\boldsymbol{L}}^\top \boldsymbol{L}\boldsymbol{\Omega}\bigr) \label{eq:13-14-5}\end{equation}

$\boldsymbol{\Phi} = \boldsymbol{L}^\top \bar{\boldsymbol{L}}$ とおく。$\boldsymbol{\Omega}$ は下三角行列なので、$\text{tr}(\boldsymbol{\Phi}\boldsymbol{\Omega}) = \text{tr}(\text{tril}(\boldsymbol{\Phi})\,\boldsymbol{\Omega})$ が成り立つ。$\eqref{eq:13-14-4}$ を代入すると

\begin{equation}d\mathcal{L} = \text{tr}\!\bigl(\text{tril}(\boldsymbol{\Phi})\,(\text{tril}(\boldsymbol{S}) - \tfrac{1}{2}\text{diag}(\boldsymbol{S}))\bigr) \label{eq:13-14-6}\end{equation}

$\boldsymbol{S} = \boldsymbol{L}^{-1}\,(d\boldsymbol{A})\,\boldsymbol{L}^{-\top}$ を代入し、$d\mathcal{L} = \text{tr}\!\bigl(\bar{\boldsymbol{A}}^\top\,d\boldsymbol{A}\bigr)$ の形に整理する。対称な $d\boldsymbol{A}$ に対しては

\begin{equation}\bar{\boldsymbol{A}} = \boldsymbol{L}^{-\top}\,\text{tril}\!\bigl(\boldsymbol{L}^\top \bar{\boldsymbol{L}}\bigr)\,\boldsymbol{L}^{-1} \label{eq:13-14-7}\end{equation}

ここで $\boldsymbol{A}$ が対称であるため、対角成分への寄与が二重計算される。これを補正して、最終的な公式は次のようになる。

\begin{equation}\bar{\boldsymbol{A}} = \boldsymbol{L}^{-\top}\!\left(\text{tril}(\boldsymbol{\Phi}) - \tfrac{1}{2}\text{diag}(\boldsymbol{\Phi})\right)\boldsymbol{L}^{-1} \label{eq:13-14-7b}\end{equation}

補足:この公式はGauss過程や変分推論における共分散行列パラメータの勾配計算で頻繁に用いられる。実装上は $\boldsymbol{L}^{-1}$ を明示的に計算せず、三角求解(forward/backward substitution)で効率的に計算する。
参考文献:Murray, I. (2016). Differentiation of the Cholesky decomposition. arXiv:1602.07527.

13.13 対数行列式のCholesky経由の微分

公式:正定値行列 $\boldsymbol{A} = \boldsymbol{L}\boldsymbol{L}^\top$ に対し $$\dfrac{\partial \log|\boldsymbol{A}|}{\partial \boldsymbol{A}} = \boldsymbol{A}^{-\top}$$
条件:$\boldsymbol{A} \in \mathbb{R}^{n \times n}$ は正定値対称、$\boldsymbol{L}$ は Cholesky 因子
証明

正定値対称行列 $\boldsymbol{A} = \boldsymbol{L}\boldsymbol{L}^\top$ に対し、行列式を Cholesky 因子で表す。

\begin{equation}|\boldsymbol{A}| = |\boldsymbol{L}\boldsymbol{L}^\top| = |\boldsymbol{L}|^2 \label{eq:13-15-1}\end{equation}

$\boldsymbol{L}$ は下三角行列なので、$|\boldsymbol{L}| = \displaystyle\prod_{i=0}^{n-1} L_{ii}$ である。$\eqref{eq:13-15-1}$ の対数をとると

\begin{equation}\log|\boldsymbol{A}| = 2\log|\boldsymbol{L}| = 2\displaystyle\sum_{i=0}^{n-1} \log L_{ii} \label{eq:13-15-2}\end{equation}

$\eqref{eq:13-15-2}$ を $L_{ii}$ で微分する。

\begin{equation}\dfrac{\partial \log|\boldsymbol{A}|}{\partial L_{ii}} = \dfrac{2}{L_{ii}} \label{eq:13-15-3}\end{equation}

非対角成分については

\begin{equation}\dfrac{\partial \log|\boldsymbol{A}|}{\partial L_{ij}} = 0 \quad (i \neq j) \label{eq:13-15-4}\end{equation}

したがって $\boldsymbol{L}$ に関する勾配は

\begin{equation}\bar{\boldsymbol{L}} = \dfrac{\partial \log|\boldsymbol{A}|}{\partial \boldsymbol{L}} = 2\,\text{diag}(L_{00}^{-1}, \ldots, L_{n-1,n-1}^{-1}) \label{eq:13-15-5}\end{equation}

13.12 の結果を用いて、$\boldsymbol{A}$ に関する勾配を計算する。$\boldsymbol{\Phi} = \boldsymbol{L}^\top \bar{\boldsymbol{L}}$ を求める。$\bar{\boldsymbol{L}}$ は対角行列なので

\begin{equation}\boldsymbol{\Phi} = \boldsymbol{L}^\top \cdot 2\,\text{diag}(L_{ii}^{-1}) = 2\,\boldsymbol{L}^\top\,\text{diag}(L_{ii}^{-1}) \label{eq:13-15-6}\end{equation}

$\boldsymbol{L}^\top$ は上三角行列、$\text{diag}(L_{ii}^{-1})$ は対角行列なので、$\boldsymbol{\Phi}$ は上三角行列である。$\text{tril}(\boldsymbol{\Phi})$ は対角成分のみが残る。

\begin{equation}\text{tril}(\boldsymbol{\Phi})_{ii} = \Phi_{ii} = (L^\top)_{ii} \cdot 2L_{ii}^{-1} = L_{ii} \cdot 2L_{ii}^{-1} = 2 \label{eq:13-15-7}\end{equation}

13.12 の $\eqref{eq:13-14-7b}$ の対角補正 $\text{tril}(\boldsymbol{\Phi}) - \dfrac{1}{2}\text{diag}(\boldsymbol{\Phi})$ を適用する。$\text{tril}(\boldsymbol{\Phi})$ の対角は $2$ なので、$2 - \dfrac{1}{2} \cdot 2 = 1$ となる。すなわち

\begin{equation}\text{tril}(\boldsymbol{\Phi}) - \tfrac{1}{2}\text{diag}(\boldsymbol{\Phi}) = \boldsymbol{I}_n \label{eq:13-15-8}\end{equation}

13.12 の公式 $\eqref{eq:13-14-7b}$ に代入する。

\begin{equation}\dfrac{\partial \log|\boldsymbol{A}|}{\partial \boldsymbol{A}} = \boldsymbol{L}^{-\top}\,\boldsymbol{I}_n\,\boldsymbol{L}^{-1} = \boldsymbol{L}^{-\top}\boldsymbol{L}^{-1} = (\boldsymbol{L}\boldsymbol{L}^\top)^{-1} = \boldsymbol{A}^{-1} \label{eq:13-15-9}\end{equation}

$\boldsymbol{A}$ は対称行列なので $\boldsymbol{A}^{-\top} = \boldsymbol{A}^{-1}$ であり

\begin{equation}\dfrac{\partial \log|\boldsymbol{A}|}{\partial \boldsymbol{A}} = \boldsymbol{A}^{-\top} \label{eq:13-15-10}\end{equation}

補足:$\eqref{eq:13-15-10}$ は Jacobi の公式 $\dfrac{\partial |\boldsymbol{A}|}{\partial \boldsymbol{A}} = |\boldsymbol{A}|\boldsymbol{A}^{-\top}$ から直接導くこともできる($\dfrac{d}{dx}\log f(x) = f'(x)/f(x)$ を適用すればよい)。ここでは Cholesky 分解の勾配との整合性を確認するために、13.12 を経由した導出を示した。数値的には Cholesky 経由の方が安定であり、特に勾配の逆伝播において $\boldsymbol{L}$ が既に計算されている場合に効率的である。

参考文献

  • Petersen, K. B., & Pedersen, M. S. (2012). The Matrix Cookbook. Technical University of Denmark.
  • Magnus, J. R., & Neudecker, H. (1999). Matrix Differential Calculus with Applications in Statistics and Econometrics (Revised ed.). Wiley.
  • Matrix calculus - Wikipedia