Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
bigdata2012ml okanohara
bigdata2012ml okanohara
Loading in …3
×

Check these out next

1 of 74 Ad
Advertisement

More Related Content

Slideshows for you (20)

Viewers also liked (20)

Advertisement

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

Advertisement

Recently uploaded (20)

再帰型ニューラルネット 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による予測  愚直な計算だと時間かかる  厳密解を速く計算する方法は知られていない

×