Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

機械学習プロフェッショナルシリーズ 深層学習 chapter3 確率的勾配降下法

8,330 views

Published on

ゼミ発表用に作成した機械学習プロフェッショナルシリーズ(MLP) 深層学習 第3章 「確率的勾配降下法」まとめスライドです.Deep learning初学者を対象としています.

Published in: Technology
  • Be the first to comment

機械学習プロフェッショナルシリーズ 深層学習 chapter3 確率的勾配降下法

  1. 1. + 深層学習 Chapter 3:確率的勾配降下法 @zakktakk
  2. 2. + ⽬次 1. 勾配降下法 2. ニュートン法 3. 確率的勾配降下法 4. ミニバッチ 5. 汎化性能と過適合 6. 過適合の緩和 i. 重み減衰 ii. 重み上限 iii. ドロップアウト 7. 学習のトリック i. データの正規化 ii. データ拡張 iii. 複数ネットの平均 iv. 学習係数の決め⽅ v. モメンタム vi. 重みの初期化 vii. サンプルの順序
  3. 3. + 勾配降下法 まずはアニメーションでざっくり理解… ←勾配降下法で最⼩値を求めたい関数 ←上の関数の微分 坂道を転がり落ち てるっぽい (http://qiita.com/kenmatsu4/items/d282054ddedbd68fecb0)
  4. 4. + 勾配降下法 ◯勾配降下法とは Ø ⽬的関数の局所的な最⼩値 (⼤域的な最⼩値とは限らない) を反復計算 で求める⽅法 Ø 何らかの初期値𝑤(#) を出発点に𝑤(%) を以下の式で更新する 𝒘(%'() = 𝒘(%) − 𝜖𝛻𝐸 𝐸 : ⽬的関数 𝜖 : 学習係数 𝑤 : 𝐸の変数 ◯具体的に深層学習のどの場⾯で⽤いられるのか? Ø 順伝播型ネットワークの誤差関数𝐸 𝒘 を最⼩化する際に⽤いる Ø 𝒘はネットワークの重みとバイアス 𝛻𝐸 ≡ 𝜕𝐸 𝜕𝒘 = 𝜕𝐸 𝜕𝑤( … 𝜕𝐸 𝜕𝑤2 3 勾配 のとき
  5. 5. + ちなみに… Ø 勾配降下法は関数の最⼩化⼿法で最も単純な⼿法 Ø 最⼩化⼿法にはニュートン法もあるよ! ◯ニュートン法とは Ø ⽬的関数の2次のテーラー展開を最⼩化するように,パラメータの 修正量を各ステップごとに決定するアルゴリズム Ø 勾配降下法よりも極⼩解への収束が早い 𝒘(%'() = 𝒘(%) − 𝐻5( 𝛻𝐸 𝐸 : ⽬的関数 𝑤 : 𝐸の変数 ヘッセ⾏列(Hessian matrix) 𝐻 = 𝛻6 𝐸 ニュートン法の詳細は → http://www.dais.is.tohoku.ac.jp/~shioura/teaching/mp11/mp11-13.pdf ニュートン法は勾配降下法と違い,学習係数の決定に 学習が⼤きく左右されることがない ディープネットの学習では ⽬的関数の2次微分の計算が 難しいのでニュートン法は つらい
  6. 6. + 確率的勾配降下法 ◯確率的勾配降下法(stochastic gradient descent : SGD)とは 𝒘(%'() = 𝒘(%) − 𝜖𝛻𝐸7 𝐸7 : サンプルnについての誤差関数 𝜖 : 学習係数 𝑤 : ネットワークの重みとバイアス ◯確率的勾配降下法のメリット Ø 計算効率が向上し,学習が速く実⾏できる Ø 望まない局所的な極⼩解にトラップされるリスクを低減 Ø 訓練データの収集と最適化の計算を同時並⾏で⾏える → オンライン学習 Ø 勾配降下法はすべてのサンプルを⽤いて重みを更新 → バッチ学習 Ø 訓練サンプルのうち1つのサンプルだけを使って以下のように パラメータの更新を⾏う⽅法 Ø 重みの更新に⽤いるサンプルは毎回取り替える
  7. 7. + ミニバッチ Ø 計算規模の⼤きいニューラルネットワークの学習では計算機 が持つ並列計算資源の利⽤が不可⽋ Ø 重みの更新を少数のサンプルからなる集合(ミニバッチ)単位で ⾏うと効率的 Ø 1つのミニバッチを𝐷%とすると,ミニバッチ単位の重み更新で⽤いる 誤差関数は以下の通り 𝐸%(𝒘) ≡ 1 𝑁% ; 𝐸7 𝒘 7∈=> 𝐸7 : サンプルnについての誤差関数 𝑁% : ミニバッチが含むサンプル数 Ø ミニバッチのサイズは10~100サンプル前後とすることが多い → サイズを⼤きくし過ぎると計算速度が低下 Ø 多クラス分類の場合はミニバッチに各クラスから1つ以上の サンプルを⼊れるとbetter
  8. 8. + 可視化して⽐較すると… (http://sinhrks.hatenablog.com/entry/2014/11/24/205305) ミニバッチ+SGDは 勾配降下法と確率的勾配降下法の いいところを両取りしている
  9. 9. + 汎化性能と過適合 Ø これまでは訓練データに対する誤差を最⼩化することを考えていた Underfitting Overfitting Ø 実際は「まだ⾒ぬ」サンプルに対して正しく推定を⾏いたい (汎化性能) Ø 訓練データに対する誤差→訓練誤差,テストデータに対する誤差→テスト誤差 学習が進むと,訓練誤差は単調減少するが テスト誤差は訓練誤差と乖離 or 増加 過適合(overfitting) 学習の進⾏のイメージ→ 過適合では外れ値に 対して過剰に反応
  10. 10. + 過適合の緩和 Ø 過適合 ↔ 学習時に誤差関数の浅い局所解にトラップされた状態 ネットワークの⾃由度(主に重みの数)が⼤きいほど 過適合のリスク and ネットワークの表現能⼒が⾼くなる 学習時に重みの⾃由度を制約する正則化に よって過適合の問題を解決 単純にネットワークの⾃由度を減らすことは 過適合のリスクも下げるが,ネットワークの 表現能⼒も下げるため望ましくない
  11. 11. + 過適合の緩和法 ◯重み減衰 𝒘(%'() = 𝒘(%) − 𝜖 1 𝑁% ; 𝛻𝐸7 + 𝜆 𝒘(%) 𝐸%(𝒘) ≡ 1 𝑁% ; 𝐸7 𝒘 + 𝜆 2 𝒘 6 7∈=> 𝜆 : 正則化パラメータ 通常𝜆=0.01~0.00001 Ø 以下のように誤差関数に重みの⼆乗和を加算し, これの最⼩化を⾏う Ø 最終項の追加により,学習時により⼩さい重みが選好される. 勾配降下法の更新式は以下の通り ※重み減衰は通常ネットワークの重みだけに適⽤し, バイアスには適⽤しない 重みは⾃⾝の⼤きさに⽐例した速さで常に減衰
  12. 12. + 過適合の緩和法 ◯重み上限 ; 𝑤CD 6 < 𝑐 D Ø 各ユニットの結合重みの⼆乗和に対し,上限を制約 Ø 上限を超える場合は重みに1以下の定数を掛け,制約を満たす ようにする Ø 重み減衰を上回る効果があり,特に後述のドロップアウトと 共に⽤いると⾼い効果を発揮 正則化の種類 テストデータ分類誤差(%) 重み減衰 1.62 重み上限 1.35 ドロップアウト+重み減衰 1.25 ドロップアウト+重み上限 1.05 表:各正則化⼿法ごとの⼿書き数字認識MNISTの分類精度の⽐較
  13. 13. + 過適合の緩和法 ◯ドロップアウト Ø 多層ネットワークのユニットを確率的に選別して学習する⽅法 Ø 学習時,中間層と⼊⼒層のユニットを確率𝑝(通常𝑝 =0.5程度)で ランダムに選出し,それら以外を無効化する 𝑖 𝑝𝑤(D 𝑧D 𝑝𝑤6D 𝑧D 𝑝𝑤JD 𝑧D 𝑝𝑤KD 𝑧D Ø 学習終了後の推論時にはドロップアウトで無効化 の対象とした層のユニットの全ての出⼒を𝑝倍する 左のネットワークの中間層,⼊⼒層のユニットを 確率𝑝でランダムに選出し,ネットワークの重みを更新
  14. 14. + 学習のトリック この世には学習時に実⾏することで 汎化性能を向上 or 学習を早く進められる ⽅法がいくつか存在する 以降のスライドでは本で紹介されている7つの⽅法を紹介します より詳しくは → https://www.cs.toronto.edu/~hinton/absps/guideTR.pdf その多くは 厳密な理論を伴わないノウハウのようなもの であるが,実際に効果が認められている
  15. 15. + データの正規化 𝑥7D ← 𝑥7D − 𝑥̅D 𝜎D 𝜎D : 学習データの標準偏差 𝑥̅D : 全学習データの平均 Ø 訓練データの偏りをなくすような前処理 Ø テストデータおよび推論時の各データにも同じ前処理を施す必要あり Ø 以下の変換を⾏い,サンプルの各成分の平均を0,分散を1にする (a) 元のサンプル集合 (b) 平均を0にする変換後 (c) 成分ごとの分散を1にする変換後 これもデータの偏りをなくす前処理の⼀つ (d) ⽩⾊化:成分間の相関を0にする変換 𝜎Dが超⼩さい場合は代わり にmax(𝜎,𝜖) (𝜖は⼩さな値) で割ったりする データの正規化
  16. 16. + データ拡張 Ø サンプルが画像データならば,平⾏移動・鏡像反転・回転変動・⾊の変動 などの処理を施し,サンプルに追加 Ø 訓練サンプルに何らかの加⼯を施し,量を⽔増しする処理 元データ ⾊の変動 鏡像反転 回転+拡⼤ Ø 訓練サンプルの量が⾜りないことは過適合の最⼤の原因 Ø しかし,⼤量のサンプルを集めることはコスト⼤ or 不可能 データの⽔増しをしよう! ◯データ拡張とは?
  17. 17. + 複数ネットの使⽤ Ø ドロップアウトは単⼀ネットワーク内で実質的にモデル平均を 実⾏している Ø 「モデル平均」と呼ばれ,機械学習全般で有効な⽅法 Ø 精度は向上するが,学習およびテスト時の計算量が増加してしまう という⽋点がある Ø 複数の異なるニューラルネットを組み合わせる(=複数のネット ワークから得られる出⼒の平均を答えとする)と⼀般に推定精度が 向上 n 具体的には構造の異なるネットワークや構造は同じだが 学習開始時の初期値が異なるネットワークなど
  18. 18. + 学習係数の決め⽅ Ø 学習係数を決める際,定番といえる考え⽅は以下の2つ n 学習の進捗とともに学習係数を⼩さくする n 層ごとに異なる値を⽤いる Ø 学習係数を⾃動的に定める(変化させる)⽅法はいくつか存在する n 本書では最もよく使われる⽅法としてAdaGradを紹介 その他の⽅法は → http://sebastianruder.com/optimizing-gradient-descent/ Ø 勾配法ではパラメータの更新量の⼤きさは学習係数により変化 n 誤差関数の勾配を𝒈% ≡ 𝛻𝐸%と書き,このベクトルの成分を𝑔%,D と書くと,重みの更新量の𝑖成分は以下の通り −𝜖𝑔%,D勾配降下法: − 𝜖 ∑ 𝑔%T,D 6% %TU( 𝑔%,DAdaGrad: 勾配の累積が⼤きいほど学習率を⼩さくする
  19. 19. + モメンタム Ø 重みの修正量に,前回の重みの修正量のいくばくかを加算する⽅法 Ø ミニバッチt-1に対する重みの修正量を∆𝒘(%5() ≡ 𝒘 %5( − 𝒘(%56) と すると,ミニバッチtは以下のように重みを更新 ミニバッチ利⽤時の更新式 モメンタム 𝒘(%'() = 𝒘(%) − 𝜖𝛻𝐸% + 𝜇∆𝒘(%5() 𝜇 : モメンタム係数 通常0.5~0.9程度 Ø 誤差関数が深い⾕状であり,かつ⾕底が平らな時に特に有効 Ø 勾配降下法の収束性能を向上させる⽅法の⼀つ ←⾕状誤差関数の重み探索の様⼦ 左:モメンタム項なし 右:モメンタム項あり(𝜇=0.5) モメンタム項なしではジグザグと探索が進み効率が悪いが, モメンタム項ありでは⾕と直⾏⽅向の動きが平均化され,なくなる
  20. 20. + 重みの初期化 Ø ガウス分布から⽣成したランダム値を初期値とする⽅法が⼀般的 Ø ガウス分布の標準偏差𝜎は以下のようにするのがbetter 𝜎 = 𝜎X 𝑀 ( 6 𝜎X : ユニットの総⼊⼒の標準偏差 𝑀 : ユニットの⼊⼒側結合数 𝜎Xは定数ではなく パラメータです 𝑀は定数です Ø ガウス分布のパラメータ𝜎をどう選ぶかは学習の結果に影響を及ぼす n 例えば活性化関数がロジスティック関数の場合, 𝜎が⼩さすぎる → 等しく0を初期値とするのと同様 𝜎が⼤きすぎる → ユニットの出⼒が値域の上下限いずれかの 値に偏る
  21. 21. + サンプルの順序 Ø 確率的勾配降下法やミニバッチを⽤いる場合,提⽰する サンプル(集合)の順序には任意性がある ↔ 設計者が⾃由に決められる Ø ⼀般に,まだよく学習されていないサンプルから順に提⽰すると効果的 Ø ただし,ディープネットでは処理の効率性に重点が置かれるため あまり⽤いられない Ø 特にクラスごとのサンプル数に偏りがあるクラス分類問題で有効

×