End-To-End Memory Networks

End-To-End Memory Networksgit

2019-05-20 14:37:35github

Paperhttps://papers.nips.cc/paper/5846-end-to-end-memory-networks.pdf 網絡

Codehttps://github.com/facebook/MemNN 函數

 

1. Background and Motivation:學習

如今人工智能研究的兩個挑戰性的問題是:第一是可以構建模型,使其可以進行多個計算步驟,以服務於回答問題或者完成一個任務;另外一個是能夠建模時序數據中的長期依賴關係。最近,基於存儲和 attention 機制的模型開始復興,而構建這種存儲對解決上述兩個問題,提供了可能的方向。在前人的工做中,存儲是創建在連續的表達上;從該存儲中進行讀取和寫入的操做,以及一些其餘的操做步驟,都經過神經網絡的動做來建模。人工智能

 

在本文中,做者提出了一種新穎的 RNN 結構,其可以循環的從一個可能的大型額外記憶單元中屢次進行讀取,而後輸出一個符號。咱們的模型能夠看作是連續的 Memory Network。咱們的模型也能夠看作是一種 RNNsearch 的版本,每輸出一個符號都帶有多個 hops。 咱們的實驗證實,長期記憶的 the multiple hops 對取得較好的效果,具備關鍵性的做用。訓練這些記憶表達,能夠以一種 end-to-end manner 來將其接入到咱們的模型中。spa

 

2. Approachblog

咱們的模型將離散元素集合 x1, x2, .... xn(存儲在 memory 中)和 query q 做爲輸入,而後輸出一個 answer a。每個 xi,q,a 都包含從字典中獲得的符號表達。模型將全部的 x 寫入到 memory,直至達到一個固定的 buffer size,而後爲 x 和 q 找到一個連續的表達。這個連續的表達而後經過 multiple hops 來進行處理,輸出 a。這就容許偏差信號能夠沿着屢次記憶的訪問進行傳播,在訓練過程當中傳遞到輸入。ip

 

2.1 Single Layerci

Input memory representation

假設咱們給定了一個輸入集合 x1, x2, ... , xi 而且存儲在記憶單元中。整個 {xi} 的集合能夠轉換爲 memory vector {mi},經過將每個 xi 映射到連續的空間,最簡單的狀況就是,利用 an embedding matrix A。Query q 而後也被映射,獲得一箇中間狀態 u。在 embedding space 中,咱們經過採用內積,而後用 softmax 函數,計算 u 和 每個 memory mi 之間的匹配: 

經過這種方式定義的 p,是基於輸入的機率向量。

 

Output memory representation 

每個 xi 都有一個對應的輸出向量 ci(經過另外一個 embedding matrix C 來進行轉換)。從記憶 o 中獲得的響應,用機率向量 p 和 轉換輸入 ci 之間的加權求和:

由於從輸入到輸出的函數是平滑的,咱們能夠簡單的計算其梯度,而後進行反傳便可。其餘最新提出的一些 memory 和 attention 的方法,也是採用這種方法。

 

Generating the final prediction 

在單個 layer 的狀況下,輸出向量 o 的和,以及 輸入映射 u 都被用一個權重矩陣 W 進行傳遞,而後用 softmax 獲得其預測的 label:

整體的模型如圖 1 (a)所示。

 

 

2.2 Multiple Layers

咱們如今將模型拓展爲能夠處理 K hop operations 的狀況。這些 memory layers 能夠經過以下的方式進行堆疊:

1). 第一層上面的那些 layers 的輸入是:來自 layer k 的輸出 $o^k$ 以及輸入 $u^k$ 的和:

    $u^{k+1} = u^k + o^k$. 

2). 每一層都有其各自的 embedding matrices $A^k, C^k$,用於映射其輸入 $x_i$。

3). 在網絡的頂端,W 的輸入也考慮了 the top memory layer 的輸入和輸出:

$\hat{a} = Softmax(W u^{K+1}) = Softmax(W (o^K + u^K))$。

 

做者在這個模型中,考慮了以下兩種加權的方式:

1. Adjacent:某一層的輸出是上一層的輸入,即: $A^{k+1} = C^{k}$。咱們也給定了以下的約束:a). 答案預測矩陣 要和 最終輸出的映射相同,即:$W^T = C^K$, b). question embedding 要和 第一層的 input embedding 保持一致,即:$B = A^1$。

2. Layer-wise (RNN-like):  輸入和輸出 embedding 在不一樣layers 之間是相同的,即:$A^1 = A^2 = ... = A^K$ and $C^1 = C^2 = ... = C^K$。咱們已經發現,在 hops 之間用一個線性映射 H 來更新 u 是有效的;即,$u^{k+1} = H u^{k} + o^k$。這個映射是沿着剩下的參數學習的。

== 

相關文章
相關標籤/搜索