End-To-End Memory Networks

2014 年 FaceBook 提出了 Memory Networks (MEMNN),MEMNN 會保存上下文句子的信息,使模型擁有更大的記憶,然後利用類似 Attention 的機制找出最相關的記憶。但是 MEMNN 需要進行很多有監督訓練,因此 FaceBook 提出了一種更加完善的端到端 Memory Networks (MemN2N),使其更容易使用並且支持多層結構。

1. 前言

前一篇文章介紹了 ,在 MEMNN 中包含了 I, G, O, R 四個模塊,其中模塊 I 和 G 負責將句子轉成向量並保存到 Memory Slots,模塊 O 負責找出相關的 Memory,而模塊 R 負責輸出預測結果。

MEMNN 的有監督訓練包含很多要素,除了最終預測的單詞外,還包括了最相關的兩個 Memory,因此在實際中訓練比較困難。

因此 FaceBook 在 2015 年提出了一種改進版的 Memory Network (MemN2N),對應的論文是《End-To-End Memory Networks》。和之前 MEMNN 不同,MemN2N 採用了端到端的訓練方式,減少了監督訓練的難度。MemN2N 可以支持多層網絡結構,我們首先看一下單層結構的 MemN2N,多層結構只是多個單層結構堆疊形成。

下文中 x1, x2, ..., xn 表示上下文信息 (即背景知識),q 表示一個問題,a 表示答案。

2. Single Layer

End-To-End Memory Networks

單層 MemN2N

上圖是 MemN2N 的單層結構,可以看到 MemN2N 包含了兩個 Memory Slots,分別是 Input memory (圖中藍色) 和 Output memory (圖中黃色)。另外還包含一個 Predict 模塊,用來預測答案 a。

Input Memory:對於所有上下文句子 xi,Input Memory 都會使用矩陣 A 計算出對應的句子向量 mi 並保存在 Input Memory 裡面。句子向量生成的方法在第 4 節介紹。保存好 memory 後傳入問題 q,用矩陣 B 計算出 q 對應的特徵向量 u,然後 Input Memory 需要用 attention 機制計算出每一個 memory mi 對應的權重 pi,計算公式如下。

End-To-End Memory Networks

Output Memory:和 Input Memory 一樣,Output Memory 會使用矩陣 C 計算出上下文句子 xi 的特徵向量 ci,然後根據 Input Memory 得到的權重 pi 將特徵向量 ci 加權融合在一起,得到最終的輸出特徵 o。

End-To-End Memory Networks

Prediction:最終的預測模塊,預測前將問題的特徵向量 u 和最後輸出的特徵向量 o 相加,然後傳入一個 softmax 層進行預測。

End-To-End Memory Networks

3. Multiple Layers

End-To-End Memory Networks

多層 MemN2N

MemN2N 可以支持多層結構,如上圖所示,此時MemN2N 包含多個 Input Memory 和 Output Memory。除了第一層外,其他所有層的輸入向量 u(k+1) 都是上一層的輸入向量 uk 和輸出向量 ok 之和。

End-To-End Memory Networks

在多層結構時 (K 層),每一層的特徵矩陣 A1, A2, .., AKC1, C2, .., CK 有不同的設置方法,文章中提到了兩種:

AdjacentA(k+1) = C(k), W = C(K), B = A(1)

Layer-wise (RNN-like)A(1) = A(2) = ... = A(K)C(1) = C(2) = ... = C(K)

4. 句子向量計算

給定一個句子 xi,其包含很多的單詞 {xi1, xi2, ..., xin},最簡單的句子向量計算方法是使用 bag-of-words BoW,直接將句子中所有單詞的表徵向量求和得到。但是直接使用 BoW 求和沒有考慮到單詞之間的位置信息和句子之間的位置信息。

因此 MemN2N 提出了第二種計算句子向量的方法,考慮了句子中每一個單詞的位置信息,計算方式如下:

End-To-End Memory Networks

公式中 A(xij) 指單詞 xij 的表徵向量,lj 中的 j 是單詞在句子中的位置,lj 是單詞位置的表徵向量,通過 lj 可以引入單詞位置的信息。MemN2N 在此基礎上還加上一個 Temporal Encoding,編碼句子在所有上下文中的位置信息 T(i),最終的句子向量如下計算:

End-To-End Memory Networks

5. 參考文獻

《End-To-End Memory Networks》


分享到:


相關文章: