<Question Answering over Freebase via Attentive RNN with Similarity Matrix based CNN>閱讀筆記

<Question Answering over Freebase via Attentive RNN with Similarity Matrix based CNN>閱讀筆記

來自專欄 nlp相關論文筆記

來源arxiv.org/pdf/1804.0331

寫在前面

  1. 第一次看KBQA的文章,有什麼不足之處請見諒。
  2. 這是一個只能用在回答single-relation問題的模型,但作者認為這可以用作處理更複雜問題QA模型的基礎,如處理multi-relation問題。
  3. KBQA的主要思想就是問題與在KB中的關係之間進行比較,選出最可能的關係就得到了結果。作者用了兩種比較方法來得出P和r的相關性,一種是semantic-level matching基於attentive RNN,一種是literal-level matching基於CNN,於是這個模型就叫attentive recurrent neural network with similarity matrix based convolutional neural network (AR-SMCNN) model。
  4. 一個trick就是作者把KB中的relation分成了兩部分分別訓練embedding,舉個例子,relation <film.film.language>,film.film表示了subject的類型,language則表示了subject和answer的關係。

Background

知識庫KB包含了大量知識,KBQA的作用就是可以讓用戶用自然語言查詢知識庫獲取知識,目前大部分的KBQA模型都屬於所謂的encoder-compare framework,即把問題和KB facts都投射到同一個embedding space,然後計算它們之間的相似度。

Task Definition

KB的一個三元組(subject, relation, object),簡寫為(s, r, o)描述了一個fact,而KBQA的任務就是給定一個問題,預測(s,r),只要s,r都預測對了,就可以直接得到answer,即o。根據這些推斷,KBQA問題可以分成以下兩個步驟:

  1. 給定問題Q,找出entity mention X,然後在KB中找到所有與X一致的實體,組成實體集合E,則E中所有實體都有相同的實體名。
  2. KB中所有與E中實體相連的關係組成關係集合R,先把問題Q中的X用<e>替換得到question pattern P,然後把P與R中所有關係進行比對並打分,score最高的就視為最終結果。

Model

模型總的可以分為兩部分Entity Detection和Relation Detection,先直接上圖

作者把QA問題分成兩步:

  1. 抽取問題的topic,也就是KB三元組的subject
  2. 預測最能描述subject和answer的relation

Entity Detection

找出問題中的entity,模塊就是一個經典的序列標準NER模型,由一個bi-LSTM網路實現,把相鄰的輸出為positive的單詞連起來形成一個substring S,若有多個則取其中最長的一個,然後再找出KB中與S相關的實體集合。

Relation Detection

這個模塊的任務就是找出關係集合R中與P最配對的關係,即

像前面說的那樣,這個模塊由semantic-level和Literal-level組成,整體結構如下:

Semantic-level

這個模塊是為了抽取問題和關係之間的semantic-level matching。對於R中的每個relation,作者都如前文所說的那樣將其分為兩部分分別訓練embedding,得到兩個向量 r_1,r_2

而P的embedding則由其對應的word embedding經過一個bi-GRU網路得到 Η_{1:??} = [?_1;?;?_??] ,然後通過一個attention layer得到對應的question pattern representation p_i ,具體計算公式如下, ?? ∈ {1, 2},

得到P和r的表示之後,就直接相互點乘來得到它們的相似度

為什麼用點乘呢?因為其它的什麼cosine, bilinear, Manhattan distance的效果都不比直接點乘好,並且還慢。

Literal-level

作者發現在問題或關係的描述中,有些詞有不同的表達方式或順序,而encoder-compare model並不能獲取這些信息,所以作者又從文本匹配的角度來解決P和R的相關性問題。

先是生成一個Similarity matrix M,直接上圖最直觀

在這裡用的cosine來獲取M,原因估計跟上面一樣吧。拿到M之後就把它視為一個二維圖像,上CNN, r_k 表示第k個卷積核的大小。

最後用一個雙向max-pooling層,雙向的意思就是分別從feature map的長和寬兩個方向進行最大池化,兩個池化核的尺寸分別是 1 × ??_1 ,??_2 × 1

最後來個MLP收尾

最後的最後,把4個z結合起來獲取最後的score

loss function也是一個經典的margin loss

以上。

推薦閱讀:

極市分享|機器視覺技術在智能檢測產品研發過程中的應用研究
1-2 Welcome
EdX-Columbia機器學習課第10講筆記:核方法與高斯過程
從零開始實現Kmeans聚類演算法
Hulu機器學習問題與解答系列 | 第七彈:非監督學習演算法與評估

TAG:自然語言處理 | 深度學習DeepLearning | 機器學習 |