機器閱讀理解Match-LSTM模型

funnyok發表於2021-09-09
0 基於SQuAD資料集的通用模型架構

由於 SQuAD 的答案限定於來自原文,模型只需要判斷原文中哪些詞是答案即可,因此是一種抽取式的 QA 任務而不是生成式任務。幾乎所有做 SQuAD 的模型都可以概括為同一種框架:Embed 層,Encode 層,Interaction 層和 Answer 層。Embed 層負責將原文和問題中的 tokens 對映為向量表示;Encode 層主要使用 RNN 來對原文和問題進行編碼,這樣編碼後每個 token 的向量表示就蘊含了上下文的語義資訊;Interaction 層是大多數研究工作聚焦的重點,該層主要負責捕捉問題和原文之間的互動關係,並輸出編碼了問題語義資訊的原文表示,即 query-aware 的原文表示;最後 Answer 層則基於 query-aware 的原文表示來預測答案範圍。圖1展示了一個高層的神經 QA 系統基本框架。

圖片描述

圖1 一個高層的神經 QA 系統基本框架

1 Match-LSTM模型架構

圖2展示了Match-LSTM模型架構圖。

圖片描述

圖2 Match-LSTM模型架構圖

在模型實現上,Match-LSTM 的主要步驟如下:

  1. Embed 層使用詞向量表示原文和問題
  2. Encode 層使用單向 LSTM 編碼原文和問題 embedding;
  3. Interaction層對原文中每個詞,計算其關於問題的注意力分佈,並使用該注意力分佈彙總問題表示,將原文該詞表示和對應問題表示輸入另一個 LSTM編碼,得到該詞的 query-aware 表示
  4. 在反方向重複步驟 2,獲得雙向 query-aware 表示;
  5. Answer 層基於雙向 query-aware 表示使用 Sequence Model 或 Boundary Model預測答案範圍

Match-LSTM模型的輸入由兩部分組成:段落(passage)和問題(question)。passage使用一個矩陣P[d * P]表示,其中d表示詞向量維度大小,P表示passage中tokens的個數;question使用矩陣Q[d * Q]表示,其中Q表示question中tokens的個數。

Match-LSTM模型的輸出即問題的答案有兩種表示方法,其一是使用一系列整數陣列a = (a1, a2,…),其中ai[1, P]中的一個整數,表示在段落中某個token具體的位置,這裡的整數陣列不一定是連續的,對應Sequence Model ;第二種表示方法是假設答案是段落中一段連續的token組合,即僅使用兩個整數來表示答案a = (as, ae)as表示答案在段落中開始的位置,ae則表示結束位置,asae[1, P]中的整數,對應Boundary Model 。

故對Match-LSTM模型的訓練集樣本來說,其可用下面的三維陣列來表示:

圖片描述

從圖2可知,一個基本的Match-LSTM模型應該包含以下三層結構:

  1. LSTM preprocessing Layer:這層對passage和question進行預處理,得到其向量表示;
  2. Match-LSTM Layer:這層試圖在passage中匹配question;
  3. Answer Pointer(Ans-Ptr) Layer:使用Ptr-Net從passage中選取tokens作為question的answer, Sequence Model 和 Boundary Model的主要區別就在這一層。

LSTM preprocessing Layer

LSTM preprocessing Layer的目的是將token的上下文資訊包含到passage和question中的每個token的向量表示中。分別將passage和question輸入LSTM preprocessing Layer,經過LSTM preprocessing Layer後,passage和question表示如下矩陣:

圖片描述

Hp是passage的向量矩陣表示,其大小為[l * P],l表示隱藏層的節點個數;Hq是question的向量矩陣表示,其大小為[l * Q]

Match-LSTM Layer

將LSTM preprocessing Layer的輸出作為這一層的輸入,計算公式如下:

圖片描述

其中,圖片描述,這些引數都是模型需要訓練的引數,圖片描述是中間結果,圖片描述表示第i-1個token的隱藏層輸出,圖片描述表示在列方向擴充Q列。

對於Gi公式的維度變化:

[l Q] = [l l] [l Q] + ([l l] [l 1] + [l l] [l 1] + [l 1]) |Q|;

對於ai公式的維度變化:

[1 Q] = ([1 l] [l Q] + 1 * |Q|)。

ai表示在passage的第i個token對question的注意力權重向量。

將注意力權重向量與question向量的乘積和passage中第i個token的隱藏層輸出向量拼接成一維向量Zi,公式如下:

圖片描述

其中,向量維度分別為:圖片描述

將向量Zi作為一個LSTM層的輸入,得到

圖片描述

其中,隱藏層向量維度為:圖片描述

P個該隱藏層向量拼接成圖片描述,為了提取上下文資訊,反方向構建圖片描述,將兩者拼接得到Match-LSTM Layer的輸出:圖片描述

Answer Pointer Layer

將Match-LSTM Layer的輸出Hr作為這一層的輸入。

Match-LSTM 的 Answer Pointer Layer 層包含了兩種預測答案的模式,分別為 Sequence Model 和 Boundary Model。Sequence model提供的是一系列答案序列,但這些答案系列不一定在原文中是連續的;Boundary model是提供答案的開始與截止位置,在這兩個位置中間所有的字就都是答案。Sequence Model 將答案看做是一個整陣列成的序列,每個整數表示選中的 token 在原文中的位置,因此模型按順序產生一系列條件機率,每個條件機率表示基於上輪預測的 token 產生的下個 token 的位置機率,最後答案總機率等於所有條件機率的乘積。Boundary Model 簡化了整個預測答案的過程,只預測答案開始和答案結束位置,相比於 Sequence Model 極大地縮小了搜尋答案的空間,最後的實驗也顯示簡化的 Boundary Model 相比於複雜的 Sequence Model 效果更好,因此 Boundary Model 也成為後來的模型用來預測答案範圍的標配。

Sequence Model的答案定位計算公式如下:

圖片描述

k[1, P+1]中某個值,當k=P+1時,表示答案迭代計算答案位置機率結束。

Boundary Model的答案定位計算公式如下:

圖片描述

2 實驗

模型引數設定如下:

  • 隱藏層大小:150
  • 最佳化方法:Adamax(β1 = 0.9,β2 = 0.999)
  • minibatch:30
  • 沒有用L2正則

實驗結果對比如圖3所示:

圖片描述

圖3 各模型實驗對比結果

3 參考文獻

[1] 目前(2017年)機器閱讀技術發展得如何?能達到什麼水平?有哪些應用? [2017-05-22].

[2] Wang S, Jiang J. Machine Comprehension Using Match-LSTM and Answer Pointer[J]. 2016.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3137/viewspace-2799980/,如需轉載,請註明出處,否則將追究法律責任。

相關文章