end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

3次元超も扱う線形多項分類

以前のエントリで扱った線形多項分類は3次元でしたので、モデルの図示も容易でしたが、 今回は、3次元超も扱える線形多項分類を考えます。

基本となる予測関数とソフトマックス関数

座標:(x1,x2, … , xM)を持つM次空間をK個の領域に分割する予測関数と ソフトマックス関数は次の通り。

 \displaystyle \Large
f_{k} (x_1, x_2, \cdots , x_M) =
  w_{0k} + w_{k1} x_{1} + w_{k2} x_{2} + \cdots + w_{kM} x_{M} \\
  k = 1 , \cdots , M

 \displaystyle \Large
  P_{k} (x_{1}, \cdots ,x_{M}) =
    \frac{ e^{fk(x_{1}, \cdots ,x_{M})}}
         { \sum_{l=1}^{M} e^{fl(x_{1}, \cdots ,x_{M})}}

予測関数とソフトマックス関数を、行列式で表す

N個のトレーニングデータにある

28x28ピクセル(=784次元)の画像に記載された0~9の数値を想定した場合、

M=784, K=10 となり、先程の予測関数は、次の行列式で表せます。

 \displaystyle \large
\underline{ F = X \cdot W \oplus w }

 \displaystyle \large
X = 
    \begin{pmatrix}
      x_{11}  &x_{21}  &\ldots    &x_{M1} \\\
      x_{12}  &x_{22}  &\ldots    &x_{M2} \\\
      \vdots  &\vdots  &\ddots    &\vdots \\\
      x_{1n}  &x_{2N}  &\ldots    &x_{MN}
    \end{pmatrix}

W = 
    \begin{pmatrix}
      w_{11}  &w_{12}  &\ldots    &w_{1K} \\
      w_{21}  &w_{22}  &\ldots    &w_{2K} \\
      \vdots  &\vdots  &\ddots    &\vdots \\
      w_{M1}  &w_{M2}  &\ldots    &w_{MK}
    \end{pmatrix}

 \displaystyle \large
w = ( w_{01} , w_{02} , \ldots , w_{0K} )

 \displaystyle \large
F = 
    \begin{pmatrix}
      f_{1}(x_{1}) &f_{2}(x_{1}) &\ldots &f_{K}(x_{1}) \\\
      f_{1}(x_{2}) &f_{2}(x_{2}) &\ldots &f_{K}(x_{2}) \\\
      \vdots       &\vdots       &\ddots &\vdots \\\
      f_{1}(x_{N}) &f_{2}(x_{N}) &\ldots &f_{K}(x_{N})
    \end{pmatrix}

\hspace{10pt}
f_k (x_n) = w_{0k} + w_{1k} \cdot x_{1n} + \cdots + w_{Mk} \cdot x_{Mn}

となる。

更にこれをソフトマックス関数で表すと、次のようになります。

 \displaystyle \large
P = 
    \begin{pmatrix}
      P_{1}(x_{1}) &P_{2}(x_{1}) &\ldots &P_{K}(x_{1}) \\\
      P_{1}(x_{2}) &P_{2}(x_{2}) &\ldots &P_{K}(x_{2}) \\\
      \vdots       &\vdots       &\ddots &\vdots \\\
      P_{1}(x_{N}) &P_{2}(x_{N}) &\ldots &P_{K}(x_{N})
    \end{pmatrix}
\hspace{10pt}
P_{k} (x_{n}) = \frac { e^{fk(x_{n})} }{ \sum_{l=1}^{K} e^{fl(x_{n})} }

これを更に変形して、n番目(n行目?)の正解を予測する式は次の通り

 \displaystyle \large
P_{n} = \prod_{l=k}^{K}(P_{l}(x_{n}))^{tln}

ここで、tlnは  \displaystyle \large
t_{n} = (0, \cdots, 0,1,0,\cdots, 0)
のように l(エル)番目のみが"1"の行列で、  \displaystyle \large x^{0} = 1 , x^{1} = x の性質を利用しています。

上記のPnは、ある行に限定されたものですので、 これをPの行列全体の確率にするには次の通り

 \displaystyle \large
P = \prod_{n=1}^{N} P_{n} = \prod_{n=1}^{N} \prod_{l=k}^{K}(P_{l}(x_{n}))^{tln}

上記の式は、掛け算が多く、計算効率が低い為、最後に  \displaystyle \large E = - log P の形に変形して完成。

 \displaystyle \large
\underline{
  E = - \sum_{n=1}^{N} \sum_{l=1}^{K} t_{ln} log Pl(x_{n})
}