hessian free

52
DeepLearning ののののの Hessian Free 株株株株株株株株 株株 株株 西 © 2017 Retrieva, Inc.

Upload: jiro-nishitoba

Post on 13-Apr-2017

404 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Hessian free

© 2017 Retrieva, Inc.

DeepLearningの最適化とHessian Free株式会社レトリバ西鳥羽 二郎

Page 2: Hessian free

レトリバセミナー• 毎週水曜日の 12 時〜 13 時で実施• テーマは自由 ( 技術的とは限らない )

• 但し、必ず公開できる内容にして必ずオープンにする• Youtube で公開し保存

• https://www.youtube.com/channel/UC5mjAq3PgaWhwcRyun7gteQ

• 是非チャンネル登録して下さい !!© 2017 Retrieva, Inc. 2

Page 3: Hessian free

自己紹介• 西鳥羽二郎 (ID: jnishi)

• 取締役• リサーチャー

• 自然言語処理• 音声認識

© 2017 Retrieva, Inc. 3

Page 4: Hessian free

今日の話• 数値最適化問題の話• Deep Learning の学習における数値最適化• Hessian Free

© 2017 Retrieva, Inc. 4

Page 5: Hessian free

数値最適化問題

© 2017 Retrieva, Inc. 5

Page 6: Hessian free

最適化• 目的関数 f(θ)

• f: 連続関数• θ: 入力で与えるパラメータ

• f(θ) の値を最小化するパラメータ θ とその時の値を求めたい

© 2017 Retrieva, Inc. 6

Page 7: Hessian free

最適化の簡単なケース• 問題設定• 2 次元• 目的関数はスカラー値

© 2017 Retrieva, Inc. 7

Page 8: Hessian free

© 2017 Retrieva, Inc. 8copyright: ForestWander Nature photograpyhttp://www.ForestWander.com

月のない夜道、突然背後から襲われ気絶しました…気づいたら真っ暗な闇の中…ここは山の中だろうか…あなたは遭難時の鉄則に従い、山頂を目指して歩くことに…

Page 9: Hessian free

最適化問題との対応• 登る方向 : 勾配• 高さ : 目的関数の値• 最適化手法• ( どこを歩いているか分からないにせよ ) 高いところに向かって歩く• どちらへ行こうとしても下る方向の時、その地点が求めたい所である

© 2017 Retrieva, Inc. 9

Page 10: Hessian free

もうちょっと最適化問題との対応• 最小化

• 谷底を見つける• 方向を決めた後にワープをする

• 下り坂の方に方向を定める• 勾配に応じて移動距離を決める

• 傾きが急であるときは良い方向であるので移動距離を長めに設定する• 傾きが緩やかであるときは様子見で移動距離を短めにする

© 2017 Retrieva, Inc. 10

Page 11: Hessian free

Deep Learningにおける数値最適化

© 2017 Retrieva, Inc. 11

Page 12: Hessian free

local minimum

© 2017 Retrieva, Inc. 12

こっちの方が高かった暗闇の中頑張って登ったら

Page 13: Hessian free

Cliff

© 2017 Retrieva, Inc. 13

傾きが急すぎて明後日の方向へ急激に移動してしまう

本当はこちらに進んで欲しい

Page 14: Hessian free

鞍点 (Saddle Point)

© 2017 Retrieva, Inc. 14

このあたりを行ったり来たりしていてなかなか赤い方向へ進まない

Page 15: Hessian free

ill-conditioning

• 最適化の基本となっている微分には実は誤差がある

© 2017 Retrieva, Inc. 15

この部分が大きくて勾配の誤差となる

Page 16: Hessian free

Deep Learningの学習における課題

© 2017 Retrieva, Inc. 16

• Deep Learning の学習における最適化は時間がかかる• DeepSpeech2(Baidu): GPU1 台だと 3〜 6週間• RNN 言語モデル (Google): Tesla K40 を 32台で 10日

Page 17: Hessian free

Deep Learningの学習における工夫• 学習の高速化についての工夫は以下の点に注目して行われてい

