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.

再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会

18,034 views

Published on

RNN, LSTM, CTC について

Published in: Data & Analytics
  • Be the first to comment

再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会

  1. 1. Chapter 7: 再帰型ニューラルネット 機械学習プロフェッショナルシリーズ輪読会 ~深層学習編~ 佐野 正太郎
  2. 2. 前章までの流れ  順伝播型や自己符号化器では入出力次元数が固定 ニューラルネット           6.0 5.0 2.0 入力ベクトル 出力ベクトル       1.0 9.0 固定次元 固定次元
  3. 3. 本章で扱う問題  サンプル毎に系列長が違うデータをどう扱うか? ニューラルネット           1.0 9.0 3.0 入力ベクトル系列 出力ベクトル系列           6.0 5.0 2.0           2.0 4.0 6.0        1.0 9.0       6.0 3.0       7.0 3.0  固定次元 固定次元 可変 入力と同じ系列長
  4. 4. 応用  自然言語処理  途中までの文章から次の単語を順次予測  音声認識  短時間フレーム毎の音素認識 We can get an idea of the quality of the leaned feature 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 11 y w ʌ n n nʌʌʌʌww
  5. 5. トピック  Recurrent Neural Network (RNN)  系列量が異なるサンプルの予測・学習  Long Short-Term Memory (LSTM)  より長い系列の予測・学習  Connectionist Temporal Classification (CTC)  時間フレーム単位のラベル付けが不要なRNN学習
  6. 6. 略語  FFNN  Feed Forward Neural Network  順伝播型ニューラルネットワーク  RNN  Recurrent Neural Network  再帰型ニューラルネットワーク  BP  Back Propagation  誤差逆伝播法
  7. 7. Recurrent Neural Network (RNN)
  8. 8. RNNの構造  3層FFNNに前時刻からのディレイ入力が付加  ネットワークの使い方が違う!  FFNNでは順伝播計算が1回だけ  再帰型では系列長だけ順伝播計算を繰り返す t z1 t z2 1 1 t z 1 2 t zt x1 t x2 t y1 t y2 t z1 t z2 t x1 t x2 t y1 t y2 FFNN RNN
  9. 9. RNNによる系列予測 t x  2 x 1 x
  10. 10. RNNによる系列予測 t x  2 x 1 x 0 z
  11. 11. RNNによる系列予測 t x  2 x 1 y 1 z
  12. 12. RNNによる系列予測 t x  1 y 2 x 1 z 1 z
  13. 13. RNNによる系列予測 t x  1 y2 y 2 z
  14. 14. RNNによる系列予測 t x  2 y 1 y 3 x 2 z 2 z
  15. 15. RNNによる系列予測 t x  2 y 1 y   
  16. 16. RNNによる系列予測 2 y 1 y t x t y 1t z 
  17. 17. RNNの順伝播計算  現時刻の入力 と前時刻の中間層出力 から を計算  入力層 → 中間層 現時刻の入力 前時刻からの入力 t z1 t z2 1 1 t z 1 2 t zt x1 t x2 t y1 t y2 1t z t x t y
  18. 18. RNNの順伝播計算  中間層 → 出力層 (FFNNと同様) t z1 t z2 1 1 t z 1 2 t zt x1 t x2 t y1 t y2
  19. 19. RNNの重み学習 (BPTT)  学習法: Back Propagation Through Time (BPTT)  RNN =「深さが系列長のFFNN」→ 展開してBPを適用 1 1x 1 2x 0 1z 0 2z 2 1x 2 2x 1 1z 1 2z 3 1x 3 2x 2 1z 2 2z 1 1y 1 2y t x1 t x2 1 1 t z 1 2 t z 2 1 t y 2 2 t y 2 1y 2 2y t y1 t y2 t z1 t z2 1 1 t y 1 2 t y ・・・
  20. 20. 復習:FFNNの重み学習 (BP)  サンプル毎に目的関数の勾配でパラメタを更新
  21. 21.  勾配の計算:連鎖規則で問題を分解 復習:FFNNの重み学習 (BP) t ju f t jz t 層目の第 j ユニット 定義から 微分可能 中間層の場合 直接微分できない
  22. 22. 復習:FFNNの重み学習 (BP)  更に連鎖規則を適用 定義から 微分可能
  23. 23. 復習:FFNNの重み学習 (BP)  δの漸化式が得られる  出力層のδは活性化関数の定義から微分可能  出力層から再帰的に δを計算  全ての δ が計算できれば全ての重み勾配も計算できる
  24. 24. RNNの重み学習 (BPTT)  各層(時刻)で出力を持つのでδの漸化式が異なる 出力系列 1 1x 1 2x 0 1z 0 2z 2 1x 2 2x 1 1z 1 2z 3 1x 3 2x 2 1z 2 2z 1 1y 1 2y t x1 t x2 1 1 t z 1 2 t z 2 1 t y 2 2 t y 2 1y 2 2y t y1 t y2 t z1 t z2 1 1 t y 1 2 t y ・・・
  25. 25. RNNの重み学習(BPTT法) t ku 1 1 t u 1 2 t u t v1 out f t v2 out f ・・・・・・ 2 1 t u 2 1 t u ・・・ t y1 t y2 ・・・ が目的関数に 影響する範囲 f f f f f
  26. 26. RNNの重み学習(BPTT法)  BPTTにおけるδの漸化式 次時刻への入力を 経由した微分連鎖 出力層への入力を 経由した微分連鎖
  27. 27. RNNの重み学習(BPTT法)  BPTTにおけるδの漸化式
  28. 28. RNNの重み学習(BPTT法)  BPTTにおけるδの漸化式 漸化式 定義から 微分可能
  29. 29. RNNの重み学習(BPTT法)  BPTTにおけるδの漸化式
  30. 30. RNNの重み学習 (BPTT) ・・・ T  1, Tout  1T  2, Tout  2T 1  2  2,out 1,out  Tout, 
  31. 31. RNNの重み学習(BPTT法)  RNNをサンプル系列長のFFNNに展開  展開されたFFNNにBPを適用  普通のBPとの違い  δの漸化式に各時刻の出力が反映される
  32. 32. Long Short-Term Memory (LSTM)
  33. 33. 復習:勾配消失問題 ネットワークが深すぎると 学習がうまくいかない!
  34. 34. LSTM  RNNの問題点  BPTTで展開されるFFNNは入力系列長の深さを持つ  勾配消失問題により長い系列の学習が困難  LSTM  中間層に状態(長期記憶)を与えることで長い系列に対応  RNNの中間ユニットをメモリユニットに置きかえた構造
  35. 35.  LSTMにおける中間ユニット (メモリユニット)  ユニット は状態 を持つ (メモリセル)  中間ユニットが青枠内のモジュール群に置き換わる  活性化関数 (1回目)  入力ゲート  状態計算 (前状態との加算)  活性化関数 (2回目)  出力ゲート メモリユニット 入力層 出力層 入力層 t ju t jz t jsf f tI jg , tO jg , f f t jsj 中間層 (前時刻) tI jg , tF jg , tO jg ,
  36. 36.  各メモリユニットの状態計算 メモリユニット 前時刻の 状態 入力層の 加重和 忘却ゲート 入力ゲート 入力層 出力層 入力層 t ju t jz t jsf f 中間層 (前時刻) tI jg , tF jg , tO jg ,
  37. 37.  各メモリユニットからの出力計算 メモリユニット 現状態の 活性化値 出力ゲート 入力層 出力層 入力層 t ju t jz t jsf f tI jg , 中間層 (前時刻) tF jg , tO jg ,
  38. 38. メモリユニット:ゲートの計算  入力/忘却/出力ゲートもネットワーク構造を持つ  入力ゲート  忘却ゲート  出力ゲート 中間層ユニットへの入力と同じ計算 (異なる重みを学習)
  39. 39. LSTM
  40. 40. LSTM 入力層 中間層 出力層 入力 ゲート 忘却 ゲート 出力 ゲート メモリ セル 中間層 入力
  41. 41. LSTMの学習  学習すべきパラメタ ① 中間層入力への重み ② 入力ゲートへの重み ③ 忘却ゲートへの重み ④ 出力ゲートへの重み ⑤ 出力層への重み 1 1 2 2 3 3 4 4 5 5
  42. 42. LSTMの学習  更に2つのユニットがあると考える  状態から状態への恒等写像ユニット  状態に活性化関数を作用させるユニット  入力重みは常に1 t jz t ju f t js ft js id fff 出力層 入力層 入力層 中間層 (前時刻) tI ju , tF ju , tO ju ,
  43. 43. LSTMの学習  それぞれの ユニットについて δ を計算  i.e., 目的関数のユニット入力に関する微分  それぞれの出力先を経由した微分連鎖を計算(?) out  O F I   cell   ~
  44. 44. LSTMの学習
  45. 45. LSTMの学習 Tout,  TO, T  ~T cell T 1, TO 1~ T  TI , TF,~  1T cell 1, Tout  ・・・  RNNの学習同様に漸化式で全ての δ を計算  全ての δ がわかれば全ての重み勾配が計算可能
  46. 46. Connectionist Temporal Classification (CTC)
  47. 47. CTC  理想の訓練データ  現実の訓練データ w ʌ n n nʌʌʌʌww ここからここまで ”wʌn”
  48. 48. CTC  問題設定  入力:ベクトル系列  出力:ラベル系列  サンプル毎の目的関数 T xxX ,,1  ||1 ,, l lll  )|(log XlpEn  入出力の系列長は 必ずしも一致しない 出力はソフトマックス層
  49. 49. CTCによる学習 ・・・ T 1T 2T 1  2  out   厳密な出力系列は知らないけどBPTTを適用したい  各時刻・各出力ユニットの が計算できればOK! 1, Tout 2, Tout 2,out 1,out  Tout, 
  50. 50. CTCによる学習 どうやって 計算するか?
  51. 51. p(l|X) の計算  出力層に空白ラベル_のユニットを追加 a b a b _
  52. 52. p(l|X) の計算  入出力の系列長を揃えたい  空白ラベル_が存在すると仮定  各正解ラベルを(空白ラベルor同じラベル)の連続で埋める ""abl  __,_,_,,,ba __,_,,,, baa ba _,_,_,_,, bbbaaa ,,,,,  系列長6の場合 RNNからの出力ラベルは この中のどれか (確率的にしか分からない)
  53. 53. p(l|X) の計算 )|( Xabpl )|__,_,_,,,(' Xbapl )|__,_,,,,(' Xbaapl )|_,_,_,_,,(' Xbapl )|,,,,,(' Xbbbaaapl  全部足すと p(l|X)    6 _ 5 _ 4 _ 3 _ 21 yyyyyy ba  6 _ 5 _ 4 _ 321 yyyyyy baa  65 _ 4 _ 3 _ 2 _ 1 ba yyyyyy  654321 bbbaaa yyyyyy     ソフトマックス層の 出力から計算可能
  54. 54. p(l|X) の高速計算 どうやって 計算するか? どうやって もっと速く 計算するか?
  55. 55. p(l|X) の高速計算 )|( Xabpl )|__,_,_,,,(' Xbapl )|__,_,,,,(' Xbaapl )|_,_,_,_,,(' Xbapl )|,,,,,(' Xbbbaaapl  全部足すと p(l|X)    6 _ 5 _ 4 _ 3 _ 21 yyyyyy ba  6 _ 5 _ 4 _ 321 yyyyyy baa  65 _ 4 _ 3 _ 2 _ 1 ba yyyyyy  654321 bbbaaa yyyyyy     ソフトマックス層の 出力から計算可能
  56. 56. 1 2 3 4 5 6 時刻状態 _ a _ b _ p(l|X) の高速計算 全パスの確率和)|( Xlp 2 _y 2 ay 2 ay 2 by 2 _y
  57. 57. 1 2 3 4 5 6 時刻状態 ある時刻に着目 _ a _ b _
  58. 58. 1 2 3 4 5 6 時刻状態 この状態を通るパスと _ a _ b _
  59. 59. 1 2 3 4 5 6 時刻状態 この状態を通るパスと _ a _ b _
  60. 60. 1 2 3 4 5 6 時刻状態 この状態を通るパスと _ a _ b _
  61. 61. 1 2 3 4 5 6 時刻状態 この状態を通るパスと _ a _ b _
  62. 62. 1 2 3 4 5 6 時刻状態 この状態を通るパスと _ a _ b _
  63. 63. 全部の確率和を足すと 1 2 3 4 5 6 時刻状態 _ a _ b _ )|( Xlp
  64. 64. … t … 時刻状態 … s … p(l|X) の高速計算  s tstsXlp ),(),()|(  α(s, t) は 前半パスの 確率和 β(s, t) は 後半パスの 確率和
  65. 65. p(l|X) の高速計算 )1,()1,1(),( )(')('  tsytsyts t sl t sl  α(s, t) は 漸化式で 計算 状態 _ a _ b _ 1 2 3 4 5 6 時刻 t sly )(' )1,1(  ts )1,( ts (sが空白の場合)
  66. 66. p(l|X) の高速計算 )1,()1,1()1,2(),( )(')(')('  tsytsytsyts t sl t sl t sl  α(s, t) は 漸化式で 計算 状態 _ a _ b _ 1 2 3 4 5 6 時刻 )1,1(  ts )1,( ts )1,2(  ts t sly )(' (sが空白以外の場合)
  67. 67. p(l|X) の高速計算 1 _)1,1( yt=1 の場合 状態 _ a _ b _ 1 2 3 4 5 6 時刻 1 )(')1,2( sly 動的計画法でαの計算を高速化 (βも同様)
  68. 68. … t … 時刻状態 … s … p(l|X) の高速計算  s tstsXlp ),(),()|(  α(s, t) は 前半パスの 確率和 β(s, t) は 後半パスの 確率和
  69. 69. p(l|X) の微分計算 どうやって 計算するか? 速くなった!
  70. 70. p(l|X) の微分計算  p(l|X) の微分も α と β から計算可能 ラベル j に 対応する 状態の集合
  71. 71. CTCによる学習  p(l|X)とp(l|X) の微分が分かった → が計算可能 out 
  72. 72. CTCによる学習  が計算可能 → BPTTが適用できる ・・・ T  1, Tout  1T  2, Tout  2T 1  2  2,out 1,out  Tout,  out 
  73. 73. CTCによる予測  RNN出力から冗長でない系列へとデコードしたい           1.0 9.0 3.0 入力ベクトル系列 冗長なラベル系列           6.0 5.0 2.0           2.0 4.0 6.0           2.0 4.0 6.0 bba ,_,, ab 本当に欲しい出力
  74. 74. CTCによる予測  愚直な計算だと時間かかる  厳密解を速く計算する方法は知られていない

×