, 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
, 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種類の出力
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
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
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
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がならんだ行列
[ ] [ ] [ ] [ ] ∑ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ ⋅ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ ⋅ = 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 (強くメモリに書き込む)
ほど重みを強くする [ ] [ ] [ ] [ ] [ ] ∑ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ ⋅ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ ⋅ = 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 (強くメモリから読み出す)
) ψ ψ ψ ψ 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 (すでに利用している場所を表すベクトル)
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
, 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