1. 程式人生 > >揭開知識庫問答KB-QA的面紗7·深度學習下篇(二)

揭開知識庫問答KB-QA的面紗7·深度學習下篇(二)

文章Question Answering over Knowledge Base with Neural Attention Combining Global Knowledge Information由中科院自動化所劉康老師等人在2016年發表在arxiv上,是一篇相對較新的文章。該文章和我在深度學習上篇分享的文章類似,也是使用深度學習對向量建模方法進行提升,不同於之前使用CNN提取問句特徵,而該文章使用雙向LSTM並結合問題引入注意力機制提取問句特徵,在WebQuestion上取得了42.6的F1-Score,擊敗了之前的Multi-Column CNN。

深度學習提升向量建模方法的大體框架都很接近:根據問題確定主題詞,根據主題詞確定候選答案,通過候選答案和問題的分散式表達相似度得分確定最終答案。而方法的核心在於學習問題和候選答案的分散式表達,其實相關的方法都是在這兩個部分做文章。這篇文章的想法在於,對於不同的答案,我們關注問題的焦點是不同的,我們根據候選答案的資訊,來引入注意力機制,對同一個問題提取出不同的分散式表達。

比如 對於問題 "who is the president of France?",其中之一的答案是實體“Francois Holland”,我們通過知識庫可以知道Francois Holland 是一個總統,因此我們會更加關注問句中的 “president” “France” 單詞,而根據Francois Holland的型別person,我們會更關注問句中的疑問詞who

(如果你之前沒有接觸過注意力機制也沒有關係,可以直接往下看,也可以看看關於注意力機制最經典的文章,Yoshua Bengio等人在2015年ICLR發表的Neural Machine Translation by Jointly Learning to Align and Translate

,該文章提出的encoder-decoder with attention mechanism模型幾乎可以橫掃大部分的NLP問題

該方法的整體框架如下圖所示:

具體來說,可分為以下三個步驟:

1.將候選答案轉化為分散式表達

我們從多個方面考慮答案的特徵:答案實體、答案上下文環境(知識庫中所有與答案實體直接相連的實體)、答案關係(答案與問題主題詞之間的實體關係)、答案型別。每一種特徵都可以用v_k維的multi-hot向量表示,v_k即知識庫實體和實體關係的數量之和。我們通過Embedding矩陣E_k將每一種特徵轉化為低維的分散式表達,我們就得到了四種關於答案的分散式表達e_e,e_c,e_r,e_t(其中由於答案上下文環境涉及的實體較多,我們取這些實體的embedding均值作為上下文環境的embedding)。

2.將自然語言問題轉化為分散式表達

將問句中的每一個單詞經過Embedding矩陣E_w轉化成word-embedding,使用雙向LSTM(bi-LSTM)提取問句特徵。bi-LSTM第j時刻的輸出記作h_j,使用bi-LSTM的好處在於h_j既包含了第j個單詞之前的資訊,又包含了該單詞之後的資訊。

3.在得分函式中引入注意力機制

我們希望我們問句的分散式表達對於四種不同的答案特徵有不同的表達(根據答案的特徵對於問題有不同的關注點),第i種答案的分散式表達e_i 對應的問句分散式表達記作q_i,我們的得分函式定義為四種對應表達的點乘之和,即: