? ? ? ?這是一篇在谷歌學術上引用度很高的論文,也是在NLP領域直面核心挑戰(zhàn)(閱讀理解,也就是讓機器閱讀,然后能夠回答和閱讀內容相關的問題)的重磅研究和里程碑,所以這篇文章值得我們好好閱讀,這是Karl Moriz Herman等人以谷歌和牛津大學名義聯(lián)合發(fā)表于2015年11月的NIPS。
? ? ? ? 下圖顯示的是截至目前的論文被引用的情況,雖然在計算機科學領域,論文的引用數量很容易上去,但是從2015年11月到現在能夠達到159,也是很少見的。

? ? ? ? 文章認為他們工作的主要貢獻是定義了一種新的方法來解決機器做閱讀理解的瓶頸,并且產生了大規(guī)模監(jiān)督學習的數據。這就為以后制造只需要最小先驗語言結構和知識,基于注意力的深度神經網絡來閱讀文檔和回答復雜問題提供了理論和工程基礎。
? ? ? ?文章開頭照例對于這個領域的研究格局做了調研,發(fā)現目前研究的方向還是詞袋模型(BOW)為核心的信息抽取算法,其能力發(fā)展到閱讀文檔和理解文檔還有相當的路要走,目前進展緩慢。這個可以很容易理解,BOW模型是忽略文法和詞語之間的關聯(lián),布袋裝土豆的詞頻分析法很難談到去理解文檔。因此,要么如同文獻【1】采用手工設定規(guī)則語法去過濾,要么如同文獻【2】使用檢測謂詞參數三元組的信息提取方法,這些信息可以保存在數據庫供后續(xù)閱讀理解的時候查詢。提出了關鍵問題:
這個領域缺乏有效的監(jiān)督學習算法,究其原因是缺乏充足的大訓練集,同時很難構建靈活學習文檔結構的統(tǒng)計模型。
? ? ? ? 雖然已經證明獲取監(jiān)督學習自然語言閱讀理解數據是非常困難的,但是一些如文獻【3】【4】,已經嘗試了生成合成敘述和查詢的方法。這樣就能解決數據不夠的問題,同時方便研究者能夠專注研究某單一算法在仿真場景下的性能。但是,仿真數據總歸是無法模擬真實語言的豐富和復雜程度,還包括噪聲。所以Karl他們尋求一種新的方法產生監(jiān)督學習閱讀理解數據集。也就是直接使用簡單的實體檢測和匿名化算法可以能夠閱讀文檔,把摘要,句子釋義和相關文檔轉化為上下文-查詢-答案三元組生成語料庫。他們通過這個方法生成了兩個包含從CNN和每日郵報抓取的一百萬新聞報道的語料庫。然后再構建吸收了文獻【4,6,7,8】研究成果的新型深度學習模型使用這兩個語料庫。這樣的模型可以專注在可以幫助回答問題的那一部分文檔,并且可以可視化這個推斷過程。為了證明這種模型優(yōu)越性,Karl他們把這一模型和一系列基于傳統(tǒng)語義幀分析的算法做比較,當然結果是令人滿意的。
? ? ? ? 這么好的模型需要詳細解讀一下。神經網絡模型的解讀重點在于輸入的數據模型和神經網絡架構。讓我們從數據開始說起。這個監(jiān)督學習閱讀理解的數據模型核心是P(a|c,q),就是答案相對于相關上下文和問題的條件概率。這樣才能避免在推斷答案的時候需要先驗知識,而是能夠聚焦到上下文實體之間的關系,也就是上下文-查詢和答案三元組。根據文獻【9】,這一個領域的工作采取無監(jiān)督方法,使用模版或者語法或者語義分析器從文檔中提取關系元組以形成可以查詢的知識圖。文獻【10,11】的啟發(fā),他們通過在線新聞和他們相應的文摘創(chuàng)建了兩個機器閱讀語料庫,包含了CNN的93000篇新聞稿,每日郵報的220000篇報道。這些報道都包含了文章要點或者總結。而且這些總結不是簡單的重復報道文字,而是帶有一定抽象和概括。Karl他們使用文獻【12】研究成果把這些要點文字轉化為Cloze形式問題,也就是一次用一個占位符取代一個實體的方法,這樣就構造了大約一百萬條數據的文檔-查詢-答案三元組語料庫,生成語料庫的代碼可以在github上找到。
? ? ? ? 由此,我們可以看到這篇文章的重心是構建一個無需先驗知識和可以做閱讀理解的語料庫。為了理解這種不同的考量,我們來看以下Cloze形式查詢例子(都是從每日郵報頭條校驗數據集里面產生的):a)高科技胸罩幫助你擊敗乳房X;b)糖精能夠打敗X嗎?c)魚肝油可以防治前列腺X嗎?通過訓練的n-gram模型,很容易推斷X=癌癥,因為這是在語料庫中非常頻繁的被治愈的實體。
為了防止解決方案退化和聚焦任務,我們使用以下匿名過程和隨機化我們的語料庫:a)為每一個數據點在同一個參照系中創(chuàng)建關聯(lián)坐標;b)根據關聯(lián)坐標把所有實體用抽象實體標記替代;c)在數據點加載時,隨機排列實體標記。讓我們關注下面這個例子:

