Hessian-free Optimization for Learning Deep Multidimensional
Recurrent Neural NetworksNIPS2015 読み会
@Kotaro_Setoyama2016.1.20
自己紹介
(www.pcl.cs.waseda.ac.jp/)
早稲田大学基幹理工学部情報理工学科 4 年小林研究室所属(音声合成: Text-to-Speech )PFI でバイト中(音声認識: Speech-to-Text )Twitter : @Kotaro_Setoyama
瀬戸山 幸大郎( Kotaro Setoyama )
Agenda▪ Introduction
▪ MDRNN(Multidimensional Recurrent Neural Network)
▪ Hessian-free for MDRNN
▪ CTC(Connectionist Temporal Classification)
▪ Experiments
▪ Conclusion
Introduction画像 ,音声 ,動画など
▪ MDRNN は多次元データを学習するのに効率が良い. → CTC と組み合わせることで state-of-the-art の性能を実現 → RNN との違いは hidden 層の帰還路が複数本▪ 層が 5 層以上の最適化手法は未知だった. → DNN の発展具合と比較すると貧弱
Introduction
▪ MDRNN は多次元データを学習するのに効率が良い. → CTC と組み合わせることで state-of-the-art の性能を実現 → RNN との違いは hidden 層の帰還路が複数本▪ 層が 5 層以上の最適化手法は未知だった. → DNN の発展具合と比較すると貧弱
画像 ,音声 ,動画など
二次近似の最適化手法であるHessian-free を用いれば学習できる!
Introduction
▪ Hessian-free は損失関数を二次近似して最適化する.▪ Hessian を求めずに最適化できる.
テーラー展開
:元の損失関数:二次近似損失関数:へシアン(直接計算しない):解の更新幅
速い!
Introduction
Hessian-free は以下のような極値を持つ損失関数に対しても頑強
Introduction…さらに
MDRNN の出力に CTC を用いて入出力長の異なるデータを学習させたい.
n n i p s u u_ _
入出力長が同じだと“nn_ _ipsuu” と出力される.“nips”と出力させたい.
Introduction…しかし
CTC は非凸関数→ Hessian-free で学習できない.
Introduction…しかし
CTC は非凸関数→ Hessian-free で学習できない.
凸部と非凸部を分離して凸関数に近似する!
Introduction
この論文の成果1. 5 層以上の MDRNN を Hessian-free を用いて学習できるようになった.2. CTC を凸近似することで MDRNN に組み込んで入出力長の異なるデータを扱えるようになった.
Introduction
この論文の成果1. 5 層以上の MDRNN を Hessian-free を用いて学習できるようになった.2. CTC を凸近似することで MDRNN に組み込んで入出力長の異なるデータを扱えるようになった.特に手書き文字認識で,精度が大きく向上した.
MDRNN
MDRNN
▪ 通常の RNN で手書き文字などを学習させられるか?→ 画素の数値ベクトルを 1 つの長いベクトルにして入力→ 手書き文字の特徴を縦・横方向から捉えられないか?
MDRNN
▪ MDRNN では多次元の系列 / 非系列データを扱える.→ CNN のように次元をうまく捉えたい.→ RNN の帰還路の数をデータの次元数に合わせて増やす.
▪ 通常の RNN で手書き文字などを学習させられるか?→ 画素の数値ベクトルを 1 つの長いベクトルにして入力→ 手書き文字の特徴を縦・横方向から捉えられないか?
MDRNNhidden layer
Input layer
(i,j-1)
(i-1,j) (i,j)
(i,j)
(i,j)
(0,0) x1
x2
▪ hidden layer の 1 点は各軸に沿った1 ステップ前の点と input layer から入力を受ける.▪ 点は、画像を学習する場合は 1 ピクセル分の RGB の数値ベクトルになる.ピクセルの集合でも,他の特徴ベクトルでも良い.
MDRNN
hidden layer
Input layer
(0,0)
Forward Pass
MDRNN
hidden layer
Input layer
(0,0)
Input layer
hidden layer
(0,1)(0,0)
Forward Pass
MDRNN
hidden layer
Input layer
(i,j-1)(i-1,j-1)(i,j-2)
Forward Pass
MDRNN
hidden layer
Input layer
(i,j-1)(i-1,j-1)(i,j-2)
Input layer
hidden layer(i,j-1)
(i,j)(i-1,j)
Forward Pass
MDRNNBackward Pass
hidden layer
output layer
(i+1,j)(i,j)(i,j+1)
▪ 準伝播も逆伝播も通常のRNN と変わらず,多次元になっただけ.▪ 出力層は実際はこのような形になっていない(後述)
MDRNN
Backward Pass
Forward Pass
: 出力層の活性化関数: 次元数
Multidirectional Network
▪ 順向きとの RNN と逆向きの RNN を組み合わせて双方向 RNN(bidirectional RNN) が作れる. → データを逆向きにも学習する.▪ これを MDRNN に拡張する. → 隠れ層の数を 倍にする. → 学習方向が 倍になる.
Multidirectional Network
(0,0)
(0,0) (0,0)
(0,0)x1
x1 x1
x1
x2
x2
x2
x2 (i,j)
layer1context
layer3context
layer2context
layer4context
手書き文字を学習する場合, 4 方向から学習を行う.
この手法を Multidirectional Network という.
Multidimensional LSTM
▪ 中間層の LSTM も Multidimensional にする.
Cell
Output GateInput Gate
Forget Gate
Long Short-Term Memory
Multidimensional LSTM
▪ 通常の LSTM はメモリセルは 1 つの忘却ゲートを持つ. → MDLSTM は忘却ゲートの数を複数個にする. → メモリセルの保持する変数も複数になる.▪ 入力ゲート,出力ゲートに入るメモリセルの変数は同じ不重みで足し合わされる.これ以上の詳細は参考文献を参照[AlexGraves.Supervisedsequencelabellingwithrecurrentneuralnetworks,volume385.Springer,2012. ]
Hierarchical Subsampling Networks最終的な構造
Hierarchical Subsampling Networks手書き文字の情報は右のようにして伝播し,最後は 1次元の出力になる.
Learning MDRNN
d-dimensional MDRNN with M inputs and K output入力ベクトル系列 :出力ベクトル系列 : 時間 :T各次元の長さ :すべての重みとバイアス : パラメータ数 :N
learning phase入力層から出力層 損失関数生成学習全体のフローは という合成関数で表せる.
Learning MDRNN
d-dimensional MDRNN with M inputs and K output入力ベクトル系列 :出力ベクトル系列 : 時間 :T
ex)2 次元手書き数字の場合d=2 T: 画像上のシフト回数M: ピクセルの数値ベクトル T1: 縦のブロック数K:9 ( 0〜 9 ) T2: 横のブロック数
各次元の長さ :すべての重みとバイアス : パラメータ数 :N
Hessian-free
Hessian-free for MDRNN
Hessian-free のポイントは 2 つ1. 二次近似した損失関数のヘシアン G をどう求めるか?
(再掲): 元の損失関数 :ヘシアン: 二次近似損失関数
2. 行列 × ベクトルの計算を効率良く行うには?▪ HF は最急降下法ではなく共役勾配法 (CG) を使う. → 収束が早い▪ CG はヘシアン × ベクトルを計算する必要がある.
Hessian-free for MDRNN
Hessian-free のポイントは 2 つ1. 二次近似した損失関数のヘシアン G をどう求めるか?
G は Generalized Gauss-Newton matrix(GGN)で近似できる!が,
CG でベクトルと掛け合わせるので, G を直接求めることはしない.
Hessian-free for MDRNN
Hessian-free のポイントは 2 つ2. 行列 × ベクトルの計算を効率良く行うには?共役勾配法
の二次形式もとで,アルゴリズム
ヘシアン × ベクトルが必要
Hessian-free for MDRNN
Hessian-free のポイントは 2 つ2. 行列 × ベクトルの計算を効率良く行うには?共役勾配法
の二次形式もとで,アルゴリズム
ヘシアン × ベクトルが必要
ヘシアンを GGN で表せば,ベクトルとの積は簡単になる!
Generalized Gauss-Newton matrix
d-dimensional MDRNN with M inputs and K output入力ベクトル系列 :出力ベクトル系列 : 時間 :T各次元の長さ :すべての重みとバイアス : パラメータ数 :N
learning phase入力層から出力層 損失関数生成学習全体のフローは という合成関数で表せる.
再掲
Learning MDRNN
ヤコビアン,ヘシアンも使う
Generalized Gauss-Newton matrix
の におけるヘシアン
chain rule を使って微分していく.[James Martens and Ilya Sutskever. Training deep and recurrent networks with Hessian-free optimization. In Neural Networks: Tricks of the Trade, pages 479–535. Springer, 2012. ]
参考文献
Generalized Gauss-Newton matrix
はベクトル の 番目の要素求まったヘシアンは不定値である.
Generalized Gauss-Newton matrix
はベクトル の 番目の要素求まったヘシアンは不定値である.
実数値関数 f に凸性を持たせるにはヘシアンが任意の点で半正定値であることが必要(行列の定値性)
Generalized Gauss-Newton matrix
はベクトル の 番目の要素
損失関数が凸になるには不定値ではダメ.
求まったヘシアンは不定値である.実数値関数 f に凸性を持たせるにはヘシアンが任意の点で半正定値であることが必要(行列の定値性)
Generalized Gauss-Newton matrix
求まったヘシアンは使えない?
Generalized Gauss-Newton matrix
求まったヘシアンは使えない?
に置き換えられる.Generalized Gauss-Newtion matrix
は か がすべての i に対して線形の範囲にあるとき第二項を無視して
Generalized Gauss-Newton matrix
求まったヘシアンは使えない?
に置き換えられる.Generalized Gauss-Newtion matrix
という損失関数を持つ NN を例に考える.
は か がすべての i に対して線形の範囲にあるとき第二項を無視して
Generalized Gauss-Newton matrix
Generalized Gauss-Newton matrix
二乗和誤差関数を最小化する最適な関数は目標データの条件付き平均である.は平均 0 の確率変数になる.
Generalized Gauss-Newton matrix
二乗和誤差関数を最小化する最適な関数は目標データの条件付き平均である.は平均 0 の確率変数になる.すなわち第二項は無視できて,
Levenberg-Marquardt 近似
Generalized Gauss-Newton matrix
Levenberg-Marquardt 近似で求めたヘシアンはが単位行列の時に対応
Generalized Gauss-Newton matrix
がヘシアンの代わりに使えることはわかったを半正定値にするには?
Generalized Gauss-Newton matrix
がヘシアンの代わりに使えることはわかった.を半正定値にするには?
→ L が凸関数であることが必要→ 交差エントロピーを用いる ( 出力層はソフトマックス )
Generalized Gauss-Newton matrix
がヘシアンの代わりに使えることはわかった.を半正定値にするには?
→ L が凸関数であることが必要→ 交差エントロピーを用いる ( 出力層はソフトマックス )
GGN はある条件下でヘシアンを近似でき,出力層にソフトマックス関数を用いることで は半正定値になるので, も半正定値になり,結果,合成関数 が凸になる.
まとめ
Generalized Gauss-Newton matrix
しかし GGN は計算しない!
Hessian-free for MDRNN
Hessian-free のポイントは 2 つ1. 二次近似した損失関数のヘシアン G をどう求めるか?
再掲
: 元の損失関数 :ヘシアン: 二次近似損失関数
2. 行列 × ベクトルの計算を効率良く行うには?▪ HF は最急降下法ではなく共役勾配法 (CG) を使う. → 収束が早い▪ CG はヘシアン × ベクトルを計算する必要がある.
Generalized Gauss-Newton matrix
GGN はベクトルとの積で考える.は任意のベクトル
前から順番にかけていく.
Generalized Gauss-Newton matrix
GGN はベクトルとの積で考える.は任意のベクトル
前から順番にかけていく.まずは
これは方向微分と呼ばれるもの
Generalized Gauss-Newton matrix
方向微分の性質
1.和2.定数倍3.積4.連鎖律
Generalized Gauss-Newton matrix
を と置き を展開すると,方向微分の性質が使える.LSTM を持つ MDRNN にもこの性質は使える.詳細は論文の appendix A を参照.
Generalized Gauss-Newton matrix
次は に をかける. 直接計算する!
Generalized Gauss-Newton matrix
次は に をかける. 直接計算する!ところが,
出力層は CTC なので, の次元は最大→ 計算コストがかかり過ぎる.
Generalized Gauss-Newton matrix
次は に をかける 直接計算する!ところが,
出力層は CTC なので, の次元は最大→ 計算コストがかかり過ぎる.でも,
全体の損失関数が時間毎の独立した損失関数の合計で表されるなら,計算量は減る.
Generalized Gauss-Newton matrix
が の行列であれば, の 個の対角行列のヘシアンの和で表せる.
この時 GGN は
: 時刻 t のときのヤコビアン
Generalized Gauss-Newton matrix
最後にに をかける.
これは back propagation で求まる.詳細は論文参照
以上のようにして GGN を求めることなくGGN× ベクトルを計算する.
Hessian-freeHessian-free まとめポイントは,
1. 関数全体が凸になりかつ 2.GGN を直接求めないので,収束が速くなる.
GGN はある条件下でヘシアンを近似でき,出力層にソフトマックス関数を用いることで は半正定値になるので, も半正定値になり,結果,合成関数 が凸になる.
CTC
n n i p s u u_ _
入出力長が同じだと“nn_ _ipsuu” と出力される“nips”と出力させたい.
CTC
再掲
▪ CTC は入出力長の異なる系列データを学習できるCTC
パラメータ ={a,b,c} :学習対象の音素 ={_,a,b,c} :空白文字を追加 =‘cbab’ :真のラベル系列
:冗長な系列 (‘c _ b _ _ a a b’ など ):冗長な系列から真の系列への写像
→ 冗長な系列すべての集合:真のラベルの文字間に空白を挿入
▪ CTC は入出力長の異なる系列データを学習できるCTC
1. あるラベルに写像される 1 つの冗長なパスの確率を計算2.そのラベルに写像されるすべてのパスの確率を足す. ▪ forward backward method を使う.→ 入力を与えれらた時のラベルの条件付き確率が求まる.3.負の対数尤度をとって損失関数とし,最小化する. ▪ forward backward method を使う.
アルゴリズム
CTC ={a,b,c} :学習対象の音素 ={_,a,b,c} :空白文字を追加 =‘cbab’ :真のラベル系列
:冗長な系列 (‘c _ b _ _ a a b’ など ):冗長な系列から真の系列への写像
→ 冗長な系列すべての集合
ラベルが’ cbab’ で表される長さ t=8 の冗長な系列を図示するとどうなるか?
:真のラベルの文字間に空白を挿入
CTC
1 2 3 4 5 6 7 81
2
3
4
5
6
7
8
9
t
s
I’
c
b
a
b
_
_
_
_
_
カラー付きは文字,白は空白I’ は文字の間に空白を挿入した列
▪ CTC は入出力長の異なる系列データを学習できる.CTC
1. あるラベルに写像される 1 つの冗長なパスの確率を計算2.そのラベルに写像されるすべてのパスの確率を足す. ▪ forward backward method を使う.→ 入力を与えれらた時のラベルの条件付き確率が求まる.3.負の対数尤度をとって損失関数とし,最小化する. ▪ forward backward method を使う.
アルゴリズム
CTCCTC を RNN に適用する▪ 出力層は 個のユニット▪ 活性化関数はソフトマックス関数▪ 出力 はその時刻の正解ラベルが である確率
CTCCTC を RNN に適用する▪ 出力層は 個のユニット▪ 活性化関数はソフトマックス関数▪ 出力 はその時刻の正解ラベルが である確率入力系列 に対し,1 つのパス が正解である確率
▪ CTC は入出力長の異なる系列データを学習できる.CTC
1. あるラベルに写像される 1 つの冗長なパスの確率を計算2.そのラベルに写像されるすべてのパスの確率を足す. ▪ forward backward method を使う.→ 入力を与えれらた時のラベルの条件付き確率が求まる.3.負の対数尤度をとって損失関数とし,最小化する. ▪ forward backward method を使う.
アルゴリズム
CTCCTC を RNN に適用する.
あらゆるパス について左を加算
これは愚直に計算すると計算量大forward backward method を使う!
CTC
1 2 3 4 5 6 7 81
2
3
4
5
6
7
8
9
t
s
1 つのノードに着目とおく.
CTC
1 2 3 4 5 6 7 81
2
3
4
5
6
7
8
9
t
s
このノードを通過するパスの集合を考える.
CTCforward backward method内の s番目のラベル を時刻 に通過するパス の集合前半のパス : 後半のパス :
: すべての前半パス に関する確率 の和: すべての後半パス に関する確率 の和
CTC
すべてのパスは t=1 において s=1 か s=2 から出発あるいは
t > 1 では を使って, が空白 or の場合,と計算できる.
それ以外ではと計算できる.
CTC
以上の計算を t=2 から t=T まで繰り返す.も同様の計算を逆向きに行えば計算できる.
が求まると,のように計算できる.
,
▪ CTC は入出力長の異なる系列データを学習できる.CTC
1. あるラベルに写像される 1 つの冗長なパスの確率を計算2.そのラベルに写像されるすべてのパスの確率を足す. ▪ forward backward method を使う.→ 入力を与えれらた時のラベルの条件付き確率が求まる.3.負の対数尤度をとって損失関数とし,最小化する. ▪ forward backward method を使う
アルゴリズム
CTC
d を正解ラベルとして与えられた時,
勾配は BPTT 法で計算する.
CTC
d を正解ラベルとして与えられた時,
この後は BPTT で勾配を求めて学習を行っていくが,詳細は文献を参照.[Alex Graves, Santiago Ferna ́ndez, Faustino Gomez, and Ju ̈rgen Schmidhuber. Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks. In Proceedings of the 23rd International Conference on Machine Learning, pages 369–376, 2006. ]
CTC
整理すると
入力列を MDRNN の出力 a で置き換えた.
I=z とした.
CTC
それぞれ代入すると
はソフトマックス関数なので,損失関数は凸になりそうだが, が対数関数なので の分母が凸関数にならない.CTC の損失関数は非凸な関数である!
Hessian-freeHessian-free まとめポイントは,
1. 関数全体が凸になりかつ 2.GGN を直接求めないので,収束が速くなる.
GGN はある条件下でヘシアンを近似でき,出力層にソフトマックス関数を用いることで は半正定値になるので, も半正定値になり,結果,合成関数 が凸になる.
再掲
CTC
わかりやすく書きなおす.非凸部を ,凸部を とおく.
:
:
最終的に凸部と非凸部の合成関数になる.
CTC
GGN はとりあえず GGN を考える
Generalized Gauss-Newton matrix
が の行列であれば, の 個の対角行列のヘシアンの和で表せる.
この時 GGN は
: 時刻 t のときのヤコビアン
再掲
CTC
GGN は
という対角行列にはなるが,次元は になり,そのまま計算するのは困難.
とりあえず GGN を考えるは
CTC
GGN はは対角行列にはなるが,次元は になり,
そのまま計算するのは困難.
に着目すると, を取り除いてもヘシアンは変わらない.を新たに定義
とりあえず GGN を考える
CTC
と の GGN は同じなので,
のヘシアンを考えて良い.と は後述する理由により,等しくなる.実際
CTC
と の GGN は同じなので,
のヘシアンを考えて良い.
という簡単な形になって,ヘシアンは直接計算できる.
と は後述する理由により,等しくなる.実際
CTC
: はそれぞれのブロックが半正定値なので,全体も半正定値になる.ヘシアンが半正定値かどうかを考えずに議論してきたが,結果的に半正定値になり,凸になることがわかった!
CTC
1. は半正定値でない.2. は半正定値だが,計算コストがかかる.3. は半正定値かつ計算コストがかからない.
これまでの流れ
CTC を出力層に持つ MDRNN を Hessian-free 最適化しようと GNN を考えたら計算量大. GNN ではなく単純にヘシアンを 2階微分して求めたらうまくいった.
CTC
と が同じになる理由
Generalized Gauss-Newton matrix
求まったヘシアンは使えない?
に置き換えられる.Generalized Gauss-Newtion matrix
は か がすべての i に対して線形の範囲にあるとき第二項を無視して
再掲
CTC
と が同じになる理由なので,
すべての i で, が必要
CTC
と が同じになる理由なので,
すべての i で, が必要いま考えたいラベルを I をすると,もし,複数あるパスのうち,ほとんど 1 つのパスしか通らない時,
線形写像
CTC
線形写像この時, が成立し,
= となる.
CTC
ポイントは,1.CTC のパスは複数パターンあるが,ほとんどの場合同じ経路をたどる.その時,非凸部は凸関数に近似できるので,凸な損失関数の GNN を考えられる.2. しかし GNN は計算コストが大きい.そこでヘシアンを近似せずにそのまま計算すると,簡単にヘシアンが求まる.
CTC まとめ
Experiment
CTC を出力関数に持つ MDRNN の性能を手書き文字認識,音素認識において SGD と比較した.
▪ 手書き文字認識のデータセットは IFN/ENIT のアラビア文字の画像 25955枚 ( 学習 )▪ 音素認識のデータセットは TIMIT のコーパス 3696
sentences( 学習 )
パラメータのセットアップ,その他の工夫した手法などに関しては論文の 5.2 を参照
Result
手書き文字認識
▪ HF の性能は層数に関わらず SGD を凌駕している.▪ NETWORKS の A^B は, LSTM のセル数が A 個,隠れ層数が B であることを表している.
Result
音素認識
▪ 性能は phoneme error rate(PER) で算出した. PER はedit distance で求められる.▪ 他の手法と比較できるぐらいの性能は出たが,ほぼ同じ → 過学習が原因
Conclusion
この論文の成果1. 5 層以上の MDRNN を Hessian-free を用いて学習できるようになった.2. CTC を凸近似することで MDRNN に組み込んで入出力長の異なるデータを扱えるようになった.