1. 程式人生 > >論文解讀:記憶網路(Memory Network)

論文解讀:記憶網路(Memory Network)

在瞭解vqa問題的論文時,發現有很多論文采用了記憶網路的思路,模擬推理過程,這篇文章主要總結關於記憶網路的三篇經典論文,目的是對記憶網路有個認識。分別是:
MEMORY NETWORKS,End-To-End Memory Networks,Ask Me Anything: Dynamic Memory Networks for Natural Language Processing

一,MEMORY NETWORKS

這是Facebook AI在2015年提出來的:MEMORY NETWORKS。論文是第一次提出記憶網路,利用記憶元件儲存場景資訊,以實現長期記憶的功能。對於很多神經網路模型,RNN,lstm和其變種gru使用了一定的記憶機制,在Memory Networks的作者看來,這些記憶都太小了。這就是這篇文章的目的。
我將從三個部分講解這篇文章:

  • 記憶網路各個元件的內容
  • 記憶網路在nlp的使用
  • 損失函式

1,記憶網路:

一個記憶網路(memory networks,簡稱為MemNN),包括了記憶m,還包括以下4個元件I、G、O、R(lstm的三個門,然後m像cell的list):
在這裡插入圖片描述

  • I: (input feature map):用於將輸入轉化為網路裡內在的向量。(可以利用標準預處理,例如,文字輸入的解析,共參考和實體解析。 還可以將輸入編碼為內部特徵表示,例如,從文字轉換為稀疏或密集特徵向量)
  • G: (generalization):更新記憶。在作者的具體實現裡,只是簡單地插入記憶數組裡。作者考慮了幾種新的情況,雖然沒有實現,包括了記憶的忘記,記憶的重新組織。(最簡單的G形式是將I(x)儲存在儲存器中的“slot”中)
    在這裡插入圖片描述
  • O: (output feature map):從記憶裡結合輸入,把合適的記憶抽取出來,返回一個向量。每次獲得一個向量,代表了一次推理過程。
  • R: (response):將該向量轉化回所需的格式,比如文字或者answer。

2,記憶網路在nlp的使用:

場景:給一個段落和一個問題,給出回答

  • I: 輸入的是一句話,簡單地將I轉換為一個頻率的向量空間模型。

  • m: 記憶卡槽list。

  • G:簡單地把讀到的對話組裡的每一句話的向量空間模型,插到記憶的list裡,這裡預設記憶插槽比對話組句子還多。

  • O:就是輸入一個問題x,將最合適的k個支撐記憶(the supporting memories,在下文的資料集裡會舉出例子),也就是top-k。做法就是把記憶陣列遍歷,挑出最大的值。最後,O返回一個長度為k的陣列。
    在這裡插入圖片描述


    在這裡插入圖片描述

  • R:利用O得到的輸出,返回一個詞彙w。
    在這裡插入圖片描述

  • 打分函式:在O和R中的打分函式:
    在這裡插入圖片描述

3,損失函式

採用margin ranking loss,這個與支援向量機的損失函式類似。(即是選出最合適中間結果,和得到最好的預測輸出。)
在這裡插入圖片描述

4,理解

  • 記憶網路是一個元件形式的模型,每個模型相互對立又相互影響。每個元件沒有固定的模型,可以是傳統的模型,也可以是神經網路。
  • 論文的缺陷沒有思想端到端的訓練,端到端的訓練將在下面介紹。

二,End-To-End Memory Networks

這篇文章是上面一篇文章的基礎之上提出來的端到端的訓練方式。並提出重複的去提取有用的資訊,實現多次推理的過程。End-To-End Memory Networks
在這裡插入圖片描述

1,單次推理:圖a

使用輸入集合S={x1,x2,…xi,…,xn}S={x1,x2,…xi,…,xn}表示上下文知識,使用輸入向量q表示問題,使用輸出向量aˆ表示預測答案。記憶網路模型通過對上下文集合S和問題向量q的數學變換,得到對應於問題的答案。

  • Input memory representation:把 詞進行embedding,變成向量放入m中。
  • q:對問題q進行同樣的embedding
  • 計算u和記憶m的匹配程度。
    在這裡插入圖片描述
  • 輸出o:記憶m的加權和
    在這裡插入圖片描述
    -用o,以及問題u預測答案:
    在這裡插入圖片描述

2,多次推理:圖b

  • 每次的更新:
    在這裡插入圖片描述

  • 經過多次推理,計算輸出:
    在這裡插入圖片描述

  • 對於權重引數設定,作者提出兩種方案:
    在這裡插入圖片描述

三,Ask Me Anything: Dynamic Memory Networks for Natural Language Processing

這篇文章是記憶網路的改進版本,提出的DMN網路模型包含輸入、問題、情景記憶、回答四個模組,架構圖如下所示。模型首先會計算輸入和問題的向量表示,然後根據問題觸發Attention機制,使用門控的方法選擇出跟問題相關的輸入。然後情景記憶模組會結合相關的輸入和問題進行迭代生成記憶,並且生成一個答案的向量表示。
Ask Me Anything: Dynamic Memory Networks for Natural Language Processing
在這裡插入圖片描述

在這裡插入圖片描述

1,Input Module

使用GRU對輸入進行編碼,(這裡論文中有提到GRU和LSTM,說GRU可以達到與LSTM相似的準確度而且引數更少計算更為高效,但都比RNN要好)

  • 對於單個句子:使用GRU中間的state作為輸入
  • 對於多個句子:採用GRU在每個句子的最後狀態作為輸入

2,Question Module

  • 這部分與Input Module一樣,就是使用GRU將Question編碼成向量。(不同的是,最後只輸出最後的隱層向量即可,而不需要像Input模組那樣,輸入是句子時,會輸出句長個向量)。
  • q向量除了用於Attention外,還會作為Memory模組GRU的初始隱層狀態。

3,Episodic Memory Module

這部分主要有三部分:注意力機制、記憶更新、多次迭代。

  • Attention Mechanism:注意力機制:這裡使用一個門控函式作為Attention。
    輸入是本時刻的輸入c,前一時刻的記憶m和問題q。首先計算相互之間的相似度作為特徵向量傳入一個兩層的神經網路,最終計算出來的值就是門控函式的值,也就是該輸入與問題之間的相似度。(G是得分函式)
    在這裡插入圖片描述
    在這裡插入圖片描述

在這裡插入圖片描述

  • Memory Update Mechanism:記憶更新:計算出門控函式的值之後,根據其大小對記憶進行更新。更新方法就是GRU算出的記憶乘以門控值,再加上原始記憶乘以1-門控值。
    在這裡插入圖片描述

在這裡插入圖片描述

  • Need for Multiple Episodes:每次迭代關注不同的內容,這樣傳遞推導,檢索不同的資訊。

3,Answer Module

使用GRU最為本模組的模型,根據memory模組最後的輸出向量(將其作為初始隱層狀態),然後輸入使用的是問題和上一時刻的輸出值連線起來(每個時刻都是用q向量)。並使用交叉熵損失函式作為loss進行反向傳播訓練。
在這裡插入圖片描述