? ? ? ? 顯然,對比原文和被替換實體的版本,人是可以很快得出答案。但是,在匿名版本中,需要上下文來回答問題,如同在原始文本中,需要了解文本內容的人來回答。按照這個流程,正確回答問題的唯一策略就是利用每個問題相關的上下文。因此,我們語料庫有多少相關上下文,那么閱讀理解的能力就有多強。很自然的可以發(fā)現,一個實際應用系統(tǒng)會從所有可用的信息源受益,比如通過語言本身的線索或者共現統(tǒng)計。
? ? ? ? 下表給出了如何度量任務的難度系數,也就是在給定文檔中排名前N個實體標記包含的正確答案的數量。Karl他們并沒有區(qū)分實體標記和常規(guī)單詞,所以這使得任務更難,當然模型也就更一般化。

? ? ? ? 論文在闡述了對于更好需求數據集的理由和評估機器閱讀模型的任務之后,真正的模型出場了。首先,論文定義了兩種簡單基線作為評估閱讀理解的性能,主線(最大詞頻)選取在上下文中被觀察到最多的實體,而排它主線(排它詞頻)選取的是在上下文中被觀察到最多的,同時并不在問題里的實體。這樣做是因為我們相信在一個簡單Cloze形式問題里面,占位標記不太可能被重復提及。
? ? ? ? NLP模型的管道在傳統(tǒng)做法中被用來嘗試回答問題,即大量使用語言注釋,結構化全局知識,語義解析和類似的NLP管道輸出?;谶@些手段,我們定義了一系列基于NLP的模型來完成閱讀文本。
? ? ? ? 框架語義解析嘗試識別謂詞和它相關參數,允許模型訪問“誰對誰做了什么”這樣的信息。自然地,這種注釋有助于問題回答。Karl他們開發(fā)了一個基于文獻【13,14】研究成果的評估器,主要是使用了框架語義注釋來解析我們的模型。他們在未被匿名化的語料庫上廣泛使用解析器。這里使用框架語義解析并沒有顯著的好處,因為它僅僅在解析階段被使用,并不具備一般化語言模型的能力。因此,為達成評估機器理解能力的目的,我們需要從問題q和上下文d中提取實體謂詞三元組(e1,V,e2),然后使用一些帶有增加的召回/精度均衡的規(guī)則來回答問題。這些規(guī)則如下圖:

? ? ? ? 為了清楚起見,論文假設所有的PropBank三元組都具有(e1,V,e2)的形式。在實際應用中,會考慮解析器的參數編號,僅僅比較相似的場景,除非在諸如置換的框架規(guī)則,因為這個時候不注重順序。在一個單一規(guī)則對應多個kneeing的答案的時候,論文只是隨機選擇一個。
? ? ? ? 另一種基線是和詞距有關。論文將Cloze問題的占位符合上下文中每一個實體對齊,并且計算與實體周圍上下文的距離。通過將問題q中每個字到對齊的答案d的最近的字的距離計算得分。這里對齊定義為既可以是直接匹配單詞或者通過共參照系來對齊。論文通過在校驗數據集上的每個單詞的最大懲罰來調優(yōu)。
? ? ? ? 到這里,論文是在解釋如何解析文本。下面真正模型化的是神經網絡。如同論文里面論述的,神經網絡已經廣泛的應用于NLP。文獻【15】和【16】已經提及了這方面的工作,包括文獻【17】提到的通用的翻譯模型。論文設定的神經網絡模型是用來估計在文檔d中回答問題q的單詞類型a的概率,公式如下:

? ? ? ? 這里V是詞典,W(a)是第a行的權重矩陣W,單詞類型a被重用為索引。注意到,論文并不標明實體和變量,模型需要學習從輸入序列中區(qū)分它們。函數g(d,g)是返回文檔和問題元組的一個向量嵌入。如文獻【17】的研究所示,文獻【18】研究的LSTM被認為可以用來作為語言翻譯和語言建模的工具。在用于翻譯的時候,根據文獻【19】,深度LSTM能夠把長文本序列嵌入到一個向量表示,這個向量表示包含足夠信息生成另一種語言的完整翻譯。本文會一個單詞一個單詞的喂給深度LSTM編碼器,然后在分隔符后,將問題喂給編碼器。相似的,他們還嘗試了先把問題喂給編碼器,然后再喂文檔。這樣,編碼器是把文檔-問題組當作一個完整的單一長序列來處理。對于給定嵌入文檔和問題組,網絡會推斷文檔里面的哪一個標記是問題的答案。
? ? ? ? 這個過程看似簡單,實際上包含了很復雜的深度LSTM神經元計算,從輸入層到隱藏層,再到輸出層,詳細的公式如下圖:

