More Related Content
Similar to 深層学習 第4章 大規模深層学習の実現技術 (20)
深層学習 第4章 大規模深層学習の実現技術
- 2. 4.1 はじめに
4.2 深層学習の最適化
4.2.1 深層学習の基本計算
活性化関数、勾配降下法
誤差逆伝播法、連鎖律
4.2.2 確率的勾配降下法
ミニバッチ法
4.3 高速化手法
4.3.1 分散並列処理:DistBelief
モデル並列化、データ並列化、Downpour SGD
Sandblaster L-BFGS、LBFGS法
4.3.2 GPUを用いた大規模ニューラルネットワークの実現
4.3.3 InfiniBandの利用
4.3.4 学習収束の高速化
バッチ正規化、内部共変量シフト、蒸留、暗黒知識
©田中孝昌 2
- 3. 4.4 過学習制御:DropOut
4.5 活性化関数
4.5.1 ReLU
4.5.2 MaxOut
4.6 学習率の調整
4.6.1 AdaGrad
4.6.2 Adam
4.6.3 超パラメータの最適化
グリッド探索、ランダム探索
4.7 実装技術
4.7.1 実装の正しさのチェック
中心差分
4.8 おわりに
©田中孝昌 3
- 5. 4.2.1 深層学習の基本計算:勾配降下法
• 𝑦を予測するモデルを𝑓(𝜃)とし, 𝜃は重みとする
• 全学習データ𝑁における実績値𝑦とモデルからの予測値 𝑦の差を示す損
失関数𝐿(𝜃)を最小にする𝜃∗を求める
• 𝜃(𝑡)
における𝐿(𝜃)の勾配𝑣を求め、勾配の方向へ学習率𝜏の分だけ更新
した𝜃(𝑡+1)で再び𝐿(𝜃)の勾配を求める
• 勾配が十分に小さくなる,もしくは十分に試行したときに探索を止める,こ
れらはハイパーパラメータになる
©田中孝昌 5
𝜃 𝑡+1
← 𝜃 𝑡
− 𝜏𝑣 (4.2)
𝐿 𝜃 =
𝑛=1
𝑁
𝐿 𝑛(𝜃)𝑣 =
𝜕𝐿(𝜃)
𝜕𝜃
|𝜃 = 𝜃 𝑡
- 7. 4.2.2 確率的勾配降下法
©田中孝昌 7
• 勾配降下法において𝐿(𝜃)は全学習データ𝑁から求められるが
確率的勾配降下法において𝐿(𝜃)はランダムに選択された
1つのサンプル𝑛から求められる
• 並列計算資源を有効活用するために1つのサンプル𝑛ではなく,
10から100程度のサイズ𝐵のサンプルを1つのミニバッチ𝐷𝑡として𝑡個の
ミニバッチを用いて確率的勾配降下法を行うことをミニバッチ法という
𝐿 𝜃 =
𝑛=1
𝑁
𝐿 𝑛(𝜃) 𝐿 𝜃 = 𝐿 𝑛(𝜃)
(勾配降下法) (確率的勾配降下法)
𝐿 𝜃 =
1
𝐵𝑡
𝑛∈𝐷𝑡
𝐿 𝑛(𝜃)
(ミニバッチ法)
(参考)深層学習,岡谷貴之,講談社
- 9. 4.3.1 分散並列処理:DistBelief
• DistBelief以前
– MapReduce(2004,Google)
• 自明な並列性/ノード間通信少→深層学習に不適
– 分散並列処理SGD
• マシンごとの計算時間、通信時間がばらつき最遅マシ
ンによる待ち時間
• パラメータ更新時の排他制御による待ち時間
• 上記排他制御をしない方式は特徴ベクトルおよび勾
配が疎なら更新の衝突確率が低く成功するが、深層
学習の場合は密であるので困難
©田中孝昌 9
- 11. 4.3.1 分散並列処理:DistBelief
• Model parallelism • Data parallelism
– Downpour SGD(online)
– Sandblaster L-BFGS(batch)
Large Scale Distributed Deep Networks(2012)
http://research.google.com/pubs/pub40565.html
©田中孝昌 11
各ノードがラン
ダムに選んだ
学習データを保
持、PSから重み
を受け取り、勾
配を返す
各ノードが分割
された学習デー
タを保持、PSか
ら重みを受け取
り、勾配を返す
- 12. 4.3.1 分散並列処理:DistBelief
• DistBeliefは大規模ニューラルネットワークの口
火を切った研究(2012)
• Jeff DeanらはDistBeliefを改良したTensorFlowを
Googleの第二世代機械学習システムとして発表
(2015)
– TensorFlowはオープンソースとして公開中
– Jeff DeanはDistBeliefを非常に成功であったがいくつ
かの制約があったと評価
• ニューラルネットワークに特化
• 理解が困難
• Googleの内部インフラと密接に関係するためコードが公開
できなかった
TensorFlow - Google’s latest machine learning system, open sourced for everyone
http://googleresearch.blogspot.jp/2015/11/tensorflow-googles-latest-machine_9.html
©田中孝昌 12
- 13. 4.3.2 GPUを用いた大規模ニューラルネットワークの実現
• The free lunch is over [2004]
– ソフトウェア開発者は何もしなくてもハードウェア開発者が処理性能を
上げてくれていた(時代が終わった)
– 分散並列処理の時代(マルチコア、マルチノード)
https://www.karlrupp.net/2015/06/40
-years-of-microprocessor-trend-data/
©田中孝昌 13
トランジスタ数
を増やしても処
理性能が上が
らなくなった
- 18. 4.3.4 学習収束の高速化:バッチ正規化
(Batch Normalization)
• SGDのミニバッチ法実行時にミニ
バッチごとのデータ分布の違い
(内部共変量シフト internal
covariate shift)が発生
• 学習が遅くなったり、初期値依存
性が高まる
• だからミニバッチごとに平均0、分
散1に正規化
• Back propagationのときΓ,βを推定
©田中孝昌 18
(論文)http://jmlr.org/proceedings/papers/v37/ioffe15.pdf
(参考) http://qiita.com/supersaiakujin/items/8a465ecb1dcbc7df8b02
- 19. 4.3.4 学習収束の高速化
• 蒸留
– 大きなモデル(教師モデル)からヒント(暗黒知識)を
貰い、性能の良い小さなモデル(生徒モデル)を作る
手法
– 生徒モデルの学習時は入力データ(ハードターゲット)
と教師モデルの出力(ソフトターゲット)の確率分布の
交差エントロピーの重み付き和を最小化
• ハードターゲット
– 学習事例の1-of-n表現
• ソフトターゲット
– 教師モデルの出力する確率分布
– 式4.9のTを1より大きくして平滑化
©田中孝昌 19
- 20. 4.4 過学習制御:DropOut
• アンサンブル学習の一種
• 訓練データごとにランダム(ハイパーパラメータα)にノードを無効化して学習
• 推論時は各ノードからの出力をα倍し、各学習時のモデルからの推論の幾何平均
に近似
• L2正則化と同じ効果(wを全体的に小さくする)
©田中孝昌 20
(参考)Deep learningの技術と未来 http://www.slideshare.net/beam2d/deep-learning-22544096
- 22. 4.5.2 活性化関数:MaxOut
• Dropoutを活かす手法として開発
• 任意の凸関数を近似可能
• MNISTの判別でMaxOut+DropoutがRectifier+Dropoutに勝利
©田中孝昌 22
(論文)Maxout Networks
http://jmlr.org/proceedings/papers/v28/goodfellow13.pdf
(参考)
http://www.slideshare.net/stjunya/maxout-networks
http://www.slideshare.net/beam2d/deep-learning-22544096
- 23. 4.6.1 学習率の調整:AdaGrad
• 各次元ごとに今までの勾配の2乗和をとって平方根をとって割る
• ハイパーパラメータはひとつだけ
• 学習の初期に学習率の分母が小さ過ぎて、学習率が大きくなり過ぎ、学
習が失敗する問題がある
©田中孝昌 23
(論文) Adaptive Subgradient Methods for Online Learning and Stochastic Optimization
http://jmlr.org/papers/volume12/duchi11a/duchi11a.pdf
(参考) http://www.logos.t.u-tokyo.ac.jp/~hassy/deep_learning/adagrad/
SGD
AdaGrad
学習率を少しずつ小さくしていく効果
- 24. 4.6.2 学習率の調整:Adam
• 勾配の向きの変化に反応する
– 変化が少ないとE(g)/ E(𝑔2)は1に近づき、多いと分子E(g)
が相対的に小さくなる
©田中孝昌 24
(論文) A METHOD FOR STOCHASTIC OPTIMIZATION
http://arxiv.org/pdf/1412.6980v8.pdf
(参考)30分でわかるAdam,echizen_tm
https://ja.scribd.com/doc/260859670/30minutes-Adam
𝜃𝑡= 𝜃𝑡−1-𝛼E(g)/ E(𝑔2)
SGD
Adam
勾配の向きが毎回変わって
いるようなら学習率が大きす
ぎると考え小さくする効果
- 25. 4.6.3 学習率の調整:超パラメータの最適化
• グリッド探索よりランダム探索のほうがよい
– グリッドで重要なパラメータ(特に学習率)を固定
しても無駄
– ランダムは計算をいつやめてもよい
– ランダムは非同期で計算できる
– 試行が失敗しても無視すればいい
©田中孝昌 25
(論文) Practical recommendations for gradient-based training of deep architectures
http://arxiv.org/pdf/1206.5533v2.pdf
(参考) Practical recommendations for gradient-based training of deep architectures
http://www.slideshare.net/koji_matsuda/practical-recommendation-fordeeplearning
- 26. 4.7.1 実装技術:実装の正しさのチェック
• 一次差分近似を用いて求められた勾配と比
較(𝜖 = 10−4
が目安)
• 小さいデータセットで訓練誤差が小さくなるか
確認
©田中孝昌 26
(論文) Practical recommendations for gradient-based training of deep architectures
http://arxiv.org/pdf/1206.5533v2.pdf
(参考) Practical recommendations for gradient-based training of deep architectures
http://www.slideshare.net/koji_matsuda/practical-recommendation-fordeeplearning