Coursera Deep Learning専門講座の受講メモ (コース2 - Improving Deep Neural Networks - Week 2)

この記事のまとめ:

コース2:Improving Deep Neural Networksについて

これまでに受講したコース1のNeural Networks and Deep Learningに続き、コース2ではImproving Deep Neural Networksと題して、主に次の内容を3週に渡って学びます。

Week 2の概要

この講座のWeek 2では、Deep Neural Networkを行うときに、大量の学習データを細切れに処理する方法であるミニバッチ処理について学びます。

ミニバッチ勾配降下法 (Mini-batch gradient descent)

Deep Neural Networkを使う際、ハイパーパラメーターの調整などトライ&エラーをせざるえないのが現状ですが、学習データセットが500万個など大量にある場合、1回の試行の結果を得るために時間がかかる過ぎてしまいます。そこで考えられた方法がミニバッチ処理で、学習データを分割して比較的少ない学習データで試行を回す方法がよく使われます。

64 ()から512 ()の範囲がよくつかわれるようですが、CPU/GPUのメモリサイズに応じて設計します。

なお、ミニバッチ処理に対して、学習データセットを分割しない場合にはバッチ処理といいます。また、ミニバッチ処理において、すべての学習データについてをエポック (epoch)ともいいます。

ただし、ミニバッチ処理を行うことで生じる課題があります。扱うデータ数が少なくなってしまうため、コスト関数の平均と分散がミニバッチ間で変動しやすくなるという課題です。つまり、ミニバッチごとの重み更新量(傾き )が過剰に変動するということが生じます。それらに対して対応する方法を紹介します。

モメンタムを使った勾配降下法 (Gradient descent with momentum)

平均を安定化させるために、モメンタム(勢い)を考慮して、傾き を指数移動平均を使って平均化します。 つまり、重みの更新式を次のように変更します。

なお、 はハイパーパラメーターであり、の値を取ります。

上記は傾き についてですが、バイアス についても同様に計算します。

RMSprop (Root Mean Square Propagation)

同様に分散を平均化するための手法としてRMSpropがあります。先ほどと同様に傾き の分散を指数移動平均を使って平均化します。

" " は要素ごとの累乗、またはアダマールパワー (Element-wise power/ Hadamard power) を表しています。

なお、 はハイパーパラメーターであり、の値を取ります。

上記は傾き についてですが、バイアス についても同様に計算します。

バイアス補正 (Bias correction)

指数移動平均を行う際、初期の試行においては初期値に大きく作用してしまいます。これを補正する手法がバイアス補正です。

モメンタムの場合を例に取り上げると次のように を更新します。

はミニバッチ処理の試行回数です。 が小さいときのみこの補正が大きく作用し、 を増幅してくれます。

この を用いて、 を次のように更新します。

Adam最適化アルゴリズム (Adaptive momentum estimation optimization algorithm)

Adam最適化アルゴリズムは、モメンタムとRMSpropを両方採用したアルゴリズムです。

初期化

モメンタム

RMSprop

バイアス補正

重み更新

はゼロ割をしないための定数で 等非常に小さい値を使います。

同様に、バイアス についても行います。

学習率減衰 (Learning rate decay)

学習初期は学習率を大きくして更新ステップを大きくすることで最適解を荒く探し、学習終盤では学習率を小さくして更新ステップを小さくすることで最適解に微細に間違いなく近づけるということも最適化手法の一つです。

このやり方としてはいくつかありますので、いくつか試して使い分ければよいでしょう。

  1. 定割合減衰
  1. 指数減衰
  1. 階段状減衰

  2. 手動減衰


今回は以上です。 最後まで読んでいただき、ありがとうございます。
関連記事

コメント

このブログの人気の投稿

LinuxでのnVidia GPUのオーバークロック・電力チューニング方法

【レビュー】 格安VPSサービスTime4VPSを1年強使ってみてわかったメリット・デメリット・注意点