? ? ? ? 這里,x(t)是輸入,y(t)是輸出。||是向量拼接算子,h(t,k)是在時間t時候第k隱藏層上的隱藏態(tài),i,f,o代表著相應的輸出,遺忘和輸出門。因此,這個深度LSTM編碼器就是g(d,g)=y(|d| + |q|),也就是在輸入x(t)下,d和q的拼接。
? ? ? ? 深度LSTM為了能夠把問題和答案連接起來,需要在長距離上傳遞依賴。而固定寬度的隱藏向量形成這個信息流的瓶頸。論文使用文獻【6,7】的研究成果來克服這個問題,即引入注意力機制。按照文獻【19】的研究,注意力模型首先使用單獨的雙向單層LSTM來對文檔-問題進行編碼。一個長度為|q|的問題的編碼u可以看成是一個最后前向傳播向量和一個反向傳播輸出向量的拼接。這樣就可以對于在位置t的每一個標記輸出進行計算。一個文檔d的表征r可以看成是它所有輸出向量帶權重的和。這些權重可以解釋成當回答一個問題時候,導向某一特定標記的引導。具體公式如下:

? ? ? ? 這里yd是文檔中標記t集合表征作為其每一列的矩陣。變量s(t)是在標記t的正規(guī)化的注意力。對于給定注意分值,文檔r的嵌入可以用標記嵌入的權重求和來表示。這個模型通過一個非線性組合器聯(lián)合文檔和問題嵌入來定義如下:

? ? ? ? 注意力編碼器可以看成是回答問題的內存網絡應用生成器。模型在使用詞袋模型句子層面上使用注意力機制。而注意力編碼器在標記層面上使用精細注意力機制,這里的標記是給定他們在輸入文檔過去和未來上下文的詞嵌入。注意力編碼器可以聚焦到從問題到答案的路徑。我們可以在問題標記被輸入的時候,讓模型可以重新讀入文檔。對于每一個問題q的標記i,模型計算雙向詞嵌入的文檔向量r(i)。具體公式如下:

? ? ? ? 這種允許重載文檔標記,并且累計信息來推斷答案的方法,稱之為無耐心編碼器。
? ? ? ? 這個論文描述了一些模型,接下來在他們的閱讀理解語料庫中評估這些模型。論文假設是神經模型原則上應該很適合這個任務。然而,他們承認簡單的復現模型如LSTM可能沒有足夠的表達力來解決需要復雜推理的任務。所以,他們期望基于注意的模型將優(yōu)于純基于LSTM的方法。
? ? ? ? 考慮到調查的第二個維度,傳統(tǒng)與神經方法之間的比較,沒有強烈的先前傾向于神經網絡。雖然在過去幾年的許多出版物已經證明神經模型勝過經典方法,仍然不清楚其中有多少是語言建模能力的固有的問題,多少事任何神經模型的作用。這里呈現的任務的實體匿名化和置換方面可以在這方面最終平衡游戲場,有利于能夠處理語法而不僅僅是語義的模型。
? ? ? ? 考慮到這些考慮,實驗部分設計有三個目標。首先,要通過應用廣泛的模型來確定機器閱讀任務的難度。第二,比較基于解析的方法與神經模型的性能。第三,在檢查的神經模型組中,想要確定每個組件對最終性能的貢獻;也就是說,想要分析LSTM可以解決這個任務的程度,以及各種關注機制在多大程度上影響性能。
? ? ? ? 所有模型的超參數都在兩個語料庫的相應驗證集上進行調整。實驗結果在下表中,注意力和無耐心編碼器在兩個數據集中表現最好。

? ? ? ? 訓練機器閱讀和理解模型的監(jiān)督范式為建立完整的自然語言理解系統(tǒng)的路徑提供了一個有前途的途徑。本文已經證明了一種用于獲得大量文檔 - 問題 - 答案三元組的方法,并且示出了基于循環(huán)和注意力的神經網絡為該任務提供有效的建??蚣?。分析表明,注意力和無耐心的編碼器能夠傳播和集成遠距離的語義信息。特別是,我們認為納入注意機制是這些結果的關鍵貢獻者。
? ? ? ? 我們使用的注意機制只是一個非常一般的想法的一個實例,可以進一步利用。然而,并入世界知識和多文檔查詢也將需要注意和嵌入機制的發(fā)展,其查詢的復雜性不與數據集大小線性地縮放。仍然有許多查詢需要復雜的推理和長距離參考分辨率,我們的模型還不能回答。因此,我們的數據提供了一個可擴展的挑戰(zhàn),應該支持NLP對未來的研究。此外,使用我們描述的技術可以獲得顯著更大的訓練數據集,無疑允許我們訓練更多的表達和準確的模型。
? ? ? ? 這篇文章比較難懂,涉及到的模型都是比較新的模型,因此在閱讀的時候需要把相關論文也要拿來讀,因此花費的時候相對就長很多。
看完文章,我們更關注的是代碼實現,這是投入實戰(zhàn)的關鍵。代碼的實現,我會另外單獨寫一篇。