る• イテレーションの回数• 1 イテレーションあたりの時間

© 2017 Retrieva, Inc. 17

Page 18: Hessian free

Deep Learningの学習における工夫• 学習の高速化についての工夫は以下の点に注目して行われてい

る• イテレーションの回数• 1 イテレーションあたりの時間

© 2017 Retrieva, Inc. 18

Page 19: Hessian free

イテレーション回数• Ill-conditioning, Cliff, Plateaus 上でも目的関数の値が良くなる方

向を効率的に求める工夫• momentum

• 学習係数の自動調整 (Adaptive Learning Rate)

• gradient clipping

• etc.© 2017 Retrieva, Inc. 19

Page 20: Hessian free

momentum

• 一つ前に動いた方向の情報を覚えておき、• 同じ方向に動いた際にはその方向には加速する• 逆の方向に動いた際にはその方向の動きは抑制する

© 2017 Retrieva, Inc. 20

momentum 無し momentum 有りcopyright: postd

Page 21: Hessian free

学習係数の自動調整• 各次元において、学習データでの含有具合に応じて更新量を調

整する• 学習データで頻出する次元に関しては更新量を小さく• 学習データでまれなに出現する次元に関しては更新量を多く

© 2017 Retrieva, Inc. 21

Page 22: Hessian free

gradient clipping

• 勾配が急であれば大きくする更新量の大きさに制限を加える

© 2017 Retrieva, Inc. 22

Page 23: Hessian free

Deep Learningの学習における工夫• 学習の高速化についての工夫は以下の点に注目して行われてい

る• イテレーションの回数• 1イテレーションあたりの時間

© 2017 Retrieva, Inc. 23

Page 24: Hessian free

1イテレーションあたりの時間• GPU の特性を活かして高速化を行う• 学習データ毎に以下の計算をする

© 2017 Retrieva, Inc. 24

• forward• backward• 更新するパラメータの計算 1度の GPU で計算する単位これを大きくすることに寄って高速化が出来る

Page 25: Hessian free

GPUで計算する量を多くする

© 2017 Retrieva, Inc. 25

モデルのサイズ• 層の大きさ• 層の数• (RNN の場合 )系列の長さ

入力のミニバッチのサイズ

バッチサイズを大きくする

xDeep Learning の計算量のオーダー ≒

Page 26: Hessian free

SGDベースの最適化収束を早める工夫 1イテレーションあたり

の計算の高速化

SGDベースの最適化 momentum学習係数の自動調整gradient clipping

〜 128 or 256程度のminbatch を用いる

© 2017 Retrieva, Inc. 26

Page 27: Hessian free

Hessian Free

© 2017 Retrieva, Inc. 27

Page 28: Hessian free

Hessian

説明 行列演算名

1 次微分 関数の勾配 J: Jacobian

2 次微分 曲率 ( 勾配の勾配 )

H: Hessian

© 2017 Retrieva, Inc. 28

Page 29: Hessian free

Hessian行列

© 2017 Retrieva, Inc. 29

i 行 j列の要素において、xi と xj で偏微分している

Page 30: Hessian free

Hessianの利点 (その 1)

• ill-conditioning で触れた 2 次の Taylor展開の誤差も考慮できる

© 2017 Retrieva, Inc. 30

勾配の誤差となっていたこの情報も考慮できる

Page 31: Hessian free

Hessianの利点 (その 2)

• Hessian を用いた 2 次最適化アルゴリズムを用いることができる• 一般には 2 次収束する• ( ただし、 Deep Learning に用いた時に 2 次収束するかどうかは示さ

れていない )

© 2017 Retrieva, Inc. 31

Page 32: Hessian free

Hessianの利点 (その 3)

•鞍点から抜け出すための情報が含まれている

© 2017 Retrieva, Inc. 32

鞍点の場合、それぞれの次元における Hessian の固有値の符号が違う

Page 33: Hessian free

Hessianを用いた最適化収束を早める工夫 バッチサイズの大きさ

SGDベースの最適化 勾配momentum学習係数の自動調整gradient clipping

