hessian free
TRANSCRIPT
© 2017 Retrieva, Inc.
DeepLearningの最適化とHessian Free株式会社レトリバ西鳥羽 二郎
レトリバセミナー• 毎週水曜日の 12 時〜 13 時で実施• テーマは自由 ( 技術的とは限らない )
• 但し、必ず公開できる内容にして必ずオープンにする• Youtube で公開し保存
• https://www.youtube.com/channel/UC5mjAq3PgaWhwcRyun7gteQ
• 是非チャンネル登録して下さい !!© 2017 Retrieva, Inc. 2
自己紹介• 西鳥羽二郎 (ID: jnishi)
• 取締役• リサーチャー
• 自然言語処理• 音声認識
© 2017 Retrieva, Inc. 3
今日の話• 数値最適化問題の話• Deep Learning の学習における数値最適化• Hessian Free
© 2017 Retrieva, Inc. 4
数値最適化問題
© 2017 Retrieva, Inc. 5
最適化• 目的関数 f(θ)
• f: 連続関数• θ: 入力で与えるパラメータ
• f(θ) の値を最小化するパラメータ θ とその時の値を求めたい
© 2017 Retrieva, Inc. 6
最適化の簡単なケース• 問題設定• 2 次元• 目的関数はスカラー値
© 2017 Retrieva, Inc. 7
© 2017 Retrieva, Inc. 8copyright: ForestWander Nature photograpyhttp://www.ForestWander.com
月のない夜道、突然背後から襲われ気絶しました…気づいたら真っ暗な闇の中…ここは山の中だろうか…あなたは遭難時の鉄則に従い、山頂を目指して歩くことに…
最適化問題との対応• 登る方向 : 勾配• 高さ : 目的関数の値• 最適化手法• ( どこを歩いているか分からないにせよ ) 高いところに向かって歩く• どちらへ行こうとしても下る方向の時、その地点が求めたい所である
© 2017 Retrieva, Inc. 9
もうちょっと最適化問題との対応• 最小化
• 谷底を見つける• 方向を決めた後にワープをする
• 下り坂の方に方向を定める• 勾配に応じて移動距離を決める
• 傾きが急であるときは良い方向であるので移動距離を長めに設定する• 傾きが緩やかであるときは様子見で移動距離を短めにする
© 2017 Retrieva, Inc. 10
Deep Learningにおける数値最適化
© 2017 Retrieva, Inc. 11
local minimum
© 2017 Retrieva, Inc. 12
こっちの方が高かった暗闇の中頑張って登ったら
Cliff
© 2017 Retrieva, Inc. 13
傾きが急すぎて明後日の方向へ急激に移動してしまう
本当はこちらに進んで欲しい
鞍点 (Saddle Point)
© 2017 Retrieva, Inc. 14
このあたりを行ったり来たりしていてなかなか赤い方向へ進まない
ill-conditioning
• 最適化の基本となっている微分には実は誤差がある
© 2017 Retrieva, Inc. 15
この部分が大きくて勾配の誤差となる
Deep Learningの学習における課題
© 2017 Retrieva, Inc. 16
• Deep Learning の学習における最適化は時間がかかる• DeepSpeech2(Baidu): GPU1 台だと 3〜 6週間• RNN 言語モデル (Google): Tesla K40 を 32台で 10日
Deep Learningの学習における工夫• 学習の高速化についての工夫は以下の点に注目して行われてい
る• イテレーションの回数• 1 イテレーションあたりの時間
© 2017 Retrieva, Inc. 17
Deep Learningの学習における工夫• 学習の高速化についての工夫は以下の点に注目して行われてい
る• イテレーションの回数• 1 イテレーションあたりの時間
© 2017 Retrieva, Inc. 18
イテレーション回数• Ill-conditioning, Cliff, Plateaus 上でも目的関数の値が良くなる方
向を効率的に求める工夫• momentum
• 学習係数の自動調整 (Adaptive Learning Rate)
• gradient clipping
• etc.© 2017 Retrieva, Inc. 19
momentum
• 一つ前に動いた方向の情報を覚えておき、• 同じ方向に動いた際にはその方向には加速する• 逆の方向に動いた際にはその方向の動きは抑制する
© 2017 Retrieva, Inc. 20
momentum 無し momentum 有りcopyright: postd
学習係数の自動調整• 各次元において、学習データでの含有具合に応じて更新量を調
整する• 学習データで頻出する次元に関しては更新量を小さく• 学習データでまれなに出現する次元に関しては更新量を多く
© 2017 Retrieva, Inc. 21
gradient clipping
• 勾配が急であれば大きくする更新量の大きさに制限を加える
© 2017 Retrieva, Inc. 22
Deep Learningの学習における工夫• 学習の高速化についての工夫は以下の点に注目して行われてい
る• イテレーションの回数• 1イテレーションあたりの時間
© 2017 Retrieva, Inc. 23
1イテレーションあたりの時間• GPU の特性を活かして高速化を行う• 学習データ毎に以下の計算をする
© 2017 Retrieva, Inc. 24
• forward• backward• 更新するパラメータの計算 1度の GPU で計算する単位これを大きくすることに寄って高速化が出来る
GPUで計算する量を多くする
© 2017 Retrieva, Inc. 25
モデルのサイズ• 層の大きさ• 層の数• (RNN の場合 )系列の長さ
入力のミニバッチのサイズ
バッチサイズを大きくする
xDeep Learning の計算量のオーダー ≒
SGDベースの最適化収束を早める工夫 1イテレーションあたり
の計算の高速化
SGDベースの最適化 momentum学習係数の自動調整gradient clipping
〜 128 or 256程度のminbatch を用いる
© 2017 Retrieva, Inc. 26
Hessian Free
© 2017 Retrieva, Inc. 27
Hessian
説明 行列演算名
1 次微分 関数の勾配 J: Jacobian
2 次微分 曲率 ( 勾配の勾配 )
H: Hessian
© 2017 Retrieva, Inc. 28
Hessian行列
© 2017 Retrieva, Inc. 29
i 行 j列の要素において、xi と xj で偏微分している
Hessianの利点 (その 1)
• ill-conditioning で触れた 2 次の Taylor展開の誤差も考慮できる
© 2017 Retrieva, Inc. 30
勾配の誤差となっていたこの情報も考慮できる
Hessianの利点 (その 2)
• Hessian を用いた 2 次最適化アルゴリズムを用いることができる• 一般には 2 次収束する• ( ただし、 Deep Learning に用いた時に 2 次収束するかどうかは示さ
れていない )
© 2017 Retrieva, Inc. 31
Hessianの利点 (その 3)
•鞍点から抜け出すための情報が含まれている
© 2017 Retrieva, Inc. 32
鞍点の場合、それぞれの次元における Hessian の固有値の符号が違う
Hessianを用いた最適化収束を早める工夫 バッチサイズの大きさ
SGDベースの最適化 勾配momentum学習係数の自動調整gradient clipping
〜 128 or 256
Hessian を用いた最適化
勾配 +曲率情報
© 2017 Retrieva, Inc. 33
Hessian行列
© 2017 Retrieva, Inc. 34
パラメータ x パラメータのサイズ
Hessianを用いる時の課題• Hessian 行列が巨大である• パラメータ数の 2乗のオーダーのメモリが必要• パラメータ数の 3乗のオーダーの計算量を必要とする• Deep Learning の場合パラメータ数は数百万〜数千万個
© 2017 Retrieva, Inc. 35
Hessianを用いる• Hessian を用いる最適化には以下の特徴がある• xHx の様に Hessian を用いた計算結果は必要• 一方、 Hessian の値を直接参照する必要はない
© 2017 Retrieva, Inc. 36
Hessianを必要とする例• Conjugate Gradient
• ( この例だと A=H)
© 2017 Retrieva, Inc. 37
Hessian を用いるところの計算結果はパラメータ数のオーダー
Hessianを必要とする例• Bi-CG-STAB
• (A=H)
© 2017 Retrieva, Inc. 38
Hessian を用いるところの計算結果はパラメータ数のオーダー
Hessianの用いる際の計算の工夫• 最終結果がベクトル (= パラメータ数のオーダー )
•計算過程に工夫をすればパラメータ数の 3乗の計算 ( 行列積 )は必要ないのではないか
© 2017 Retrieva, Inc. 39
Hessian Free
• Hx のような Hessian 行列 x ベクトルの値をベクトルの内積で近似する• それによりパラメータ数の 3乗のオーダーの計算量をパラメー
タ数のオーダーに減らすことができる
© 2017 Retrieva, Inc. 40
Hessian演算の近似• H(Hessian) と v(ベクトル ) の積を次の式で近似する
© 2017 Retrieva, Inc. 41
各パラメータの二階の微分ベクトルと v の積で近似
H(θ)の求め方
© 2017 Retrieva, Inc. 42
各パラメータの⊿を用いてforward のような処理を行う
H(θ)の求め方
© 2017 Retrieva, Inc. 43
⊿を用いて損失関数の2階微分を求める
H(θ)の求め方
© 2017 Retrieva, Inc. 44
back propagation のような処理を行う
MNISTにおける比較
© 2017 Retrieva, Inc. 45
学習データにおける損失
MNISTにおける比較
© 2017 Retrieva, Inc. 46
テストデータにおける精度
GPUで計算する量を多くする (再掲 )
© 2017 Retrieva, Inc. 47
モデルのサイズ• 層の大きさ• 層の数• (RNN の場合 )系列の長さ
入力のミニバッチのサイズ
バッチサイズを大きくする
xDeep Learning の計算量のオーダー ≒
MNISTにおける比較
© 2017 Retrieva, Inc. 48
バッチサイズ 2048
MNISTにおける比較
© 2017 Retrieva, Inc. 49
バッチサイズ 2048までは収束が早くなっている
Hessianを用いた最適化収束を早める工夫 バッチサイズの大きさ
SGDベースの最適化 勾配momentumsecond-momentumgradient clipping
〜 128 or 256
Hessian を用いた最適化
勾配 +曲率情報 数千
© 2017 Retrieva, Inc. 50
まとめ• 数値最適化は暗闇の中で山を登っていくようなもの• Deep Learning における最適化の難しさ• Hessian Free の紹介• Hessian の曲率の情報を用いた最適化• 大きいバッチサイズに対応
© 2017 Retrieva, Inc. 51
参考文献• 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