機器是如何做閱讀理解的?
機器閱讀理解
斯坦福有個很重要的比賽,就是讓機器完成閱讀理解題目,即給定一篇文章,讓機器理解文章含義進行題目回復。每年這一比賽都是國際性的,引來了業界、學術界的廣泛關注。其中微軟、谷歌、騰訊、阿里等大型互聯網公司每年都有參與。本文將從技術的角度,深入淺出、以口語性質的方式給大家傳遞機器進行閱讀理解的過程。
SQuAD比賽簡介
SQuAD全稱是"Stanford Question Answering Dataset",是用於機器閱讀理解的一款數據集,也是斯坦福大學主辦的機器閱讀理解比賽。目前該數據集,有500+篇文章,總共有100000+組QA對數據。參賽隊伍的目標是,理解文章、得到問題的回復結果。答案正確與否的主要評價指標有兩個:EM值和F1值,直觀理解為EM值表示答案與正確答案是否完全匹配,F1值表示答案之間的重合度。18年最新的比賽排行如下:
目前科大訊飛的哈工大聯合實驗室排名第一,谷歌大腦並聯,阿里巴巴和微軟名次緊跟其後。
特定模型說明
本文將要介紹的是排名第三的國防科大與復旦大學的模型。論文在17年發表[1]。該文章大致將機器做閱讀理解的過程分為三個步驟:第一:就是機器通讀一遍全文,即對article進行序列編碼;第二:就是機器帶著問題再讀文章,也就是機器帶著Question的編碼,再從頭對article進行閱讀,即Question與article進行交互;第三:就是機器找尋答案,通過帶著問題讀文章以後,緊接著就是在文章中找尋能夠回答問題的答案了。模型結構如下:
encoder
編碼,也就是將文本信息轉換為機器能夠理解的信息。目前對article編碼的主要模型是Bi-LSTM模型,即獲取文章的序列信息。選取的特徵一般為 word-embedding和character-level embedding進行拼接,再添加一下額外的特徵,例如詞性、實體等。分別對文章和問題進行編碼。
Interaction
Interaction就是交互的意思,也就是帶著問題去讀文章。可以看到圖中模型的交互方式,是計算問題與文章各個詞語和各個子序列之間的相關性矩陣,並通過該矩陣求Attention獲取不同詞層面的問題表達。再使用SFU模塊將問題信息與篇章信息進行混合。圖中有一個self-align模塊,是因為篇章信息太長了,需要弄清楚篇章前後之間的關係。然後反覆迭代Iterative過程就是讓 機器反覆去讀文章。
Pointer
讀完文章後最關鍵的還是去尋找答案。Pointer Network的作用就是去文章尋找答案的過程。該模型引入了Memory,可以理解為讓模型記憶一下你找到問題答案的起始位置,然後再去尋找問題答案的結束位置,Memory就是記憶位置,便於計算已知起始位置尋找結束位置的條件概率。
目前用於機器閱讀理解的深度學習框架很是單一,一般就是不斷的Attention,再加上不斷的迭代,去尋找答案。目前這種基於數據的閱讀理解很受限制,感覺還是要跳出深度學習框架,才能真正地去做好理解。認知智能是一個很漫長的過程,還有待進一步的發展。
參考文獻
[1]Hu M, Peng Y, Qiu X. Reinforced Mnemonic Reader for Machine Comprehension[J]. 2017.
TAG:CodeInHand |