〜 128 or 256

Hessian を用いた最適化

勾配 +曲率情報

© 2017 Retrieva, Inc. 33

Page 34: Hessian free

Hessian行列

© 2017 Retrieva, Inc. 34

パラメータ x パラメータのサイズ

Page 35: Hessian free

Hessianを用いる時の課題• Hessian 行列が巨大である• パラメータ数の 2乗のオーダーのメモリが必要• パラメータ数の 3乗のオーダーの計算量を必要とする• Deep Learning の場合パラメータ数は数百万〜数千万個

© 2017 Retrieva, Inc. 35

Page 36: Hessian free

Hessianを用いる• Hessian を用いる最適化には以下の特徴がある• xHx の様に Hessian を用いた計算結果は必要• 一方、 Hessian の値を直接参照する必要はない

© 2017 Retrieva, Inc. 36

Page 37: Hessian free

Hessianを必要とする例• Conjugate Gradient

• ( この例だと A=H)

© 2017 Retrieva, Inc. 37

Hessian を用いるところの計算結果はパラメータ数のオーダー

Page 38: Hessian free

Hessianを必要とする例• Bi-CG-STAB

• (A=H)

© 2017 Retrieva, Inc. 38

Hessian を用いるところの計算結果はパラメータ数のオーダー

Page 39: Hessian free

Hessianの用いる際の計算の工夫• 最終結果がベクトル (= パラメータ数のオーダー )

•計算過程に工夫をすればパラメータ数の 3乗の計算 ( 行列積 )は必要ないのではないか

© 2017 Retrieva, Inc. 39

Page 40: Hessian free

Hessian Free

• Hx のような Hessian 行列 x ベクトルの値をベクトルの内積で近似する• それによりパラメータ数の 3乗のオーダーの計算量をパラメー

タ数のオーダーに減らすことができる

© 2017 Retrieva, Inc. 40

Page 41: Hessian free

Hessian演算の近似• H(Hessian) と v(ベクトル ) の積を次の式で近似する

© 2017 Retrieva, Inc. 41

各パラメータの二階の微分ベクトルと v の積で近似

Page 42: Hessian free

H(θ)の求め方

© 2017 Retrieva, Inc. 42

各パラメータの⊿を用いてforward のような処理を行う

Page 43: Hessian free

H(θ)の求め方

© 2017 Retrieva, Inc. 43

⊿を用いて損失関数の2階微分を求める

Page 44: Hessian free

H(θ)の求め方

© 2017 Retrieva, Inc. 44

back propagation のような処理を行う

Page 45: Hessian free

MNISTにおける比較

© 2017 Retrieva, Inc. 45

学習データにおける損失

Page 46: Hessian free

MNISTにおける比較

© 2017 Retrieva, Inc. 46

テストデータにおける精度

Page 47: Hessian free

GPUで計算する量を多くする (再掲 )

© 2017 Retrieva, Inc. 47

モデルのサイズ• 層の大きさ• 層の数• (RNN の場合 )系列の長さ

入力のミニバッチのサイズ

バッチサイズを大きくする

xDeep Learning の計算量のオーダー ≒

Page 48: Hessian free

MNISTにおける比較

© 2017 Retrieva, Inc. 48

バッチサイズ 2048

Page 49: Hessian free

MNISTにおける比較

© 2017 Retrieva, Inc. 49

バッチサイズ 2048までは収束が早くなっている

Page 50: Hessian free

Hessianを用いた最適化収束を早める工夫 バッチサイズの大きさ

SGDベースの最適化 勾配momentumsecond-momentumgradient clipping

〜 128 or 256

Hessian を用いた最適化

勾配 +曲率情報 数千

© 2017 Retrieva, Inc. 50

Page 51: Hessian free

まとめ• 数値最適化は暗闇の中で山を登っていくようなもの• Deep Learning における最適化の難しさ• Hessian Free の紹介• Hessian の曲率の情報を用いた最適化• 大きいバッチサイズに対応

© 2017 Retrieva, Inc. 51

Page 52: Hessian free

参考文献• 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