<Question Answering over Freebase via Attentive RNN with Similarity Matrix based CNN>閱讀筆記
來自專欄 nlp相關論文筆記
來源:https://arxiv.org/pdf/1804.03317.pdf
寫在前面:
- 第一次看KBQA的文章,有什麼不足之處請見諒。
- 這是一個只能用在回答single-relation問題的模型,但作者認為這可以用作處理更複雜問題QA模型的基礎,如處理multi-relation問題。
- 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。
- 一個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問題可以分成以下兩個步驟:
- 給定問題Q,找出entity mention X,然後在KB中找到所有與X一致的實體,組成實體集合E,則E中所有實體都有相同的實體名。
- KB中所有與E中實體相連的關係組成關係集合R,先把問題Q中的X用<e>替換得到question pattern P,然後把P與R中所有關係進行比對並打分,score最高的就視為最終結果。
Model
模型總的可以分為兩部分Entity Detection和Relation Detection,先直接上圖
作者把QA問題分成兩步:
- 抽取問題的topic,也就是KB三元組的subject
- 預測最能描述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,得到兩個向量 。
而P的embedding則由其對應的word embedding經過一個bi-GRU網路得到 ,然後通過一個attention layer得到對應的question pattern representation ,具體計算公式如下,
得到P和r的表示之後,就直接相互點乘來得到它們的相似度
為什麼用點乘呢?因為其它的什麼cosine, bilinear, Manhattan distance的效果都不比直接點乘好,並且還慢。
Literal-level
作者發現在問題或關係的描述中,有些詞有不同的表達方式或順序,而encoder-compare model並不能獲取這些信息,所以作者又從文本匹配的角度來解決P和R的相關性問題。
先是生成一個Similarity matrix M,直接上圖最直觀
在這裡用的cosine來獲取M,原因估計跟上面一樣吧。拿到M之後就把它視為一個二維圖像,上CNN, 表示第k個卷積核的大小。
最後用一個雙向max-pooling層,雙向的意思就是分別從feature map的長和寬兩個方向進行最大池化,兩個池化核的尺寸分別是
最後來個MLP收尾
最後的最後,把4個z結合起來獲取最後的score
loss function也是一個經典的margin loss
以上。
推薦閱讀:
※極市分享|機器視覺技術在智能檢測產品研發過程中的應用研究
※1-2 Welcome
※EdX-Columbia機器學習課第10講筆記:核方法與高斯過程
※從零開始實現Kmeans聚類演算法
※Hulu機器學習問題與解答系列 | 第七彈:非監督學習演算法與評估
TAG:自然語言處理 | 深度學習DeepLearning | 機器學習 |