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.

Hessian free

1,534 views

Published on

2017年2月1日にレトリバセミナーでHessian Freeについて話した資料です。

Published in: Technology
  • Be the first to comment

Hessian free

  1. 1. DeepLearningの最適化と Hessian Free 株式会社レトリバ 西鳥羽 二郎 © 2017 Retrieva, Inc.
  2. 2. レトリバセミナー • 毎週水曜日の12時〜13時で実施 • テーマは自由(技術的とは限らない) • 但し、必ず公開できる内容にして必ずオープンにする • Youtubeで公開し保存 • https://www.youtube.com/channel/UC5mjAq3PgaWhwcRyun7gteQ • 是非チャンネル登録して下さい!! © 2017 Retrieva, Inc. 2
  3. 3. 自己紹介 • 西鳥羽二郎(ID: jnishi) • 取締役 • リサーチャー • 自然言語処理 • 音声認識 © 2017 Retrieva, Inc. 3
  4. 4. 今日の話 • 数値最適化問題の話 • Deep Learningの学習における数値最適化 • Hessian Free © 2017 Retrieva, Inc. 4
  5. 5. 数値最適化問題 © 2017 Retrieva, Inc. 5
  6. 6. 最適化 • 目的関数 f(θ) • f: 連続関数 • θ: 入力で与えるパラメータ • f(θ)の値を最小化するパラメータθとその時の値を求めたい © 2017 Retrieva, Inc. 6
  7. 7. 最適化の簡単なケース • 問題設定 • 2次元 • 目的関数はスカラー値 © 2017 Retrieva, Inc. 7
  8. 8. © 2017 Retrieva, Inc. 8 copyright: ForestWander Nature photograpy http://www.ForestWander.com 月のない夜道、突然背後から襲われ気絶しました… 気づいたら真っ暗な闇の中… ここは山の中だろうか… あなたは遭難時の鉄則に従い、山頂を目指して歩くことに…
  9. 9. 最適化問題との対応 • 登る方向: 勾配 • 高さ: 目的関数の値 • 最適化手法 • (どこを歩いているか分からないにせよ) 高いところに向かって歩く • どちらへ行こうとしても下る方向の時、その地点が求めたい所である © 2017 Retrieva, Inc. 9
  10. 10. もうちょっと最適化問題との対応 • 最小化 • 谷底を見つける • 方向を決めた後にワープをする • 下り坂の方に方向を定める • 勾配に応じて移動距離を決める • 傾きが急であるときは良い方向であるので移動距離を長めに設定する • 傾きが緩やかであるときは様子見で移動距離を短めにする © 2017 Retrieva, Inc. 10
  11. 11. Deep Learningにおける数値最適化 © 2017 Retrieva, Inc. 11
  12. 12. local minimum © 2017 Retrieva, Inc. 12 こっちの方が高かった暗闇の中頑張って登ったら
  13. 13. Cliff © 2017 Retrieva, Inc. 13 傾きが急すぎて明後日の方向へ 急激に移動してしまう 本当はこちらに 進んで欲しい
  14. 14. 鞍点(Saddle Point) © 2017 Retrieva, Inc. 14 このあたりを行ったり 来たりしていてなかな か赤い方向へ進まない
  15. 15. ill-conditioning • 最適化の基本となっている微分には実は誤差がある © 2017 Retrieva, Inc. 15 この部分が大きくて 勾配の誤差となる
  16. 16. Deep Learningの学習における課題 © 2017 Retrieva, Inc. 16 • Deep Learningの学習における最適化は時間がかかる • DeepSpeech2(Baidu): GPU1台だと3〜6週間 • RNN言語モデル(Google): Tesla K40を32台で10日
  17. 17. Deep Learningの学習における工夫 • 学習の高速化についての工夫は以下の点に注目して行われてい る • イテレーションの回数 • 1イテレーションあたりの時間 © 2017 Retrieva, Inc. 17
  18. 18. Deep Learningの学習における工夫 • 学習の高速化についての工夫は以下の点に注目して行われてい る • イテレーションの回数 • 1イテレーションあたりの時間 © 2017 Retrieva, Inc. 18
  19. 19. イテレーション回数 • Ill-conditioning, Cliff, Plateaus上でも目的関数の値が良くなる方向 を効率的に求める工夫 • momentum • 学習係数の自動調整(Adaptive Learning Rate) • gradient clipping • etc. © 2017 Retrieva, Inc. 19
  20. 20. momentum • 一つ前に動いた方向の情報を覚えておき、 • 同じ方向に動いた際にはその方向には加速する • 逆の方向に動いた際にはその方向の動きは抑制する © 2017 Retrieva, Inc. 20 momentum無し momentum有り copyright: postd
  21. 21. 学習係数の自動調整 • 各次元において、学習データでの含有具合に応じて更新量を調 整する • 学習データで頻出する次元に関しては更新量を小さく • 学習データでまれなに出現する次元に関しては更新量を多く © 2017 Retrieva, Inc. 21
  22. 22. gradient clipping • 勾配が急であれば大きくする更新量の大きさに制限を加える © 2017 Retrieva, Inc. 22
  23. 23. Deep Learningの学習における工夫 • 学習の高速化についての工夫は以下の点に注目して行われてい る • イテレーションの回数 • 1イテレーションあたりの時間 © 2017 Retrieva, Inc. 23
  24. 24. 1イテレーションあたりの時間 • GPUの特性を活かして高速化を行う • 学習データ毎に以下の計算をする © 2017 Retrieva, Inc. 24 • forward • backward • 更新するパラメータの計算 1度のGPUで計算する単位 これを大きくすることに 寄って高速化が出来る
  25. 25. GPUで計算する量を多くする © 2017 Retrieva, Inc. 25 モデルのサイズ • 層の大きさ • 層の数 • (RNNの場合)系列の長さ 入力のミニバッチのサイズ バッチサイズを大きくする xDeep Learningの計算量の オーダー ≒
  26. 26. SGDベースの最適化 収束を早める工夫 1イテレーションあたり の計算の高速化 SGDベースの最適化 momentum 学習係数の自動調整 gradient clipping 〜128 or 256程度の minbatchを用いる © 2017 Retrieva, Inc. 26
  27. 27. Hessian Free © 2017 Retrieva, Inc. 27
  28. 28. Hessian 説明 行列演算名 1次微分 関数の勾配 J: Jacobian 2次微分 曲率(勾配の勾配) H: Hessian © 2017 Retrieva, Inc. 28
  29. 29. Hessian行列 © 2017 Retrieva, Inc. 29 i行j列の要素において、 xi とxj で偏微分している
  30. 30. Hessianの利点(その1) • ill-conditioningで触れた2次のTaylor展開の誤差も考慮できる © 2017 Retrieva, Inc. 30 勾配の誤差となって いたこの情報も考慮 できる
  31. 31. Hessianの利点(その2) • Hessianを用いた2次最適化アルゴリズムを用いることができる • 一般には2次収束する • (ただし、Deep Learningに用いた時に2次収束するかどうかは示され ていない) © 2017 Retrieva, Inc. 31
  32. 32. Hessianの利点(その3) • 鞍点から抜け出すための情報が含まれている © 2017 Retrieva, Inc. 32 鞍点の場合、それぞれの次元に おけるHessianの固有値の符号 が違う
  33. 33. Hessianを用いた最適化 収束を早める工夫 バッチサイズの大きさ SGDベースの最適化 勾配 momentum 学習係数の自動調整 gradient clipping 〜128 or 256 Hessianを用いた最適化 勾配+曲率情報 © 2017 Retrieva, Inc. 33
  34. 34. Hessian行列 © 2017 Retrieva, Inc. 34 パラメータxパラメータのサイズ
  35. 35. Hessianを用いる時の課題 • Hessian行列が巨大である • パラメータ数の2乗のオーダーのメモリが必要 • パラメータ数の3乗のオーダーの計算量を必要とする • Deep Learningの場合パラメータ数は数百万〜数千万個 © 2017 Retrieva, Inc. 35
  36. 36. Hessianを用いる • Hessianを用いる最適化には以下の特徴がある • xHxの様にHessianを用いた計算結果は必要 • 一方、Hessianの値を直接参照する必要はない © 2017 Retrieva, Inc. 36
  37. 37. Hessianを必要とする例 • Conjugate Gradient • (この例だとA=H) © 2017 Retrieva, Inc. 37 Hessianを用いる ところの計算結果 はパラメータ数の オーダー
  38. 38. Hessianを必要とする例 • Bi-CG-STAB • (A=H) © 2017 Retrieva, Inc. 38 e scaling of different part in distributed HF on upto 32 nodes (1,152 cores). always find a descent di- gative directions, the ap- unbounded below, which uch direction (at least lo- ximation is valid). It was nd Prieto (2008) that if al- e directions, it will even- critical point. improved method to find y stabilized bi-conjugate Algorithm 3), which is ed to solve unsymmetri- Algorithm 3 Bi-CG-STAB Algorithm 1: Compute r0 := b − Ax0. Choose r∗ 0 such that (r0, r∗ 0) ̸= 0 2: p0 := r0, k := 0 3: if Termination condition not satisfied then 4: αj := (rj , r∗ 0)/ (Apj , r∗ 0) 5: sj := rj − αj Apj 6: γj := (sj , Asj )/ (Asj , Asj ) 7: xj + 1 := xj + αj pj + γj sj 8: rj + 1 := sj − γj Asj 9: βj := (r j + 1 ,r ∗ 0 ) (r j ,r ∗ 0 ) × α j γj 10: pj + 1 := rj + 1 + βj (pj − γj Apj ) 11: end if Hessianを用いる ところの計算結果 はパラメータ数の オーダー
  39. 39. Hessianの用いる際の計算の工夫 • 最終結果がベクトル(=パラメータ数のオーダー) • 計算過程に工夫をすればパラメータ数の3乗の計算(行列積)は必 要ないのではないか © 2017 Retrieva, Inc. 39
  40. 40. Hessian Free • Hx のようなHessian行列 x ベクトルの値をベクトルの内積で近 似する • それによりパラメータ数の3乗のオーダーの計算量をパラメー タ数のオーダーに減らすことができる © 2017 Retrieva, Inc. 40
  41. 41. Hessian演算の近似 • H(Hessian) と v(ベクトル)の積を次の式で近似する © 2017 Retrieva, Inc. 41 ) pproximated) Hessian-vector tor product ∇ 2 f [i ] (θk )v cor- ini-batch on each node i = o root node to obtain Gk (v) = 各パラメータの二階の微分 ベクトルとvの積で近似
  42. 42. H(θ)の求め方 © 2017 Retrieva, Inc. 42 各パラメータの⊿を用いて forwardのような処理を行う
  43. 43. H(θ)の求め方 © 2017 Retrieva, Inc. 43 ⊿を用いて損失関数の 2階微分を求める
  44. 44. H(θ)の求め方 © 2017 Retrieva, Inc. 44 back propagationのような 処理を行う
  45. 45. MNISTにおける比較 © 2017 Retrieva, Inc. 45 学習データに おける損失
  46. 46. MNISTにおける比較 © 2017 Retrieva, Inc. 46 テストデータに おける精度
  47. 47. GPUで計算する量を多くする(再掲) © 2017 Retrieva, Inc. 47 モデルのサイズ • 層の大きさ • 層の数 • (RNNの場合)系列の長さ 入力のミニバッチのサイズ バッチサイズを大きくする xDeep Learningの計算量の オーダー ≒
  48. 48. MNISTにおける比較 © 2017 Retrieva, Inc. 48 バッチサイズ2048
  49. 49. MNISTにおける比較 © 2017 Retrieva, Inc. 49 バッチサイズ2048 までは収束が早く なっている
  50. 50. Hessianを用いた最適化 収束を早める工夫 バッチサイズの大きさ SGDベースの最適化 勾配 momentum second-momentum gradient clipping 〜128 or 256 Hessianを用いた最適化 勾配+曲率情報 数千 © 2017 Retrieva, Inc. 50
  51. 51. まとめ • 数値最適化は暗闇の中で山を登っていくようなもの • Deep Learningにおける最適化の難しさ • Hessian Freeの紹介 • Hessianの曲率の情報を用いた最適化 • 大きいバッチサイズに対応 © 2017 Retrieva, Inc. 51
  52. 52. 参考文献 • James Marten, Ilya Sutskever Training Deep and Recurrent Networks with Hessian-Free Optimization • Ian Goodfellow and Yoshua Bengio and Aaron Courville Deep Learning • He, et al. Distributed Hessian-Free Optimization for Deep Neural Network • Krause, et al. On the Efficiency of Recurrent Neural Network Optimization Algorithms © 2017 Retrieva, Inc. 52

×