Deep Learning基礎講座 第3回講義の復習ノートです。
先日の復習ノート: https://qiita.com/shuent/items/aa2f89ae6fca08619215
講座: https://deeplearning.jp/lectures/dlb2018/
今回は、MLPの理解と実装を通して、ニューラルネットワーク(NN)の概念を学ぶ、という内容です。
#2,#3を乗り越えればちゃんとついていけるということなので、頑張りましょう。前回と同じく、個人的なまとめなので、網羅した資料はスライドをご覧ください。
参考資料
https://www.deeplearningbook.org/ の5,6章。
講義まとめ
- おさらい+問題点
- 学習とは: T:Task(目的)のためにE:Experienceから学び、どの程度達成されたかをP:MeasureしてまたEをもとに向上すること。
- ロジスティック回帰は閉形式では解けないから、勾配法でパラメータを求める。
- 線形回帰は、パラメータを正規方程式で解けるから閉形式。
- この二手法の弱点は線形分離の仮定をすること。非線形データが分離不可。
- 非線形な例はXORデータ。
- MLP: Multi Layer Perceptron 多層パーセプトロン
- 非線形なデータを分離する基本的なアイディアは、データを高次元空間に写像φし、超平面で区切ること。
- SVMでのイメージ: https://www.youtube.com/watch?v=3liCbRZPrZA
- 方法1: 汎用関数を使う:カーネル関数、SVMなど
- 方法2: 特殊な関数を設計する: 人間による特徴設計。例: ツイートから地震検知「揺れた」+短い文字数 にしたらうまくいった
- 方法3: 大量のデータで関数φ自体を学習: MLPなどのNN手法
- MLP
- 回帰:1回の変換、MLP:複数の変換。隠れ層がある
- アフィン変換だけだと線型結合なので非線形に対応しないから、どこかで非線形な関数を使う。
- 非線形な関数の例:sigmoid, Tanh, ReLU
- 順伝播、誤差逆伝播と連鎖律
- 非線形なデータを分離する基本的なアイディアは、データを高次元空間に写像φし、超平面で区切ること。
- 次回
- モデル容量増加による勾配爆発・消失問題、過剰適合への解決法
- 正則化(DL7章)、最適化アルゴリズム(8章)
復習
閉形式:初等関数の合成により解を表せること
以下MLPについて。
隠れ層

左は単一パーセプトロン、右が多層(これは2層)パーセプトロン。MLPの真ん中のユニット、h = W_1x+b_1
が隠れ層。隠れ層を活性化関数に入れて、アウトプットを出す。
隠れ層が複数の時、隠れ層jを表すと
h_j = f_j(u_j) = f_j(W_j^T h_{j-1} + b_j )
ただし、$f$は活性化関数、$W$は行列、それ以外の文字はベクトル。最終的なアウトプットはこれを再帰的に繰り返し得られる。(順伝播)
誤差逆伝播 バックプロパゲーション
どうやってパラメータ W,bを求めるか?出力形式によって決まる。基本ロジスティック回帰と同じように、勾配法で求めるが、計算量削減と局所解トラップ回避のために入力データを層ごとにランダムで使う:確率的勾配法。
誤差関数を次で定義する。(2乗誤差を最小化するのによく使われる形)$N'$はミニバッチを表す。tは正解データ
E(\theta) = 1/N' \sum_{n \in D} E_n(\theta) \\
E_n = (y_n - t_n)^2
パラメータで偏微分する. ここで$W^{(L)}$は最終層の重み。
\frac{\partial E}{\partial W^{(L)}} = \frac{\partial E}{\partial y} \frac{\partial y}{\partial W^{(L)}}
あとは誤差逆伝播に関して参考サイトが詳しかったので見て見てください。(手抜き)
手順
順伝播と誤差逆伝播、パラメータ更新を繰り返して、パラメータが収束するまで続けます。この図がすごくわかりやすいので引用します。

参考
http://hokuts.com/2016/05/29/bp1/
https://qiita.com/Ugo-Nama/items/04814a13c9ea84978a4c
https://alphaimpact.jp/2017/05/11/multilayer-perceptron/