トレース(trace)を用いた行列のフロベニウスノルム・分類問題における二乗和誤差の計算

分類問題を考える際などに$1$of$K$表記を$N$個のサンプル毎に列挙することで$N \times K$行列を考えることがありますが、この際にトレースを用いて二乗和誤差が計算されることがあります。当記事ではトレースを用いて$2$つの行列の二乗誤差を表すことができることを確認します。
「パターン認識と機械学習」の$4.1.3$節の$(4.15)$式の直感的な理解を目標の$1$つに作成を行いました。

また、$(\mathrm{o.xx})$の形式の式番号は「パターン認識と機械学習」の式番号に対応させました。

基本事項のまとめ

トレース(trace)の定義

トレース(trace)は正方行列(Square matrix)の対角成分の和で定義され、$n \times n$正方行列$A=(a)_{ij}$のトレース$\mathrm{tr}(A)$を下記のように表記する。
$$
\large
\begin{align}
\mathrm{tr}(A) &= a_{11} + a_{22} + \cdots + a_{nn} \\
&= \sum_{i=1}^{n} a_{ii}
\end{align}
$$

フロベニウスノルムの定義

行列のノルムを考える際のシンプルな考え方がフロベニウスノルム(Frobenius norm)である。$m$行$n$列の行列$\mathbf{A} = (a_{ij})$に関するフロベニウスノルム$|\mathbf{A}|_{F}$は下記のように定義できる。
$$
\large
\begin{align}
||A||_{F} = \sqrt{ \sum_{i=1}^{m} \sum_{j=1}^{n} a_{ij}^2 }
\end{align}
$$

フロベニウスノルムは行列の各要素の二乗の和を計算し、計算した二乗和に対して平方根を考えた値に一致する。以下では二乗和を中心に考えるにあたって、$\displaystyle ||A||_{F}^{2} = \sum_{i=1}^{m} \sum_{j=1}^{n} a_{ij}^2$を主に用いる。

トレースを用いたフロベニウスノルムの表記

当項では行列$A$のフロベニウスノルムの二乗の$||A||_{F}^{2}$が$||A||_{F}^{2}=\mathrm{Tr}(A^{\mathrm{T}}A)$のように表せることの確認を以下で行う。まず$A^{\mathrm{T}}A$は下記のように表すことができる。
$$
\large
\begin{align}
A^{\mathrm{T}}A &= \left(\begin{array}{ccc} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{m1} & \cdots & a_{mn} \end{array} \right)^{\mathrm{T}} \left(\begin{array}{ccc} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{m1} & \cdots & a_{mn} \end{array} \right) \\
&= \left(\begin{array}{ccc} a_{11} & \cdots & a_{m1} \\ \vdots & \ddots & \vdots \\ a_{1n} & \cdots & a_{nm} \end{array} \right) \left(\begin{array}{ccc} a_{11} & \cdots & a_{1n} \\ \vdots & \ddots & \vdots \\ a_{m1} & \cdots & a_{mn} \end{array} \right)
\end{align}
$$

上記の$(j,j)$成分を$(A^{\mathrm{T}}A)_{jj}$とおくとき、$(A^{\mathrm{T}}A)_{jj}$は下記のように表すことができる。
$$
\large
\begin{align}
(A^{\mathrm{T}}A)_{jj} &= \left(\begin{array}{ccc} a_{1j} & \cdots & a_{mj} \end{array} \right) \left(\begin{array}{c} a_{1j} \\ \vdots \\ a_{mj} \end{array} \right) \\
&= \sum_{i=1}^{m} a_{ij}^{2}
\end{align}
$$

ここで$A^{\mathrm{T}}A$が$n \times n$行列であることから$\mathrm{Tr}(A^{\mathrm{T}}A)$は下記のように表せる。
$$
\large
\begin{align}
\mathrm{Tr}(A^{\mathrm{T}}A) &= \sum_{j=1}^{n} \sum_{i=1}^{m} a_{ij}^{2} \\
&= \sum_{i=1}^{m} \sum_{j=1}^{n} a_{ij}^{2} = ||A||_{F}^{2}
\end{align}
$$

