ラビットチャレンジ 深層学習day2レポート 要点まとめ

Section1 勾配消失問題

誤差逆伝播法が下位層に進んでいくに連れて微分を繰り返すために、勾配がどんどん緩やかになっていく。そのため、勾配降下法による、更新では下位層のパラメータはほとんど変わらず、訓練は最適値に収束しなくなる。

シグモイド関数の課題

誤差逆伝播法は微分の連鎖律により層が深くなればなるほど何度も微分を繰り返すことになる。
そんな中、シグモイド関数の微分値は最高でも0.25しか取らない。
100層のニューラルネットワークでは最高でも0.25の微分結果を100回乗算しないといけない。そうすると誤差は非常に小さなものになってしまう。

勾配消失の解決方法

活性化関数の選択

ReLu関数

微分形が0か1のどちらかを取る。中間層が増えても微分値が1なので値が小さくならず、勾配消失問題が回避できる。
微分値が0の重みはなくなって必要な重みが選択的に残る。これをスパース化という。

初期値の設定方法

Xavier(ザビエルと読む)

ニューラルネットを学習し始める時、初期値には通常、正規分布に従った乱数が用いられる。その乱数を前のレイヤーのノード数の平方根で除算した値を初期値に設定する。

各レイヤーを通った後の値はどれもある程度のバラツキを持ちつつ、0や1に値が偏らない望ましい重みになる。

S字カーブになっている活性化関数に対してXavierの初期化はうまく働く。

He

S字カーブではないReLuのような活性化関数に有効な初期化設定方法。
重みの要素を、前の層のノード数の平方根で除算した値に対し√2をかけ合わせた値に設定する

バッチ正規化

ミニバッチ単位で、入力値のデータの偏りを抑制する手法。
batch_size(ミニバッチのサイズ)は2の倍数、特に8の倍数が使われる。

メリット

  • 中間層の重みの更新が安定化する。→全体の計算の量が抑えられる。
  • 過学習を抑えられる。

Section2 学習率最適化手法

勾配降下法は重みを誤差に基づいた修正量によって新しい重みとして用いる手法だった。

この学習率が大きすぎても小さすぎても学習がうまく進まないため、工夫して決めるようになった。それが最適化手法。
現在、一般的に用いられているのはAdam。

モメンタム

誤差をパラメータで微分したものと学習率の積を減算した後、現在の重みに前回の重みを減算した値と慣性の積を加算する。

前回の重みを使って学習の調整量を決定しているので、学習初期は進みが遅いが、回数を重ねると加速する。

メリット

  • 局所的最適解にはならず、大域的最適解となる。
  • 谷間についてから最も低い位置(最適値)にいくまでの時間が早い。

AdaGrad

 

hは個別の重みに対して調整するような機能を持っている。
Θは最初適当な値。

誤差をパラメータで微分したものと再定義した学習率の積を減算する。

メリット
勾配の緩やかな斜面に対して、最適値に近づける

課題
学習率が徐々に小さくなるので、鞍点問題を引き起こす事があった。
鞍点問題:どの方向に対しても勾配がゼロに近い場所で学習が進まない問題。形が馬につける鞍に似ていることから。

RMSProp

鞍点問題をスムーズに解決できるようにした手法。
αでどのくらい過去の情報を活かすか決められる。

誤差をパラメータで微分したものと再定義した学習率の積を減算する

メリット

  • 局所的最適解にはならず、大域的最適解となる。
  • ハイパーパラメータの調整が必要な場合が少ない

Adam

モメンタムとRMSPropの良いところどり
モメンタムの過去の勾配の指数関数的減衰平均
RMSPropの過去の勾配の2乗の指数関数的減衰平均
上記をそれぞれ孕んだ最適化アルゴリズムである

Adamは滑らかな曲線で学習が進むので、人間が学習がうまく進んでいることが確認しやすい。ギザギザに進むようなものは判断しづらい。

Section3 過学習

学習用データに特化してしまって、検証用データでうまくいかないこと。
エポック数:学習回数のこと

過学習が起きやすいのは・・・
入力値:少 ニューラルネット:大
⇒ ネットワークの自由度が大きいとき

正則化手法

正則化とは、ネットワークの自由度(層数、ノード数、パラメータの値etc…)を制約すること
過学習の原因
重みが大きい値をとることで過学習が発生することがある。
重みが大きい値が取ることで一部の重みを過大評価してしまうことで過学習が起こる。

過学習の解決策
誤差に対して、正則化項を加算することで、重みを抑制する。
過学習がおこりそうな重みの大きさ以下で重みをコントロールし、かつ重みの大きさにばらつきを出す必要がある。

L1正則化 → ラッソ回帰
L2正則化 → リッジ回帰

ドロップアウト

過学習の課題はノード数が多いことが一因だった。
そこでランダムにノードを削除して学習させることをドロップアウトという。

メリット
データ量を変化させずに、異なるモデルを学習させていると解釈できる

 

Section4 畳み込みニューラルネットワークの概念

画像の識別や処理によく用いるニューラルネットワーク。
しかし画像だけに限定されずにCNNは次元間でつながりのあるデータを扱える。
画像、動画、アニメのスケルトン、音声、フーリエ変換した音声、CTスキャン画像など。

全結合層のデメリット

画像の場合、縦、横、チャンネルの3次元データだが、1次元のデータとして処理される。

⇒RGBの各チャンネル間の関連性が、学習に反映させたい。

畳み込み層

画像の場合、周りのピクセルを使いながら出力層になるので次元間のつながりが保たれる。

  • フィルター
    全結合でいう重みで、畳み込み演算を行う。
  • パディング
    畳み込みをすると出力が少し小さくなる。
    何回も畳み込みを繰り返すとどんどん小さくなるのでそれを防ぐための処理。
    フィルターを通す前に入力画像に1ピクセル~をつけ足すことで入力画像と同じサイズになる。
  • ストライド
    フィルターの移動量のこと
    ストライド1:1つ動かす
    ストライド2:2つ動かす
  • チャンネル
    フィルターの数

プーリング層

重みを使わない。
対象領域のMax値または平均値を取得する。
MaxPooling 最大値
AugPooling 平均値

全結合層

入力として前の層の結果を全部受取り、次の層へすべてのノードの出力する。
今までのNNのこと。
次元のつながりを保ったまま人間が欲しい結果を得る層。

Section5 最新のCNN(AlexNet)

2012年にImageNetコンペティションで優勝したモデル

モデルの構造
5層の畳み込み層およびプーリング層など、それらに続く3層の全結合層から構成される。

過学習を防ぐ施策
サイズ4096の全結合層の出力にドロップアウトを使用している

全結合層にドロップアウトを配置することがAlexNetに限らず、非常に多くなっている。

 

 

コメント

タイトルとURLをコピーしました