Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Differentiable Neural Computers 文献読み会

Differentiable Neural Computers 文献読み会

Differentiable Neural Computers 文献読み会の発表資料です。

オトナの Deep Learning の詳細はこちら
https://otona.connpass.com/event/47512/

Takahiro Yano

January 06, 2017
Tweet

More Decks by Takahiro Yano

Other Decks in Programming

Transcript

  1. • RNN/LSTMの解説 • DNCの解説 NN NN NN + state vector

    + memory data1 data2 data3 : data1 data2 data3 : data1 data2 data3 : DNC RNN/LSTM 普通のNN output output output
  2. • RNN/LSTMの解説 • DNCの解説 NN NN NN + state vector

    + memory data1 data2 data3 : data1 data2 data3 : data1 data2 data3 : 過去のデータも把握する 入力されたデータ だけ把握する 過去のデータを もっともっと把握する DNC RNN/LSTM 普通のNN output output output
  3. RNN/LSTM NeuralNetworkの単層 (行列+活性化関数) ベクトルの要素ごとの演算 ベクトルの結合 ベクトルのコピー 結合 コピー コピー コピー

    コピー コピー 要素ごとの掛け算 要素ごとの足し算 要素ごとに tanhを施す 行列がそれぞれの箱に 1つずつ入っている。 A,B,C,Dみたいな。
  4. 忘却ゲート • 忘れ方は Wf と bf で決定される • Wf と

    bf は教師データを利用した学習で求める 上式で ft を出したら ft ⊗ Ct-1 で忘却! シグモイド関数 (0〜1の範囲の出力にする) • 前時刻のステートベクトルの内容をどれだけ消去するかを 決定する
  5. RNN/LSTM 動作まとめ • ステートベクトルから情報削除(忘却) • ステートベクトルに情報負荷(入力) • ステートベクトルから必要な情報だけ読み出し(出力) • なにを忘れるか、なにを入力するか、何を読み出すかは  

    学習データによって自動的に最適化される • この方法を使うと短期記憶、長期記憶どちらもうまくいく、   と言われている – 自然言語処理を代表として、時系列データでよく利用される手法
  6. NNからNCへ • Neural Network はそもそも CPU みたいなもの – 論文ではControllerと呼んでいる •

    Neural Network(CPU) にメモリつけて      Neural Computerにしたよ – メモリに過去の入力データを上手に保持すれば、、、
  7. まずざっくり理解 RNN/LSTM Matrix Memory content weight allocation weight content weight

    forward weight backward weight write weight read weight interface vector
  8. R r r r r r r r r ,

    , 1 ⋯ RNN/LSTM ⊕ Memory 1 − t h h h h ξ ξ ξ ξ [ ] R r r r r r r r r r W W W W , , 1 ⋯ v v v v x x x x y y y y output input interface vector read vectors 従来のRNN/LSTM r W W W W M M M M
  9. R r r r r r r r r ,

    , 1 ⋯ RNN/LSTM 1 − t h h h h ξ ξ ξ ξ v v v v x x x x input interface vector read vectors output 1 − t s t s 1 − t h t h [ ] R t r r x , , , 1 ⋯ t h y W ξ W t y h W v ⋅ = t h W ⋅ = ξ ξ ReadVectorsが入力に加わる 出力ベクトルと インターフェースベクトルの2種類の出力
  10. Memory M M M M メモリ R r r r

    r r r r r , , 1 ⋯ ξ ξ ξ ξ interface vector read vectors N W ・・・ W次元のベクトルが N個あるイメージ 内部の構造は…
  11. メモリの動作 RNN/LSTMからインターフェースベクトルが出力される インターフェースベクトルを分解、ハットをとる Write Weight(1個) Allocation Weight Content Weight (For

    Write) メモリの更新 Read Vectors(R個) Read Weights(R個) Content Weight (For Read) Temporal Link Matrix Read VectorsをRNN/LSTMに渡す Backward Weight Forward Weight (RNN/LSTMの処理) (RNN/LSTMの処理)
  12. RNN/LSTMからインターフェースベクトルが出力される インターフェースベクトルを分解、ハットをとる Write Weight(1個) Allocation Weight Content Weight (For Write)

    メモリの更新 Read Vectors(R個) Read Weights(R個) Content Weight (For Read) Temporal Link Matrix Read VectorsをRNN/LSTMに渡す Backward Weight Forward Weight (RNN/LSTMの処理) (RNN/LSTMの処理) メモリの動作 前時刻で読み出した場所に書き込む 利用していない場所に書き込む Write Keyと似ている 場所に書き込む Read Keyと似ている 場所から読み込む 書き込み順が連続している 前後の場所から読み込む
  13. RNN/LSTMからインターフェースベクトルが出力される インターフェースベクトルを分解、ハットをとる Write Weight(1個) Allocation Weight Content Weight (For Write)

    メモリの更新 Read Vectors(R個) Read Weights(R個) Content Weight (For Read) Temporal Link Matrix Read VectorsをRNN/LSTMに渡す Backward Weight Forward Weight (RNN/LSTMの処理) (RNN/LSTMの処理)
  14. Memory M M M M インターフェースベクトルの分解 R r r r

    r r r r r , , 1 ⋯ ξ ξ ξ ξ interface vector read vectors [ ] R w a R w w R r r R r r g g f f π π β β β ˆ , , ˆ , ˆ , ˆ , ˆ , , ˆ , ~ , ˆ , ˆ , , ˆ , , ˆ , , , 1 1 , 1 , , 1 , ⋯ ⋯ ⋯ ⋯ v v v v e e e e k k k k k k k k k k k k ξ ξ ξ ξ = R個の Read Key R個の Read Strength 1個の Write Key 1個の Write Strength 1個の Erase Vector 1個の Write Vector R個の Free Gate 1個の Allocation Gate 1個の Write Gate R個の Read Mode
  15. インターフェースベクトルの分解 • メモリー内の各所で利用される [ ] R w a R w

    w R r r R r r g g f f π π β β β ˆ , , ˆ , ˆ , ˆ , ˆ , , ˆ , ~ , ˆ , ˆ , , ˆ , , ˆ , , , 1 1 , 1 , , 1 , ⋯ ⋯ ⋯ ⋯ v v v v e e e e k k k k k k k k k k k k ξ ξ ξ ξ = R個の Read Key R個の Read Strength 1個の Write Key 1個の Write Strength 1個の Erase Vector 1個の Write Vector R個の Free Gate 1個の Allocation Gate 1個の Write Gate R個の Read Mode Content Weight (For Read) メモリの更新 Allocation Weight Content Weight (For Write) Read Weights Write Weights
  16. RNN/LSTMからインターフェースベクトルが出力される インターフェースベクトルを分解、ハットをとる Write Weight(1個) Allocation Weight Content Weight (For Write)

    メモリの更新 Read Vectors(R個) Read Weights(R個) Content Weight (For Read) Temporal Link Matrix Read VectorsをRNN/LSTMに渡す Backward Weight Forward Weight (RNN/LSTMの処理) (RNN/LSTMの処理)
  17. ( ) R s s r s , , 1

    , ⋯ = = Τw w w w M M M M r r r r Read Vectors(R個) r w w w w N W ・・・ N Τ M M M M
  18. ( ) R s s r s , , 1

    , ⋯ = = Τw w w w M M M M r r r r Read Vectors(R個) r w w w w N W ・・・ N Τ M M M M read weights メモリ上のどのベクトル を優先的に読み出すか を決めるベクトル
  19. メモリの更新 ( ) Τ Τ − + − ⊗ =

    v v v v w w w w e e e e w w w w E E E E M M M M M M M M ~ 1 w w t t w w w w w N W [ ]W 1 , 0 ∈ Τ e e e e Τ e e e e w w w ww w w w w w N W Τ v v v v ~ Τ v v v v w w w w ~ w
  20. メモリの更新 ( ) Τ Τ − + − ⊗ =

    v v v v w w w w e e e e w w w w E E E E M M M M M M M M ~ 1 w w t t w w w w w N W [ ]W 1 , 0 ∈ Τ e e e e Τ e e e e w w w ww w w w w w N W Τ v v v v ~ Τ v v v v w w w w ~ w メモリ上のどのベクトルを優先的に 消し、書き込むかを決めるベクトル 消す内容 書く内容 write weight 1がならんだ行列
  21. RNN/LSTMからインターフェースベクトルが出力される インターフェースベクトルを分解、ハットをとる Write Weight(1個) Allocation Weight Content Weight (For Write)

    メモリの更新 Read Vectors(R個) Read Weights(R個) Content Weight (For Read) Temporal Link Matrix Read VectorsをRNN/LSTMに渡す Backward Weight Forward Weight (RNN/LSTMの処理) (RNN/LSTMの処理)
  22. Content Weight (For Write) • Write Key   と相関が高いメモリの行ほど重みを強くする [ ]

    [ ] [ ] [ ] [ ] ∑ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ ⋅ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ ⋅ = j w w w w w w w j j i i i β β : , : , exp : , : , exp M M M M k k k k M M M M k k k k M M M M k k k k M M M M k k k k c c c c w k k k k (強くメモリに書き込む)
  23. Content Weight (For Read) • Read Keys              と相関が高いメモリの行

    ほど重みを強くする [ ] [ ] [ ] [ ] [ ] ∑ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ ⋅ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ ⋅ = j s r s r s r s r s r s r s r j j i i i , , , , , , , : , : , exp : , : , exp β β M M M M k k k k M M M M k k k k M M M M k k k k M M M M k k k k c c c c ( ) R s s r , , 1 , ⋯ = k k k k (強くメモリから読み出す)
  24. RNN/LSTMからインターフェースベクトルが出力される インターフェースベクトルを分解、ハットをとる Write Weight(1個) Allocation Weight Content Weight (For Write)

    メモリの更新 Read Vectors(R個) Read Weights(R個) Content Weight (For Read) Temporal Link Matrix Read VectorsをRNN/LSTMに渡す Backward Weight Forward Weight (RNN/LSTMの処理) (RNN/LSTMの処理)
  25. Allocation Weight (1) 【手順1】 Memory Retention Vector (メモリ保持ベクトル) ( ) (

    ) ψ ψ ψ ψ w w w w u u u u u u u u u u u u ⊗ ⊗ − + = − − − w t t t t 1 1 1 1 (前時刻で読み出した情報は捨てていい) ( ) ∏ = − − = R s s r t s f 1 , 1 1 w w w w ψ ψ ψ ψ 前時刻で 使ってない (前時刻で使ってない かつ  前時刻で書き込んだ 場所は  Usage Vectorに追加する) 前時刻で 書き込んだ 前時刻で 読み出した 【手順2】 Usage Vector (すでに利用している場所を表すベクトル)
  26. 【手順4】 Allocation Vector Allocation Weight (2) 【手順3】 の計算 は  の値が小さい順(最も利用されていない順)にインデックスを並べたもの N

    t Ζ Ζ Ζ Ζ ∈ φ t φ t u u u u [ ] [ ] [ ] [ ] ( ) [ ] [ ] ∏ − = − = 1 1 1 j i t t t t t i j j φ φ φ u u u u u u u u a a a a
  27. • で allocation weight と content weight を線形補間 •  で最終的な

    Write Weight の大きさを調整 ( ) [ ] w a a w w g g g c c c c a a a a w w w w − + = 1 Write Weight a g w g
  28. RNN/LSTMからインターフェースベクトルが出力される インターフェースベクトルを分解、ハットをとる Write Weight(1個) Allocation Weight Content Weight (For Write)

    メモリの更新 Read Vectors(R個) Read Weights(R個) Content Weight (For Read) Temporal Link Matrix Read VectorsをRNN/LSTMに渡す Backward Weight Forward Weight (RNN/LSTMの処理) (RNN/LSTMの処理)
  29. • 実際の導出 • 本質 Temporal Link Matrix Τ − =

    w t w t t L 1 w w w w w w w w 重みが小さければ 再帰的に求めるという意味 w t w w w w N N Τ − w t w t 1 w w w w w w w w Τ − w t 1 w w w w
  30. • 前時刻のRead WeightにTemporal Link Matrixをかけて、時間的にすす んだRead Weight、時間的に戻ったRead Weightを求める Forground Weights

    Background Weights Read Weights s r t t s s r t t s L L , 1 , 1 − Τ − = = w w w w b b b b w w w w f f f f ( ) R s , , 1 ⋯ = [ ] [ ] [ ] s s s r s s s s r t f f f f c c c c b b b b w w w w 3 2 1 , , π π π + + = • とContentWeight の3つで重みづけ加算してRead Weightsを出す s s b b b b f f f f , s r, c c c c
  31. RNN/LSTMからインターフェースベクトルが出力される インターフェースベクトルを分解、ハットをとる Write Weight(1個) Allocation Weight Content Weight (For Write)

    メモリの更新 Read Vectors(R個) Read Weights(R個) Content Weight (For Read) Temporal Link Matrix Read VectorsをRNN/LSTMに渡す Backward Weight Forward Weight (RNN/LSTMの処理) (RNN/LSTMの処理) 前時刻で読み出した場所に書き込む 利用していない場所に書き込む Write Keyと似ている 場所に書き込む Read Keyと似ている 場所から読み込む 書き込み順が連続している 前後の場所から読み込む
  32. R r r r r r r r r ,

    , 1 ⋯ RNN/LSTM ⊕ Memory 1 − t h h h h ξ ξ ξ ξ [ ] R r r r r r r r r r W W W W , , 1 ⋯ v v v v x x x x y y y y output input interface vector read vectors 従来のRNN/LSTM r W W W W M M M M
  33. END