SlideShare a Scribd company logo
Neural Networkの二次最適化
株式会社レトリバ 西鳥羽二郎
自己紹介
• レトリバの取締役副社長及びChief Research Officer
• 自然言語処理、音声認識など
• 研究開発にまつわるetc.
• 最近の目標
• 旅行で全都道府県めぐる
• 旅行で日本の全世界遺産をめぐる
趣味: 旅行ですべての県に行く
セミナーについて
• ローテーションの編成を以下の交互にします
• エンジニア・リサーチャー: 配信
• セールス・バックオフィス: 希望者のみ配信
• 今後は基本的に隔週の配信になります
Deep Learning あるある
学習の高速化したい!!
よし、バッチサイズを増やすぞ
バッチサイズと高速化
※ Extremely Large Minibatch SGD: Training ResNet-50 on ImageNet in 15 Minutes
https://www.preferred-networks.jp/docs/imagenet_in_15min.pdf
高速化のためにバッチサイズ
を増やしている
バッチサイズと学習時間
100%
87%
69%
0%
20%
40%
60%
80%
100%
120%
学習時間
バッチサイズ16 バッチサイズ32 バッチサイズ64
バッチサイズ16での学習時間を100%とした時の相対的な学習時間(cuDNN使用時)
バッチサイズと学習時間
100%
58%
34%
0%
20%
40%
60%
80%
100%
120%
学習時間
バッチサイズ16 バッチサイズ32 バッチサイズ64
バッチサイズ16での学習時間を100%とした時の相対的な学習時間(cuDNN非使用時)
バッチサイズをひたすら
増やせばよいか?
※PFN鈴木さんの「分散深層学習とChainerMNについて 」
https://www.slideshare.net/pfi/20171128chainermn
巨大バッチによる学習
• バッチサイズを大きくすると精度が悪くなる可能性がある
• とはいえ、大規模分散による学習の時だけじゃないのか?
• きっと数十くらいなら問題ないだろう
0.00%
2.00%
4.00%
6.00%
8.00%
10.00%
12.00%
14.00%
1 2 3 4 5 6 7 8 9 10
バッチサイズ16 バッチサイズ32 バッチサイズ64
バッチサイズとエラー率
系列長5~1000
Bidirectional LSTM x 4, Linear x 1, CTC
各epochでの音素誤り率(PER)
バッチサイズが大きいほど
エラー率が高い…
バッチサイズとエラー率
8.00%
9.00%
10.00%
11.00%
12.00%
13.00%
14.00%
15.00%
16.00%
データセットE1 データセットE2 データセットE3
バッチサイズ16 バッチサイズ32 バッチサイズ64
系列長5~1000
Bidirectional LSTM x 4, Linear x 1, CTC
10epoch学習後の単語誤り率(WER)
バッチサイズが大きいほど
エラー率が高い…
RNNにおける学習
LSTMLSTM LSTMLSTM
LSTMLSTM LSTMLSTM
W2 W2 W2 W2
W1 W1 W1 W1
系列の長さの回数分適用し、誤差を集約するの
で大きいバッチで計算しているのと似ている?
Neural Networkにおける二次最適化
勾配法とニュートン法
• 勾配法
• δ: 一次微分(= f’(x(t))の値
• ニュートン法
• H: Hessian(但し半正定値行列の時)
𝑥(𝑡+1)
= 𝑥(𝑡)
− 𝛿
𝑥(𝑡+1)
= 𝑥(𝑡)
− 𝐻−1
𝛿
Hessian
https://ja.wikipedia.org/wiki/%E3%83%98%E3%83%83%E3%82%BB%E8%A1%8C%E5%88%97
ニュートン法の利点
• ニュートン法は二次収束なので勾配法よりも収束が早い
• ニューラルネットワーク以外ではニュートン法ベースのものを
用いられることが多い
Deep Learningにおける変数の数
• input, outputの大きさが300のLSTM
• 300 x 300 x 8 = 720,000変数
• 5層のBidirectional LSTM
• 720,000 x 2 x 5 = 7.2M変数
https://qiita.com/t_Signull/items/21b82be280b46f467d1b
5層Bidirectional LSTMのHessian
7.2M
7.2M
5層Bidirectional LSTMのHessian
7.2M
7.2M
7.2M x 7.2M x 4byte = 207TB
Deep Learningにおけるニュートン法
• Hessianを求めるのは難しい…
• 冷静に考えてみると直接微分を求めるのも難しいから逆誤差伝搬法が
編み出された
• そもそもHessianが半正定値行列とは限らない
• 逆行列を求めるのも難しい…
• 「最適化対象の全変数x最適化対象の全変数」の大きさ
• レイヤーサイズ300のLSTMだけで72万個の変数
ニューラルネットワークでのニュートン法
Training
Loss
K-FAC
converges at
the same rate,
regardless of
batch size!
Per-Example Progress: Loss
Matthew Johnson&Daniel Duckworth - “KFAC and Natural Gradients”
NIPS 2017 Workshop: Deep Learning At Supercomputer Scale
バッチサイズ4096でも
ニューラルネットワークでのニュートン法
バッチサイズの大きいAdamが性能を下げ
ているのに対してHF(ニュートン法の近
似)は6000でも性能が上がっている
BLOCK-DIAGONAL HESSIAN-FRE EOPTIMIZATION FOR TRAINING NEURAL NETWORKS
https://arxiv.org/abs/1712.07296
RNNの学習に有効なのか
バッチサイズ
200でAdamよ
りも精度が良い
RNNの学習に有効なのか?
バッチサイズ
200でAdamよ
りも精度が良い
ここまでのまとめ
• ニューラルネットワークの高速な学習のためにはバッチサイズ
を大きくすることが必須
• バッチサイズを大きくしても精度が悪化しない手法として二次
最適化が期待されている
• しかしニューラルネットワークは変数が多すぎてHessianを計
算することが困難
Deep Learning向け
二次最適化アルゴリズムの紹介
Deep Learning二次最適化アルゴリズムのポイント
• Hessianの近似方法
• 逆行列を高速に計算するための手法
アプローチ1: KFAC
• Kronecker Factored Approximate Curvature (KFAC)
• HessianをFisher情報量行列で近似
• Fisher情報量行列をKronecker積で分解することにより逆行列を求める
部分を高速に
※Marten et al., Optimizing Neural Networks with Kronecker-factored Approximate Curvature
Hessian行列の近似
• 半正定値性の保証のためにFisher情報量行列でHessianを近似
全パラメータにおける微分
Fisher情報量行列の大きさ
• レイヤーサイズ300のLinear 5層の場合
450k
450k
450k x 450k x 4byte = 810GB
Fisher情報量行列を近似
• 𝑎𝑖 : 𝑖 番目の層の出力 𝑔𝑖 : 𝑖 番目の層に伝搬する微分値
Kronecker積
Kronecker積の性質
1. 𝐴 ⊗ 𝐵 −1
= 𝐵−1
⊗ 𝐴−1
2. 𝐴 ⊗ 𝐵 𝑣𝑒𝑐 𝑋 = 𝑣𝑒𝑐(𝐵𝑋𝐴 𝑇)
Kronecker積の定義
block-diagonal行列へ近似
𝐹 =
𝐴0,0 ⊗ 𝐺0,0
𝐴1,1 ⊗ 𝐺1,1
0
0
⋱
𝐴𝑙−1,𝑙−1 ⊗ 𝐺𝑙−1,𝑙−1
補足: A及びG
• k層目のLinearにおいて
W
forward時
入力: 𝑎 𝑘
W
backward時
入力: 𝑔 𝑘
𝐴 𝑘,𝑘 = 𝔼[𝑎 𝑘 𝑎 𝑘
𝑇]
𝐺 𝑘,𝑘 = 𝔼[𝑔 𝑘 𝑔 𝑘
𝑇
]
レイヤーごとへの計算へ分解
• block-diagonal行列にしたことにより、レイヤーごとの演算に
分解される
• しかしレイヤーごとでもまだ大きい
• レイヤーサイズ300でも(90000 x 90000)の行列になる
𝐴 𝑘,𝑘 ⊗ 𝐺 𝑘,𝑘
Kronecker積で表された行列の逆行列
• ニュートン法の更新式
𝑥(𝑡+1)
= 𝑥(𝑡)
− 𝐻−1
𝛿
必要なのは逆行列とベクトルの積
KFACにおける更新式は 𝐴 ⊗ 𝐺 −1
𝑣𝑒𝑐 𝑑
更新式のベース
𝐴 ⊗ 𝐺 −1
𝑣𝑒𝑐 𝑑 = 𝑣𝑒𝑐(𝐺−1
𝑑𝐴−1
)
𝐴 ⊗ 𝐵 𝑣𝑒𝑐 𝑋 = 𝑣𝑒𝑐(𝐵𝑋𝐴 𝑇
)
更新式のベース
𝐴 ⊗ 𝐵 −1
= 𝐵−1
⊗ 𝐴−1
Kronecker積の性質
(300 x 300)の行列の演算になる
Kronecker積の演算がなくなる
アプローチ2: KFRA
• Kronecker Factored Recursive Approximation (KFRA)
• Hessianをガウスニュートン行列で近似
• ガウスニュートン行列をKronecker積で分解し、逆行列を高速に求め
られるようにした
※Botev et al., Practical Gauss-Newton Optimization for Deep Learning
Hessian行列の近似
• 𝐻 ≈ 𝐺 = 𝐽 𝑇ℋ𝐽
• 𝐺: Gauss Newton行列
• 𝐽: Jacobian
• ℋ: ニューラルネットワークの出力層のHessian
Gauss Newton行列の近似
• 先程のKFACと同様にGauss Newton行列もblock diagonalに近
似するとKronecker積で分解できる
Linearの層に対応した
Gauss Newton行列
KFACの𝐴 𝑘,𝑘 =
𝔼[𝑎 𝑘 𝑎 𝑘
𝑇
] と同じ
Pre-activation Gauss Newton 行列
• 残る𝒢 𝜆はback propagation時に伝搬させる変数を追加すること
により求めることが可能
Back propagation時に伝
搬してくる誤差から構成
Linearの行列
一つ上の層の𝒢
アップデートの計算
• pre-activation Gauss Newton行列は上位の層から伝搬させる
ことにより求められる
𝐺𝜆
−1
𝛿
= (𝒬 𝜆 ⊗ 𝒢 𝜆)−1
𝛿
= (𝒢 𝜆
−1
𝛿𝒬 𝜆
−1
)
(300 x 300)の行列の演算になる
Kronecker積の演算がなくなる
実際にやってみた…
• KFRAにおいて必要な処理
• 損失関数の二次微分 -> Chainer ver 3.0で対応
• RNNへの拡張 -> LSTMを活性関数とし、前時刻のWと前レイヤーのW
にて別々に計算することで対応可能(そう)
• 逆誤差伝搬時に微分の値の他にパラメータ更新量とガウスニュートン
行列を伝搬
実際にやってみた…かった
• KFRAにおいて必要な処理
• 損失関数の二次微分 -> Chainer ver 3.0で対応
• RNNへの拡張 -> LSTMを活性関数とし、前時刻のWと前レイヤーのW
にて別々に計算することで対応可能(そう)
• 逆誤差伝搬時に微分の値の他にパラメータ更新量とガウスニュートン
行列を伝搬 -> できず…
まとめ
• Deep Learningの学習の高速化にはバッチサイズを大きくする
ことが欠かせない
• RNNの学習においてはバッチサイズを大きくすることが難しい
• 巨大なバッチでも性能が良い二次最適化アルゴリズムの紹介
• Hessianの近似を層ごとに分解して近似
• 逆行列を求められるようにKronecker積による分解

More Related Content

PDF
[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis
PDF
デジタル信号処理をDSP入札に応用
PDF
PFI Seminar 2012/03/15 カーネルとハッシュの機械学習
PDF
平面グラフと交通ネットワークのアルゴリズム
PPTX
Parallel WaveNet: Fast High-Fidelity Speech Synthesis
PDF
PFI Christmas seminar 2009
PDF
how to make twitter list automatically
[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis
デジタル信号処理をDSP入札に応用
PFI Seminar 2012/03/15 カーネルとハッシュの機械学習
平面グラフと交通ネットワークのアルゴリズム
Parallel WaveNet: Fast High-Fidelity Speech Synthesis
PFI Christmas seminar 2009
how to make twitter list automatically

Similar to 全体セミナー20180124 final (20)

PPTX
機械学習 / Deep Learning 大全 (2) Deep Learning 基礎編
PDF
NN, CNN, and Image Analysis
PPTX
【LT資料】 Neural Network 素人なんだけど何とかご機嫌取りをしたい
PDF
ディープラーニング入門 ~ 画像処理・自然言語処理について ~
PDF
20140726.西野研セミナー
PPTX
深層学習の数理
PDF
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
PPTX
Deep learning basics described
PDF
2014/5/29 東大相澤山崎研勉強会:パターン認識とニューラルネットワーク,Deep Learningまで
PPTX
Image net classification with Deep Convolutional Neural Networks
PPTX
深層学習の数理:カーネル法, スパース推定との接点
PDF
Deep learning実装の基礎と実践
PPT
Deep Learningの技術と未来
PDF
PRML復々習レーン#9 前回までのあらすじ
PPTX
RBMを応用した事前学習とDNN学習
PDF
20150803.山口大学集中講義
PDF
20170422 数学カフェ Part1
PDF
画像認識のための深層学習
PPTX
卒研発表 バースカ(確認済み)
PDF
それっぽく感じる機械学習
機械学習 / Deep Learning 大全 (2) Deep Learning 基礎編
NN, CNN, and Image Analysis
【LT資料】 Neural Network 素人なんだけど何とかご機嫌取りをしたい
ディープラーニング入門 ~ 画像処理・自然言語処理について ~
20140726.西野研セミナー
深層学習の数理
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
Deep learning basics described
2014/5/29 東大相澤山崎研勉強会:パターン認識とニューラルネットワーク,Deep Learningまで
Image net classification with Deep Convolutional Neural Networks
深層学習の数理:カーネル法, スパース推定との接点
Deep learning実装の基礎と実践
Deep Learningの技術と未来
PRML復々習レーン#9 前回までのあらすじ
RBMを応用した事前学習とDNN学習
20150803.山口大学集中講義
20170422 数学カフェ Part1
画像認識のための深層学習
卒研発表 バースカ(確認済み)
それっぽく感じる機械学習
Ad

More from Jiro Nishitoba (12)

PPTX
20190509 gnn public
PPTX
Retrieva seminar jelinek_20180822
PPTX
20180609 chainer meetup_es_pnet
PPTX
深層学習による自然言語処理勉強会2章前半
PPTX
深層学習による自然言語処理勉強会3章前半
PPTX
全体セミナー20170629
PPTX
Hessian free
PPTX
ChainerでDeep Learningを試す為に必要なこと
PPTX
Icml読み会 deep speech2
PPTX
全体セミナーWfst
PPTX
Emnlp読み会資料
PDF
Chainer meetup20151014
20190509 gnn public
Retrieva seminar jelinek_20180822
20180609 chainer meetup_es_pnet
深層学習による自然言語処理勉強会2章前半
深層学習による自然言語処理勉強会3章前半
全体セミナー20170629
Hessian free
ChainerでDeep Learningを試す為に必要なこと
Icml読み会 deep speech2
全体セミナーWfst
Emnlp読み会資料
Chainer meetup20151014
Ad

全体セミナー20180124 final