論文筆記 - Making Neural QA as Simple as Possible but not Simpler
來自專欄徐阿衡-自然語言處理
閱讀理解系列的框架很多大同小異,但這篇 paper 真心覺得精彩,雖然並不是最新最 state-of-art~
現在大多數的閱讀理解系統都是 top-down 的形式構建的,也就是說一開始就提出了一個很複雜的結構(一般經典的就是 emedding-, encoding-, interaction-, answer-layer),然後通過 ablation study,不斷的減少一些模塊配置來驗證想法,大多數的創新點都在 interaction 層。而這篇 paper 提供了抽取式 QA 基於神經網路的兩個 baseline,BoW- 和 RNN-based nerual QA (FastQA) ,創新的以 bottom-up 的方式分析了框架複雜性以及主流 interaction layer 的作用。
一個基本認識,構建好的 QA 系統必不可少的兩個要素是:
- 在處理 context 時對 question words 的意識
- 有一個超越簡單的 bag-of-words modeling 的函數,像是 RNN
另外,作者還發現了很多看似複雜的問題其實通過簡單的 context/type matching heruistic 就可以解出來了,過程是選擇滿足條件的 answer spans:
- 與 question 對應的 answer type 匹配
比如說問 when 就回答 time
- 與重要的 question words 位置上臨近如下圖的 St. Kazimierz Church
A BoW Neural QA System
比照傳統思路來構建。
1. Embedding
詞向量和字向量的拼接,字向量用 CNN 進行訓練,2. Type matching
抽取 question words 得到 lexical answer type(LAT)。抽哪些?- who, when, why, how, how many, etc.
- what, which 後面的第一個名詞短語,如 what year did…
將 LAT 的第一個和最後一個單詞的 embedding,以及 LAT 所有單詞的平均的 embedding 拼接起來,再通過全連接層和 tanh 做一個非線性變換得到 。
用同樣方法對每個 potential answer span(s, e) 做編碼。所有 span,最長為 10 個單詞,同樣把 span 里第一個和最後一個單詞的 embedding 和所有單詞的 embedding 進行拼接,又因為 potential answer span 周圍的單詞會對 answer span type 提供線索(比如上文提到的 St. Kazimierz Church),所以額外的拼接了 span 往左、往右 5 個單詞的平均 embedding,這樣一共就是 5 個 embedding,接 FC 層和 tanh 非線性變換,得到
最後,拼接 LAT 和 span 的表示,,用一個前饋網路計算每個 span(s,e) 和 LAT 的分數3. Context Matching
引入兩個 word-in-question 特徵,對 context 中的每個單詞- binary ,如果 出現在了 question 中,就為 1,否則為 0
- weighted計算 和 的詞向量相似性
Softmax 保證了 infrequent occurrences of words are weighted more heavily.
對每個 answer span(s,e),計算往左、往右 5/10/20 token-windows 內 和 的平均分數,也就是計算 2(kind of features) 3(windows) 2(left/right)=12個分數的加權和得到 context-matching score ,各分數的權重由訓練得到4. Answer span scoring
最後每個 span(s,e) 的分數就是 type matching score 和 context matching score 的和
最小化 softmax-cross-entropy loss 進行訓練。
FastQA
上面的方法中語義特徵完全被縮減成了 answer-type 和 word-in-question features,另外 answer span 也受到了長度限制,對語義的捕捉很弱。
BiRNN 在識別 NER 上面非常有優勢,context matching 也可以通過給 BiRNN 喂 wiq-features 得到,answer-type 會間接由網路學習得到。
模型相對簡單,就三層 embedding-, encoding-, answer layer。
1. Embedding
和 BoW baseline 相同。2. Encoding
為了讓 question 和 context embedding 可以交互,先映射到 n 維向量,再過一個 highway layer。
然後加上 wiq features
再一起過一個 BiRNN,輸出再做個 projection
初始化 project matrix B 為 , 是 n 維的 identity matrix,H 是 forawrd 和 backward LSTM 的輸出的加和。
question 和 context 的參數共享,question 對應的兩個 wiq 特徵設為 1。projection matrix B 不共享。3. Answer layer
context xquestion q
對 Z 做一個變換,同樣是 context-independentanswer 的開始位置的概率 由 2 個前饋網路加一個 ReLU 激活得到。
結束位置:
最小化 p(s,e) 的交叉熵來訓練。
在預測的時候,可以用 beam-search。
FastQA Extended
相當於主流模型的 interaction layer。對當前的 context state,考慮和剩下的 context(intra)或者和 question(inter)做注意力計算,將其餘 context/question 的信息融入當前 context。
- Intra-fustionbetween passages of the context
- Inter-fusionbetween question and context
實驗結果:
一些小結論:
- 簡單的 特徵能大幅度提升 performance,原因是讓 encoder 有了真實 question 的部分知識後,encoder 就可以有選擇性的追蹤問題相關的信息並進一步將具體的實體抽象為對應的類型,如果在問題中提到了人名,那麼 context encoder 就會記住 「question-person」 而不是具體名字。
- Beam-search 可以微弱提升結果,因為最可能的開始位置不一定是最好的 answer span
- 額外的 character embedding 對結果有顯著提升
- 進一步的 fusion 對結果也有幫助,但並沒有那麼顯著
討論 Do we need additional interaction?
對比試驗,FastQA 與 FastQAExt 和 DCN 相比,快兩倍,而且少 2-4 倍的顯存。分析了結果發現 FastQAExt 泛化能力更強些,但並沒有 systematic advantage,並不會對某類問題(主要分析了推理)有一致性的提升。Qualitative Analysis
對 FastQA 的錯誤結果進行了一些分析,大部分的錯誤來自:
- 缺乏對句法結構的理解
- 不同詞位相似語義的詞的細粒度語義之間的區分
其他很多的錯誤也是來自人工標註偏好。
舉了一些典型的錯誤例子,像 例1 是缺乏對某些答案類型的細化理解。例2 缺乏指代消解和上下文縮略語的認識,例3 模型有時難以捕捉基本的句法結構,尤其是對於重要的分隔符如標點符號和連詞被忽略的嵌套句子
現有 top-down 模型用到實際業務當中通常需要為了 fit 進顯存或者是滿足一定的響應時間而進行模型的各種簡化,FastQA 在顯存佔用和響應速度上有著絕對優勢,感覺還是非常有意義的~
博客: www.shuang0420.com
公眾號: xu_a_heng推薦閱讀:
TAG:自然語言處理 | 深度學習DeepLearning | bot聊天機器人 |