2015 End-To-End Memory Networks
摘要:
作者介紹了一種在大型外部記憶 (a possibly large external memory) 上使用循環注意力模型的神經網絡。這個結構是記憶網絡 (Memory Network) ,但卻不像記憶網絡那樣工作,它通過端對端進行訓練,因此訓練時只需要明顯較少的監督,使得它更適合應用于真實場景。它可以看做是在 需要每個輸出符號 (per output symbol) 表現出多個計算步/跳 (multiple computational steps(hops)) 的情況下 對 RNN 研究的一個擴展。 該模型的適應性使其可以應用很多任務,例如(綜合型的)問答和語言模型建模。之前,作者將他們的方法與記憶網絡進行比較,使用更少的監督信息。之后,在 the Penn TreeBank 和 Text8 數據集上,使用他們的方法與 RNNs 和 LSTMs 進行對比。從實驗結果看,多重計算跳 (multiple computational hops) 這個關鍵的概念提高了測試結果。
數據集:
- bAbI:測試模型在問答系統上的性能
- the Penn TreeBank 和 Text8:測試模型在語言建模上的能力
模型的創新點:
- 解決當時人工智能領域的兩大挑戰:
- 建立一個在回答問題或者完成一個任務時可以進行多重計算步( multiple computational steps)的模型。
- 作者所提出的模型是對記憶網絡( Memory Network)的一個改進,解決記憶網絡難以通過使用BP算法進行訓練,需要對網絡中的每一層進行監督的問題。它從輸入-輸出對(input-output pairs)中使用端對端(end-to-end)進行訓練, 因此可以應用于大多數任務中。
- 作者所提出的模型是對記憶網絡 (Memory Network) 的一個改進,解決記憶網絡難以通過使用 BP 算法進行訓練,需要對網絡中的每一層進行監督的問題。它從輸入-輸出對 (input-output pairs) 中使用端對端 (end-to-end) 進行訓練, 因此可以應用于大多數任務中。
- 作者提出的模型,雖然結構與 RNN 類似,但不像傳統的 RNN 網絡,它顯式地將存儲在記憶中的輸出在 K 跳中進行調整 (explicitly condition on the outputs stored in memory during the K hops) ,同時保持輸出 soft (keep these output soft) ,而不是對輸出進行采樣。因此他們的模型在產生一個輸出之前會經過幾個計算步 (several computational steps) 。
- 與基于RNNs或LSTM模型去捕捉序列數據中長期結構 (long-term structure) 的各種方法不同,作者提出的模型使用的是一個全局記憶,并共享讀取和寫入函數。
模型結構:
-
Single Layer
作者首先介紹了模型在 Single Layer 下對單個記憶跳 (a single memory hop) 操作的實現。-
輸入記憶表示( Input memory representation):
將輸入集 (input set)存儲在記憶中。再將
轉換為記憶向量
,該記憶向量是通過計算每個
在連續空間( continuous space)的
維嵌入,例如使用一個簡單的嵌入矩陣
(維度大小為
) 。問題
也可以轉化為嵌入向量
(但使用的是另一個嵌入矩陣
) 。 在嵌入空間中,他們通過內部乘積和 softmax 計算
和 每個記憶
的匹配分數 (compute the match)。
是一個基于輸入的概率向量( a probability vector over the inputs)。
【這里的和
都是一維的句子向量,而不是由詞向量組成的二維矩陣。后面會解釋作者怎么產生句子向量】
-
輸出記憶表示( Output memory representation):
每個有一個對應的輸出向量
(例如通過另一個簡單的嵌入矩陣
)。 記憶
產生的響應向量( response vector ) 是對輸入轉化后的向量
進行加權求和, 權重是從輸入得到的概率向量。
因為從輸入到輸出的函數是平滑的,可以容易計算它的梯度和反向傳播。最近提出的其他記憶形式( forms of memory )或者注意力( attention )可以使用作者這種方式,例如[4],[5],[6] -
生成最終預測( generating the final prediction):
在單層的情況下,先對輸出向量和 輸入嵌入向量
進行求和,再通過一個最終權重矩陣
(維度為
) 和 一個softmax 產生預測標簽。
-
輸入記憶表示( Input memory representation):
-
Multiple Layers
這里,作者將它們的模型擴展到K跳操作 (K hop operations) 。記憶層 (the memory layers) 通過下面的方法進行堆疊 :- 第一層以上的輸入是來自層
的輸出
和輸入
之和。
- 每一層都有它自己的嵌入矩陣 (
,
),用來對輸入
進行嵌入。
- 在網絡的最頂層, W的輸入也是通過結合最頂層的記憶層 (the top memory layer) 的輸入和輸出。
為了減輕模型訓練 (ease training) 的計算復雜度和減小參數數量,作者對每一層的嵌入矩陣 (,
) 分別采用了兩種權重綁定 (weight tying) 方法進行約束:
-
鄰近 (Adjacent):
某一層的輸出記憶的嵌入矩陣()是下一層的輸入記憶的嵌入矩陣(
)。 作者還約束了:
- 答案預測矩陣
的 shape 與最后的輸出記憶的嵌入矩陣
一致。
- 問題嵌入矩陣
為第一層的輸入記憶的嵌入矩陣
。
- 答案預測矩陣
-
分層(Layer-wise, RNN-like):
輸入和輸出嵌入矩陣在不同層中都是相同。例如:和
。 作者還發現在更新
時,增加一個線性映射層
,使
通過
進行線性映射。這個映射可以和其他參數一起學習,因此作者使用 layer-wise 權重綁定 (weight tying) 進行實驗時,都會使用這種線性映射。
當使用 layer-wise 權重綁定方法時,作者的模型結構會轉變成傳統的RNN模型,只是把RNN的輸出分為內部輸出和外部輸出( internal 和 external outputs)。 內部輸出()可以認為是記憶,外部輸出(
)可以認為是用于標簽預測。
從 RNN 的角度上看,是一個隱藏狀態,模型產生一個內部輸出
( 可以說是圖1(a)中的注意力權重 (attention weights)),然后模型通過
和
來更新隱藏狀態
。
- 第一層以上的輸入是來自層
-
模型結構圖:
圖1 -
其他細節和技巧:
-
句子表示 (Sentence Representation:
在作者的實驗中,他們探討了兩種不同的句子表示:-
詞袋表示:
先得到句子中每個詞的詞嵌入,然后進行求和得到句子表示。這種表示有一個缺點就是無法捕捉句子中詞語的順序,而詞序 (the order of the words) 對于某些任務來說是很重要的。
-
結合單詞在句子中的位置進行編碼:
對于這種句子表示,作者稱之為位置編碼 (position encoding (PE)) ,這意味著詞的順序會影響這種句子表示。
從1開始索引。 J是句子中單詞的個數, d是嵌入的維度。
-
詞袋表示:
-
臨時編碼 (Temporal Encoding):
許多的QA任務需要臨時上下文 (temporal context) 的概念。例如在圖2中模型需要理解 Sam 在 kitchen 之后再到 bedroom 。為了使模型能夠處理這些,對記憶向量 () 和輸出向量 (
) 進行修改。
是由臨時信息編碼得到的特殊矩陣
的第
行。注意:作者在論文中對句子的索引是反序的,即
是故事的最后一句話。
圖2 -
通過注入隨機噪聲來學習時間不變性( Learning time invariance by injecting random noise):
作者發現通過加入假的記憶來正則化對模型的訓練具有一定的幫助作用。 在訓練時,作者在故事中隨機加入10%的空記憶。他們將這個方法稱為隨機噪聲 (random noise RN)。
-
linear start training:
一開始訓練的時候,先去除記憶層的 softmax 函數進行訓練,使得模型除了最后的答案預測有 softmax ,其他全部只有線性映射。當驗證集的 Loss 停止下降時,再將 softmax 重新插入,并繼續訓練。作者把這種方法叫做線性訓練啟動 (linear start training (LS))。
-
句子表示 (Sentence Representation:
參考文獻:
- http://papers.nips.cc/paper/5846-end-to-end-memory-networks.pdf "End-To-End Memory Networks"
- https://arxiv.org/pdf/1410.3916.pdf "Memory networks"
- https://arxiv.org/pdf/1506.07285.pdf "Ask me anything: Dynamic memory networks for natural language processing"
- https://arxiv.org/pdf/1409.0473.pdf "Neural machine translation by jointly learning to align and translate"
- https://arxiv.org/pdf/1410.5401.pdf "Neural turing machines"
- https://arxiv.org/pdf/1502.04623.pdf "DRAW: A recurrent neural network for image generation"