機器閱讀理解(MRC)在編碼層得到了文章和問題中單詞的語義向量表示,但兩部分的編碼是基本獨立的。爲了得到最終答案,模型須要交互處理文章和問題中的信息。所以,模型在交互層將文章和問題的語義信息融合,基於對問題的理解分析文章,基於對文章對理解分析問題,從而達到更深層次的理解。
然而,在交互層基本使用的都是各類各樣的attention機制,所以在這裏詳細介紹一下。網絡
閱讀理解的互注意力通常用來計算從文章到問題的注意力向量。
使用互注意力機制經過注意力函數對向量組對全部向量打分。通常而言,注意力函數須要反映pi 和每一個向量qj的類似度。常見的注意力函數有如下幾個:函數
固然最後得到qi的分數之後,使用softmax進行歸一化而後獲得各自的權重,再進行加權和,獲得最後的attention結果:
Attention((p1,p2...pm),(q1,q2...qn))=(p1q,p2q...pmq)優化
關於self-attention的部分能夠看前面筆者關於self-attention詳細計算的一篇文章。編碼
在這裏介紹幾篇經典的MRC論文所使用的attention機制spa
用 C 和 Q 分別表示編碼後的 Context 和 Question,根據二維匹配模型,首先計算出 C 和 Q 的類似矩陣 𝑆,而後對其進行 Softmax 行歸一化,獲得 Context 中每一個詞對 Question 全部詞的注意力分數,再將歸一化後的矩陣S ̅對問題表徵 Q 進行加權,從而獲得問題的context-to-query attention表徵:.net
類似度矩陣 𝑆 進行列歸一化,獲得 Question 的每一個詞對 Context 全部詞的注意力分數 S ̿ ,則 query-to-context attention 表徵爲:orm
在本文中做者認爲,閱讀理解的核心思路就是對文章和問題進行融合,並經過融合從文章中獲取答案。這些網絡的信息融合方式能夠如圖中所示,分爲如下幾類:blog
(1) 單詞級融合。提供了單詞的直接信息,可以快速地聚焦關注的區域,例如簡單地爲每一個單詞附加一位,標註該單詞是否出如今問題中。這種作法基本上是相似手工特徵。rem
(2) 高層融合。好比,通過了LSTM的編碼,這種特徵再參與與文章的判斷(通常經過注意力機制)。但高層信息可能會丟失一部分細節。get
(2’) 可選的高層融合 。和(1)差很少,但添加的是通過編碼的高層信息,直接與Context的Embedding進行拼接。
(3) 自加強融合。信息與自身進行聚合(Transformer是一個典型例子),被認爲這樣能夠對更長的信息進行關聯。通常能夠在(2)以後進行這一步驟,能夠擴展關注問題(question-aware)的感覺野。
(3’) 可選的自加強融合。與上文中DCN提到的協同注意力機制和BiDAF中的機制同樣,經過先對問題Q進行自加強融合,再將問題Q與文章進行高層融合。
論文地址:https://arxiv.org/abs/1612.05360
DCN是全稱dynamic coattention networks,動態協同注意力網絡。它的具體作法如圖:(引用於
https://blog.csdn.net/mottled...)
論文地址:https://arxiv.org/abs/1711.00106