データの前処理〜白色化 その1〜
はじめに
白色化(Whitening)は生データの要素間の相関をなくし、さらに分散の正規化を前処理として実行することで学習の効率化を狙うものである。
理論
次元空間における正規化されたデータ${\bf x}$
$$ {\bf x} = [ x_1 \cdots x_D ] $$
が個あるデータセット$ X = [ {\bf x}_1 \cdots {\bf x}_N ] $を考える。
の分散共分散行列は
である。ここで各データに対して行列による線形変換
を実行すると、 ]の分散共分散行列は
となる。が単位行列になるようにを定めると
すなわち
が得られる。
また、は対角化可能で
である。ただし
$$ \begin{eqnarray} \Omega = \left( \begin{array}{ccc} \omega_{1}^{2} && \\ &\ddots& \\ && \omega_{D}^{2} \end{array} \right) \end{eqnarray} $$
は直行行列()であるから
と書ける。したがって、式(1)および(2)より
が得られる。ただし、は任意の直行行列()である。
ここで、${\bf Q}={\bf I}$とおいたときの${\bf P}_{PCA}$を用いた白色化をPCA Whiteningと呼ぶ。
$$ {\bf P}_{PCA} = \sqrt{\Omega}{\bf A}^T $$
また、${\bf Q}={\bf A}$とおいたときの${\bf P}_{ZCA}$を用いた白色化をZCA Whiteningと呼ぶ。
$$ {\bf P}_{ZCA} = {\bf A} \sqrt{\Omega}{\bf A}^T $$
PCA whiteningではデータの要素間の相関が失われることになるが、ZCA whiteningでは固有ベクトル${\bf A}$による線形変換を行うことで元データ${\bf x}$の空間へ再び射影することになる。
実装と検証は次回以降…
参考文献
岡谷貴之, 「深層学習」第5章, 講談社, 2017.