「Coursera – 機械学習コース」の個人的なメモ (Week 4 -)


この記事の続きです。

ニューラルネットワーク

Week 1 – 3では2値分類・多クラス分類にロジスティック回帰を用いた。これを画像認識に用いることを考える。例えば\(50 \times 50 = 2500\)ピクセルのグレースケール画像に対して、各ピクセル値を特徴量とし、更に、それらの2次までを特徴量とすることを考えると、全特徴量の数は\(~3\times 10^6\)にものぼる。さらにそれを学習データ分計算するとなると、莫大な計算量になってしまい現実的でない。そこで、非線形関数を表現でき、かつ学習の計算コストを抑えられるクラス分類の手段として、人間の脳のニューロンをきわめて単純化したモデルである(人工)ニューラルネットワークと呼ばれるモデルを用いる。ニューロンの説明は省くが、ニューラルネットワークは下図のような処理を行う。(下記の\(a_0\)は図示しないことも多い。)

入力値は\(a_i^{(1)}=x_i \ (i=1,2,\cdots)\)に与えられ、それに対してそれぞれロジスティック回帰がなされ、2層目の\(a_i^{(2)} (i=1,2,\cdots)\)が作られる。同様にして3層目、上記構造の場合は出力層に伝達がなされる。ロジスティック回帰の場合と同様、\(a_0=1\)である。\(a_i^{(j)}\)は\(j\)層目の\(i\)番目のユニットの”activation”と呼ばれる。入力層と出力層以外の層は隠れ層と呼ばれる。上図のニューラルネットワーク構造を式にまとめると、以下の表現となる。
$$
\begin{eqnarray}
z_k^{(j)} &=& \Theta_{k,0}^{(j-1)}a_0 + \Theta_{k,1}^{(j-1)}a_1 + \cdots + \Theta_{k,n}^{(j-1)}a_n\\
a_k^{(j)}&=&g(z_k^{(j)})
\end{eqnarray}
$$
ただし\(g(x)\)はシグモイド関数である。行列表現に直すと、
$$
\begin{eqnarray}
z^{(j)} &=& \Theta^{(j-1)}a^{(j-1)}\\
a_k^{(j)}&=&g(z_k^{(j)})
\end{eqnarray}
$$
となる。(よって\(\Theta^{(j)}\)の次元は\(s_{j+1} \times (s_j + 1)\)であることに気をつけておきたい。)

最終段に注目すると、ロジスティック回帰によって生成された特徴量をもとに、one vs allの分類をクラスの数だけ行うことによって他クラス分類が可能にしていることがわかる。

ニューラルネットワークにおいてよく使われる表現

  • \(L\): ネットワーク全体の層数
  • \(s_l\): 第\(l\)層における、バイアス\(a_0\)を除いたユニット数

ニューラルネットワークの表現力

重み付け\(\Theta\)を変更することで、すべての論理演算が可能であることが講義で示されていた。個人的に思ったのは、\(a_0\)を加えることも含めて、核に対して像の次元を増やしていることによってXORのような非線形の表現が可能な決定境界面を構成することが可能になっているんだな、と理解した。

コスト関数

ロジスティック回帰のコスト関数
$$
J(\theta) = – \frac{1}{m} \sum_{i=1}^m [ y^{(i)}\ \log (h_\theta (x^{(i)})) + (1 – y^{(i)})\ \log (1 – h_\theta(x^{(i)}))] + \frac{\lambda}{2m}\sum_{j=1}^n \theta_j^2
$$
を見直すと、ニューラルネットワークにおけるコスト関数は、

  • ロジスティック回帰のコスト関数を出力層の各ユニットのコストの和をとり、
  • さらに、過学習を抑えるために、バイアスを除く\(\Theta\)の和を加える

ことにより、以下のように表される。
$$
J(\Theta) = – \frac{1}{m} \sum_{i=1}^m \sum_{k=1}^K \left[y^{(i)}_k \log ((h_\Theta (x^{(i)}))_k) + (1 – y^{(i)}_k)\log (1 – (h_\Theta(x^{(i)}))_k)\right] + \frac{\lambda}{2m}\sum_{l=1}^{L-1} \sum_{i=1}^{s_l} \sum_{j=1}^{s_{l+1}} ( \Theta_{j,i}^{(l)})^2
$$

上記のコスト関数は凸関数となっていないため、局所解=大域解ということは保証されない。しかし、それが大きく問題になることはないという。

最急降下法や、CG法等の最適化アルゴリズムを用いて上記コスト関数を最小化するためには、\(J(\Theta)\)に加えて\(\frac{\partial}{\partial \Theta_{i,j}^{(l)}}J(\Theta)\)を与える必要がある。

Back Propagation

a