DCN-動態共同attention網絡
兩種模型都是類似的,不像前一篇文章介紹的soft attention機制,只是考慮query到context的attention
這裏兩篇論文都會考慮
query 到 context 和 context到query的attention
然後得到的attention回和原始的encoder向量進行作用,得到修正後的query和context的修正矩陣
然後這些修正後的矩陣和原始的encoder矩陣結合,進入到下面一層的模型預測層。
首先介紹的是coattebtion機制
DYNAMIC COATTENTION NETWORKS
https://arxiv.org/pdf/1611.01604.pdf
標籤:相關性矩陣,互爲attention,coattention
迭代,HMN,MLP
短文本效果佳
模型

上圖是一個簡單的圖形,question 和 文本經過encoder之後,得到的向量經過 coattention機制在進行encoder,然後decoder得到結果
Passage AND QUESTION ENCODER
對文本passage 和question分別獨立進行encoder
l 是LSTMcell的隱藏層大小,p和q分別是文本passage 和 問題question的長度
然後每個向量後面加上一個特殊的向量,作爲模型的識別,得到
然後qustion經過一層非線性的網絡,得到最終的encoder矩陣:
coattention encoder
首先計算一個相關性矩陣:
然後利用相關性矩陣,可以計算passage裏面的每一個詞和question的attention分數
以及question裏面每一個詞和passage裏面每一個詞的attention分數
這兩個都是相互的attention score,權重score需要和原始的矩陣機型相乘計算。
我們對文本passage 進行summary,然後經過attention後得到question的修正向量矩陣:
然後我們利用question矩陣
這裏的
最後一步:
利用passage的原始encoder信息
得到
整體的算法我們可以看

很清晰的總結了encoder線路
DYNAMIC POINTING DECODER
目的是預測答案在原始passage裏面的start index 和 end index
之前講的方式有個確定就是,答案可能有很多種方式,所以直接利用softmax或者序列模型,可能陷入局部解
這裏對利用序列模型進行修正,增加適當的迭代,使得它能夠跳出局部解
假設我們的迭代是基於LSTM:
其中
下面我們介紹
計算
start 和end的預估是獨立的。
其中
Highway Maxout Netword計算的,它們的計算方式一致,但不共享參數
其中
然後
這樣的方式我們可以得到

實驗

迭代的效果:

看這兩個case,從上到下是迭代的過程,我們可以看到,剛開始迭代,和迭代幾步後它們的結果是不一樣的,
比如第一個case,第一步的迭代是從第5個詞開始,第22個詞介紹;到第3步,start=21,end=22,這個正是我們的正確結果。
不同類型問題的效果
文本的長度:
在長文本上面表現不佳
question type:

when 最好,因爲簡單,
why 最差,因爲複雜
Bi-Attention
BI-DIRECTIONAL ATTENTION FLOW FOR MACHINE COMPREHENSION
標籤:相關性矩陣,bi-attention
迭代,softmax,MLP
模型

1. 底層 embedding 和 encoder機制基本一致:
不同的是這裏加了 Charactor的 embedding
2. Attention 層
Attention Flow Layer
和Coattention的做法類似,也要先計算一個相關性矩陣
在Coattention中
這裏構造的相似性矩陣稍微複雜點:
這種
就是先將p,q,p和q逐個元素點乘的向量concatenation,然後乘以權重矩陣 w
下面計算 Bi-attention:
一. passage context 到 query的attention
作用:修正query encoder向量,每一個query的向量是context裏面每一個詞對query向量作用後的加權和
- 計算context到query的attention
Ap=softmax(L)∈R[p,q] - 每一個contxt裏面term的對於query權重係數
at=Apt: - 每一個詞的權重分別和query向量做元素相乘之後,把所有詞的結果向量相加,得到最終的query修正矩陣
Hqt:^=∑jatjHq:j
簡單說就是,利用每個詞讀query的影響,整體修正query向量
二. query 到passage context的attention
- 計算 query對context裏面每個詞的 attention
b=softmax(maxcol(L))∈R[p]
maxcol 是矩陣列裏面最大的元素 - 利用attention對原始的context的每個詞進行修正,進行權重和後得到一個向量
ĥ =∑tbtHpt:∈R[d] - 然後直接對這個d維的向量複製q次,得到和query shape一致的矩陣
Hp^=tileq(ĥ )
三. 對bi-attention向量進行統一處理
包含的信息:原始context encoder信息,用context to query attention修正後的query信息,用query to context attention修正後的context信息
本質上來說都是類似的機制
3. Modeling Layer
上衣層輸出的是一個矩陣G
可以將G通過兩層的bi-Lstm,得到ouput 舉證 M
4. Output Layer
利用獨立的softmax來預測start 和end index
然後total loss
至於start 和end是否要獨立建模就不在這裏複述
實驗結果

整體看來效果要稍微比coattention好點