Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Deep Learning 1 (Chapter 6)

banquet.kuma
February 03, 2020

Deep Learning 1 (Chapter 6)

自習を兼ねて「ゼロから作るDeep Learning」1巻 6章まとめ

banquet.kuma

February 03, 2020
Tweet

More Decks by banquet.kuma

Other Decks in Technology

Transcript

  1. 講座の流れ 【講座の⽬的】 ・ニューラルネットワークの理論を理解し、説明できるようになる ・基本的な動作をPythonで実装できるようになる ・ライブラリ活⽤時のパラメータの意味が理解できる 回 分野 章 キーワード 第1回

    推論 2、3 ニューラルネットワーク、 活性化関数、⾏列計算 第2回 学習 4、5 損失関数、数値微分、 勾配法、誤差逆伝搬 第3回 学習 6 SDG、Adam、過学習、 ハイパーパラメータ 全3回を予定 2
  2. 1. 前回発表の補⾜(誤解している恐れのある箇所の訂正) 2. 勾配法の効率化⼿法 ⇒ 「効率的」に⾕底を⽬指す最適化⼿法 3. 適正な「重み」から学習を始める 第3回の⽬標︓学習に使われる様々なテクニックの仕組みを理解する ディープラーニングでは、現実的な時間内の「学習」で

    予測精度を確保するために様々なテクニックが使われています 講座の流れ 機能 確実性 汎化性 効率性 ⽅法 重みの初期 値 適性化 Batch Normalizati on Weight decay Dropuot 最適化 アルゴリズ ム ハイパーパ ラメタ チューン 概要 ニューロン からの出⼒ に「適度な 広がりが」 を持たせて、 確実に学習 を進める⽅ 法 ニューロン からの出⼒ に強制的に 「適度な広 がりが」を 持たせて、 確実に学習 を進める⽅ 法 罰則項を設 けて、重み が過⼤にな ることを避 け、過学習 を防ぐ⽅法 ニューロン をランダム に消去し、 パラメータ の数を減ら すことで過 学習を防ぐ ⽅法 様々な損失 関数におい て、⼤局的 最適解を効 率的に得る ⽅法 様々なハイ パーパラ メーターを 効率的に決 める⽅法 3
  3. 前回発表の補⾜(3/6) 「オンライン学習」と「ミニバッチ学習」を例に再度説明します 名称 オンライン学習 ミニバッチ学習 バッチ学習 エントロピー誤差 更新のタイミング 1⽂字毎 1バッチ毎

    全データ毎 メリット ・計算コストが⼩さい ・データ全て保管して おかなくて良い ・データの性質の変化 に機敏に対応できる ・局所最適解に陥りに くい ・局所最適解に陥りに くい ・バッチ学習に対して 計算コストが⼩さい ・外れ値の影響を受け にくい デメリット ・外れ値の影響を受け やすい ・局所最適解に陥りや すい ・新データを⼊れると、 全データで計算しなお す必要がある − ∑,-. / t, log y, − 1 6 7-8 9 6 :-. ; : log : − 1 6 7-8 ? 6 :-. ; : log : k︓クラス数、B︓1バッチの⽂字数、N︓全⽂字数 7
  4. L ⾕底 ミニバッチ学習の場合は、バッチごとに更新する ⼊⼒データが(バッチ数、784)の⾏列になることに注意︕ L 初期位置 ⾕底 動かす⽅向 L 1バッチ⽬更新後位置

    ⾕底 前回発表の補⾜(6/6) 1バッチ⽬の更新 2バッチ⽬の更新 2バッチ⽬更新後位置 + = 28 28 (1,784)×(784,784) オンライン学習の場合 ミニバッチ学習の場合 + = (9,784)×(784,784) 10
  5. 1. 前回発表の補⾜(誤解している恐れのある箇所の訂正) 2. 勾配法の効率化⼿法 ⇒ 「効率的」に⾕底を⽬指す最適化⼿法 3. 適正な「重み」から学習を始める 第3回の⽬標︓学習に使われる様々なテクニックの仕組みを理解する ディープラーニングでは、現実的な時間内の「学習」で

    予測精度を確保するために様々なテクニックが使われています 確実に学習を進めるテクニック(1/10) 機能 確実性 汎化性 効率性 ⽅法 重みの初期 値 適性化 Batch Normalizati on Weight decay Dropuot 最適化 アルゴリズ ム ハイパーパ ラメタ チューン 概要 ニューロン からの出⼒ に「適度な 広がりが」 を持たせて、 確実に学習 を進める⽅ 法 ニューロン からの出⼒ に強制的に 「適度な広 がりが」を 持たせて、 確実に学習 を進める⽅ 法 罰則項を設 けて、重み が過⼤にな ることを避 け、過学習 を防ぐ⽅法 ニューロン をランダム に消去し、 パラメータ の数を減ら すことで過 学習を防ぐ ⽅法 様々な損失 関数におい て、⼤局的 最適解を効 率的に得る ⽅法 様々なハイ パーパラ メーターを 効率的に決 める⽅法 12
  6. 1層⽬ ⼊⼒X (1000,100) N(0,1) の乱数 各層100個の ニューロン 2層⽬ 3層⽬ 4層⽬

    5層⽬ 活性関数︓sigmoid 重み初期値︓N(0, σ2) = Z = ℎ() Z1 Z2 Z3 Z4 Z5 各層のニューロンが100個、5層のネットワークを考える 重みをN(0,σ2)で初期化した場合の各層からの出⼒を調べる 確実に学習を進めるテクニック(2/10) 13
  7. 重みの 初期値 (, ) (, . ) ニュー ロン からの

    出⼒ 活性 関数 と重み 分布の 関係 初期の重みの標準偏差によって各層からの出⼒の分布が⼤きく異なる 標準偏差⼤︓出⼒が0 , 1に偏る ⇒ 勾配消失により学習進まない 標準偏差⼩︓出⼒が0.5に偏る ⇒ 「表現の制限」の点で問題 頻度 頻度 出⼒値 出⼒値 頻度/出⼒値 頻度/出⼒値 ⼊⼒値 ⼊⼒値 出⼒値 の幅 確実に学習を進めるテクニック(3/10) 14
  8. 重みの 初期値 (, ( )) ニュー ロン からの 出⼒ 活性

    関数 と重み 分布の 関係 活性化関数にSigmoid関数、tanh関数(中央が線形)を適⽤したネットワークで は、前層のニューロン数の平⽅根の逆数を標準偏差に取る正規分布で初期化するこ とが多い(Xavierの初期化) i-1層⽬ i層⽬ 1 の標準偏差を持つ 正規分布で初期化 ⼊⼒値 頻度/出⼒値 確実に学習を進めるテクニック(4/10) 16
  9. 重みの 初期値 (, . ) (, ( )) (, (

    )) ニュー ロン からの 出⼒ 活性 関数 と重み 分布の 関係 活性化関数にReLU関数を適⽤したネットワークでは、前層のニューロン数の平⽅根の 逆数の2倍を標準偏差に取る正規分布で初期化することが多い (Heの初期化) 頻度 出⼒値 出⼒値 頻度 出⼒値 頻度 ⼊⼒値 頻度/出⼒値 ⼊⼒値 頻度/出⼒値 ⼊⼒値 頻度/出⼒値 確実に学習を進めるテクニック(5/10) 17
  10. ミニバッチごとにニューロンからの出⼒を「標準化」し、次の層に伝達する この⼿法を「Batch Normalization」という 1層⽬ Batch Norm 2層⽬ Batch Norm 3層⽬

    8 V 8.. 8 V 8.. m:ミニバッチ数 , ︓学習で決定する係数 (: =1 , : = 0から開始) (1,784)⾏列 (1,784)⾏列 (1,784)⾏列 (m,784)⾏列 各層100個の ニューロン : ← : Z : + : 確実に学習を進めるテクニック(8/10) 20
  11. ミニバッチ学習 100⽂字/バッチ 20epochs学習させる 中間層(100)×5 正解率 Batch Normなし Batch Normあり 正解率

    正解率 正解率 Batch Normを適⽤したネットワークでは、 いずれのWの初期値でも学習が進んでいる 活性化関数︓ReLU 確実に学習を進めるテクニック(9/10) 21
  12. 1. 前回発表の補⾜(誤解している恐れのある箇所の訂正) 2. 勾配法の効率化⼿法 ⇒ 「効率的」に⾕底を⽬指す最適化⼿法 3. 適正な「重み」から学習を始める 第3回の⽬標︓学習に使われる様々なテクニックの仕組みを理解する ディープラーニングでは、現実的な時間内の「学習」で

    予測精度を確保するために様々なテクニックが使われています 汎化性能を⾼めるテクニック(1/5) 機能 確実性 汎化性 効率性 ⽅法 重みの初期 値 適性化 Batch Normalizati on Weight decay Dropuot 最適化 アルゴリズ ム ハイパーパ ラメタ チューン 概要 ニューロン からの出⼒ に「適度な 広がりが」 を持たせて、 確実に学習 を進める⽅ 法 ニューロン からの出⼒ に強制的に 「適度な広 がりが」を 持たせて、 確実に学習 を進める⽅ 法 罰則項を設 けて、重み が過⼤にな ることを避 け、過学習 を防ぐ⽅法 ニューロン をランダム に消去し、 パラメータ の数を減ら すことで過 学習を防ぐ ⽅法 様々な損失 関数におい て、⼤局的 最適解を効 率的に得る ⽅法 様々なハイ パーパラ メーターを 効率的に決 める⽅法 この話 24
  13. ディープラーニングの主たる過学習抑制⼿法は、Weight decay と Dropout 名称 Weight decay Dropout 概要 損失関数に重みの2乗

    ノルムを加えること で、重みが過⼤にな ることを防ぎ、過学 習を抑制する 学習時にランダムに ニューロンを消去し、 パラメータ数を減ら し、過学習を抑制す る メリット 実装が簡単 ⼤規模なネットワー クにも対応可能 汎化性能を⾼めるテクニック(3/5) 26
  14. Weight decay L ← L + 1 2 λV V=

    w8 V + wV V + ⋯ + w7 V 損失関数に重みの⼆乗和を加える ことで、重みが過⼤になることを防ぐ λは罰則の強さをコントロールする ハイパーパラメータ = 0 = 0.1 正解率の隔たりが減少 汎化性能を⾼めるテクニック(4/5) 27
  15. 1. 前回発表の補⾜(誤解している恐れのある箇所の訂正) 2. 勾配法の効率化⼿法 ⇒ 「効率的」に⾕底を⽬指す最適化⼿法 3. 適正な「重み」から学習を始める 第3回の⽬標︓学習に使われる様々なテクニックの仕組みを理解する ディープラーニングでは、現実的な時間内の「学習」で

    予測精度を確保するために様々なテクニックが使われています 効率的に学習させるテクニック(1/10) 機能 確実性 汎化性 効率性 ⽅法 重みの初期 値 適性化 Batch Normalizati on Weight decay Dropuot 最適化 アルゴリズ ム ハイパーパ ラメタ チューン 概要 ニューロン からの出⼒ に「適度な 広がりが」 を持たせて、 確実に学習 を進める⽅ 法 ニューロン からの出⼒ に強制的に 「適度な広 がりが」を 持たせて、 確実に学習 を進める⽅ 法 罰則項を設 けて、重み が過⼤にな ることを避 け、過学習 を防ぐ⽅法 ニューロン をランダム に消去し、 パラメータ の数を減ら すことで過 学習を防ぐ ⽅法 様々な損失 関数におい て、⼤局的 最適解を効 率的に得る ⽅法 様々なハイ パーパラ メーターを 効率的に決 める⽅法 30
  16. ディープラーニングの勾配法のアルゴリズムには主に以下の4種類があり、 問題に応じて上⼿く使い分けることが⼤切 名称 SGD Momentum AdaGrad Adam アルゴリズム 次項参照 メリット

    実装が簡単 ⼤きく更新さ れた次の回の 更新量は⼩さ く、「ジグザ グ」を低減で きる パラメータご とに学習率が 調整できる Momentumと AdaGradの ハイブリッド デメリット 関数が等⽅的 でないと⾮効 率な経路で探 索する ハイパーパラ メータの数が1 つ増える 学習を繰り返 すと更新量が0 になる ハイパーパラ メータの数⼤ 幅に増える ← − ρ L ← − ρ bc b +∆ ← + ( L )V ← − ρ 1 L 効率的に学習させるテクニック(2/10) 31
  17. f(x,y) = 8 V. V + V 以下の等⽅的でない関数の勾配法による最適化を考える x y

    x y f(x,y)を表す図 傾斜⽅向を表す図 スタート ゴール 効率的に学習させるテクニック(3/10) 32
  18. • SGDはその地点の傾きの⽅向にパラメータを更新する • 等⽅的な傾きを持つ関数でないとジグザグな挙動になり⾮効率 ← − ρ L :重み、ρ:学習率、 L︓損失関数

    x ← x − ρ f(x, y) x y ← y − ρ f(x, y) y 重みの更新の式に置き換えると 効率的に学習させるテクニック(4/10) 33
  19. • Momentumは、前回の更新量によって更新量を調整 • ⼤きく更新されたパラメータの次回の更新量を減らして、ジグザグを低減 ← − ρ bc b +∆

    x ← x − ρ bk(l,m) bl +∆x y ← y − ρ bk(l,m) bm +∆y 重みの更新の式に置き換えると ∆x , ∆y :前回の更新量、 ≅ 0.9 ⼤きく更新された⽅向の動きを打ち消す 慣性的な動きを⾏う 効率的に学習させるテクニック(5/10) 34
  20. • AdaGradは、過去の更新量に応じてパラメータごとに学習率を減衰 • ⼤きく更新されたパラメータの学習率を減衰させ、ジグザグを低減 ← + ( L )V ←

    − ρ 1 L (bk(l,m) bl )Vこれまでの傾きの2乗和を保持 ℎp ← ℎp + ( f(x, y) x )V x ← x − ρ 1 ℎp f(x, y) x 重みの更新の式に置き換えると 全てのパラメータで学習率が共通なのは不⾃然では︖ 毎回⼤きく更新されるパラメータの学習率は減らしたい 逆に毎回勾配がゼロのパラメータは、たまに勾配がある時 は⼤きく更新する 効率的に学習させるテクニック(6/10) 35
  21. • Adamは、Momentum と AdaGrad改良版のハイブリッド • 直近の更新量が⼤きいパラメータの学習率を特に減衰させ、ジグザグを低減 . = . =

    0 s = (1 − 8 ) ∑:-8 s 8 st:( bc b ) v s = s 1 − 8 s Z s = s 1 − V s ← − ρ v s Z s + 推奨値 :8 =0.9 , V = 0.999 , ρ=0.001 , =10-8 t : 繰り返し回数 s = (1 − V ) ∑:-8 s V st:(bc b ): V これまでの更新量の情報を活かしながら、 直近の更新量を重視 ステップ数が増えても更新量が0にならない⼯夫 が施されている 効率的に学習させるテクニック(7/10) 36
  22. ハイパーパラメータのチューニング⽅法には以下の4つがある 初⼼者は「⼿動」での調整をおすすめしない 名称 ⼿動 グリッドサーチ ランダムサーチ ベイズ最適化 概要 ⼿動でパラメータを振 り分けて精度を確認す

    る 各パラメータの候補を 定め、組み合わせを全 て探索する 各パラメータの候補を 定め、パラメータごと にランダムに、設定回 数だけ探索する 以前に計算した履歴に 基づいて、次に探索す べきパラメータをベイ ズ確率を⽤いて探索す る メリッ ト/デ メリッ ト パラメータへの理解が 深ければ、着実に精度 を上げることができる /作業者に⼿間がかか る 探索するパラメータの 候補を把握しやすい/ 探索点が膨⼤になり得 る 探索点が膨⼤でも探索 できる/最適なパラ メータを探索できると は限らない 探索履歴を使うことで、 精度が良い可能性の⾼ いパラメータを効率良 く探索できる 説明図 出典︓⾨脇⼤輔 他 「Kaggleで勝つデータ分析の技術」技術評論社(2019) 全格⼦点で正解率を求める 正解率の良さそうなエリアを 重点的に測定 ある範囲内でランダムに測定 効率的に学習させるテクニック(8/10) 37
  23. 正解率の⾼いパラメータの組を選択する 中間層(100)×6 ミニバッチ学習 100⽂字/バッチ 50epochs学習させる 60,000⽂字のうちの400⽂字だけで学習 検証データは100⽂字 ランダムサーチで100組み試⾏ L ←

    L + 1 2 λV ← − ρ L , ︓罰則項の強さ、学習率 ハイパーパラメータ 探索範囲︓ 10-8 〜 10-4 10-6 〜 10-2 正解率 正解率 正解率 正解率 訓練データ 検証データ 効率的に学習させるテクニック(10/10) 39