概述
本文提出了門機制和自比對注意力機制。
門機制:
原先的做法是将得到的問題注意力向量和文本編碼直接送入到RNN中得到新的融入問題的文本表示。
但是考慮到文本中的每個詞對于問題是有不同的重要程度的,引入了一個門機制,根據與問題的相關程度給文本每個詞賦于不同的權重。然後把問題注意力向量和賦予權重後的文本表示送入RNN中得到新的融入問題的文本表示。
自比對注意力機制:self-attention和gate機制的融合
對融入問題的新文本表示進行self-attention,加強文本内部之間的聯系,并同理運用門機制,最終得到文本表示hp
論文的連結
Gated Self-Matching Networks for Reading Comprehension and Question Answering
模型
1.問題和文本的編碼
對輸入的文本和問題分别進行單詞級别的embedding(ep和eq)和字元級别的embedding(cp和cq),然後再将兩部分拼接,送入到雙向GRU中,得到文本和問題的編碼表示Up和Uq
【注】對于使用字元級别的embedding是因為對于未登入詞的表示有好處(也就是資料集中無法表示的詞UNK)
2.門注意力網絡
通過注意力機制,我們可以得到融入問題的文本表示,并提出了通過門機制,來确定文本中每個詞對于問題的重要程度。
計算注意力向量,計算文本編碼和問題編碼的相似度矩陣,然後softmax得到文本中的每個詞基于問題中每個詞的權重,最後和問題編碼進行權重和,得到注意力向量Ct
之前:
第一種做法:
直接将得到的注意力向量Ct和前一時刻得到的融入問題的文本表示Vt-1送入到RNN 中得到下一時刻融入問題的新文本表示Vt
第二種做法:match-lstm
将得到的注意力向量Ct和文本編碼Ut拼接,然後和前一時刻得到的含有問題的文本表示Vt-1一起送入到RNN中,得到下一時刻融入問題的新文本表示Vt
本文的做法:引入了門機制gt
在RNN的輸入[Ut,Ct]上進行處理,加了門機制,是認為文本中隻有部分詞和問題是相關的。計算文本編碼和注意力向量的相關性打分gt,然後再将gt和[Ut,Ct]相乘得到[Ut,Ct]*
然後再将[Ut,Ct]*送入到RNN中得到新文本表示
這一步是考慮文本和問題之間的注意力
3.自比對注意力機制
對新文本表示Vp做了一步self-attention,與自身比對,增強文本内部之間的聯系,加強了上下文的關系,同時也用了門機制,過濾文本中的不重要的資訊
s是新文本和新文本之間每個詞的相似度矩陣,然後做soft max得到對應的權重,然後再和新文本做權重求和得到注意力向量
引入門機制
将得到的注意力向量Ct和文本編碼Vt拼接,然後和前一時刻的隐藏層ht-1一起送入到RNN中,得到下一時刻的輸出ht
這一步是考慮文本和文本之間的注意力
4.輸出層
使用指針網絡去預測答案的開始和結束位置。根據給定的ht,利用注意力機制當作指針,在段落中選擇答案開始和結束的位置。
這一步是考慮做文章與答案之間的attention,哪些詞與答案最接近,他就最有可能是答案
将rQ作為初始狀态向量, 計算方式如下:
此處的ht−1 表示答案循環網絡(指針網絡)的最後隐藏狀态,也就是答案上一個單詞的隐藏狀态。計算文本和答案上一個單詞的相似度,soft Max得到權重,取權重中最大的機率作為答案的位置。
得到答案的起始和結束的機率。訓練網絡,通過預測分布最小化真值起始位置和終止位置的負對數機率之和。
實驗
實驗細節
- 使用CoreNLP分詞
- 使用的GRU神經網絡
- 使用的Glove來獲得詞向量
- 使用零向量表示未登陸詞
- 1層GRU來表示字元級别的向量
- 3層GRU來編碼問題和文本
- 隐藏層的長度設定75
- dropout為0.2
- AdaDelta優化器
實驗結果
結論
門控注意力網絡層,利用attention機制,用于使文章中的每個詞包含問題的資訊,獲得豐富的表征。
自比對注意力層,利用attention機制,使得每個文章詞對文章本身更加了解,解決biRNN得缺陷,獲得語義更加豐富的表征。
答案指針層,使用attention機制,确定答案的起始位置和終止位置,預測我們的答案。