上記より$||A||_{F}^{2}=\mathrm{Tr}(A^{\mathrm{T}}A)$を示すことができる。

分類問題における二乗和誤差の表記

以下、$K$クラス分類問題における二乗和誤差の表記について確認を行う。まず、$n$番目のサンプルに関する$D+1$次元ベクトル$\mathbf{x}_{n}$とクラス$k$に対応する重みベクトル$\mathbf{w}_{k}$を下記のように定義する。
$$
\large
\begin{align}
\mathbf{x}_{n} &= \left(\begin{array}{c} 1 \\ x_{n1} \\ \vdots \\ x_{nD} \end{array} \right) \\
\mathbf{w}_{k} &= \left(\begin{array}{c} w_{k0} \\ w_{k1} \\ \vdots \\ w_{kD} \end{array} \right)
\end{align}
$$

上記を元に予測値$y_{k}(\mathbf{x}_{n})$は下記のように計算できる。
$$
\large
\begin{align}
y_{k}(\mathbf{x}_{n}) = \mathbf{w}_{k}^{\mathrm{T}} \mathbf{x}_{n}
\end{align}
$$

ここで上記を$k=1,…,K$に拡張して表すにあたって、下記のように$y(\mathbf{x}_{n}), \mathbf{w}$を定める。
$$
\large
\begin{align}
y(\mathbf{x}_{n}) &= \mathbf{W}^{\mathrm{T}} \mathbf{x}_{n} \quad (4.14) \\
\mathbf{W}^{\mathrm{T}} &= \left(\begin{array}{cccc} w_{10} & w_{11} & \cdots & w_{1D} \\ \vdots & \vdots & \ddots & \vdots \\ w_{K0} & w_{K1} & \cdots & w_{KD} \end{array} \right) \\
\mathbf{W} &= \left(\begin{array}{ccc} w_{10} & \cdots & w_{K0} \\ w_{11} & \cdots & w_{K1} \\ \vdots & \ddots & \vdots \\ w_{1D} & \cdots & w_{KD} \end{array} \right)
\end{align}
$$

さらに上記を$n=1,…,N$に拡張して表すにあたって下記のように$\mathbf{Y},\mathbf{X}$を定める。
$$
\large
\begin{align}
\mathbf{Y} &= \mathbf{X}\mathbf{W} \\
\mathbf{X} &= \left(\begin{array}{cccc} 1 & x_{11} & \cdots & x_{1D} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{N1} & \cdots & w_{ND} \end{array} \right)
\end{align}
$$

ここで$\mathbf{Y} = \mathbf{X}\mathbf{W}$は$N$行$K$列の行列である。また、$\mathbf{Y}$に対応する観測値の$1$of$K$表現を$\mathbf{T}$とおくと、二乗和誤差は$||\mathbf{Y}-\mathbf{T}||_{F}^{2}$で表される。

二乗和誤差$||\mathbf{Y}-\mathbf{T}||_{F}^{2}$は、前節で確認したトレースを用いた式を用いることで下記のように表すことができる。
$$
\large
\begin{align}
||\mathbf{Y}-\mathbf{T}||_{F}^{2} &= ||\mathbf{X}\mathbf{W} – \mathbf{T}||_{F}^{2} \\
&= \mathrm{Tr} \left\{ (\mathbf{X}\mathbf{W} – \mathbf{T})^{\mathrm{T}}(\mathbf{X}\mathbf{W} – \mathbf{T}) \right\} \\
& \propto \frac{1}{2} \mathrm{Tr} \left\{ (\mathbf{X}\mathbf{W} – \mathbf{T})^{\mathrm{T}}(\mathbf{X}\mathbf{W} – \mathbf{T}) \right\} \quad (4.15)
\end{align}
$$

参考

・行列のトレース(trace)
https://www.hello-statisticians.com/explain-terms-cat/trace_mat1.html

・行列分解とフロベニウスノルム
https://www.hello-statisticians.com/explain-terms-cat/matrix_factorization1.html