Dosudo deep learning newsletter #3
Editor: Howard Lo
Resources: FB post Paper Github
在 Natural Language Processing (NLP) 的研究領域中,其中一項相當熱門的研究就是 Question Answering (QA),而在今年的 NLP 頂尖國際會議 ACL 2017,Facebook AI Research 公佈了他們目前 QA 最新的研究 “Reading Wikipedia to Answer Open-Domain Question”,除此之外還開源了程式碼 DrQA 供大家使用,從結果中看起來還滿不錯的,讓我們就來看看他們是怎麼做的吧!
如論文標題,給定一個由自然語言描述的 open-domain 的問題,機器要能夠在大量 documents 中找出對應 question 的 answer,作者將這種任務描述為 “Machine Reading at Scale”。系統架構如上圖,DrQA 主要有兩個 components,一個是 “Document Retriever”,用來找出與問題相關的 documents;另一個是 “Document Reader”,從 retriver 給的 documents 中找出問題的答案。
首先,Document Retriever 會將 question 以及 document 都使用 hashed bigram counts 來表示成 feature vector, 並且基於這個 feature vector 從大量 documents 中把 5 個跟 question 相近的 documents 給挑出來,之後再交給 Document Reader 從中找出問題的答案,此部分主要是希望能夠減少處理大量 text 的時間。再來是 Document Reader 的部分,作者使用 multi-layer bidirectional LSTM 將 document 中每一個 paragraph 中的每個字 encode 成一個 vector (在每個字輸入給 LSTM 之前,會先轉換成 feature vector,在下面會詳述),而 question 也會被另一個 LSTM 給 encode 成一個 vector。最後分別訓練兩個 classifers,input 為 paragraph vector 以及 question vector,兩個 classifers 的 outputs 分別為答案出現在 text 中的起始位置以及結束位置的機率,並且在訓練時去 maximize 兩個機率的 product。
這邊我們稍微解釋一下 paragraph encoding 跟 question encoding 怎麼做,作者使用 pretrained word embedding 將每個字轉成 300 維的 vector (他們是使用 GloVe),並且還特別 fine-tuned 前1000 個出現次數最多的字。這個技巧在許多 NLP + Machine Learning 相關的 tasks 中都會常常見到,大部分也都能有效能上的提升,依照作者的解釋,他們認為許多關鍵字如 “what”, “how”, “which” 這些常見字等基於 QA corpus 再去做 fine-tuned 會有更好的 representation,再來還有許多至為關鍵的 hand-craft features,像是 paragraph 中的字有沒有出現在 question 中、每個字的 POS (Part-Of-Speech)、NER (Name Entity Recognition)、 normalized TF weight 以及 aligned question embedding 等等,最後將每個字轉成上述所談到的 feature vector 後再當作 LSTM 的 input 做對每個 word feature vector 再做一次 encoding。
由於有些 datasets 只是 question-answer pair,而沒有伴隨著 document,因此作者也使用 distant supervision 的方式來產生對應 question-answer pair 的 documents 作為訓練資料,更多詳細的部分就請有興趣的讀者去看他們的 paper 囉!