人工智慧研究中心機器閱讀框架:Jack the Reader
你和「懂AI」之間,只差了一篇論文
很多讀者給芯君後台留言,說看多了相對簡單的AI科普和AI方法論,想看點有深度、有厚度、有眼界……以及重口味的專業論文。
為此,在多位AI領域的專家學者的幫助下,我們解讀翻譯了一組頂會論文。每一篇論文翻譯校對完成,芯君和編輯部的老師們都會一起笑到崩潰,當然有的論文我們看得抱頭痛哭。
同學們現在看不看得懂沒關係,但芯君敢保證,你終有一天會因此愛上一個AI的新世界。
讀芯術讀者論文交流群,請加小編微信號:zhizhizhuji。等你。
這是讀芯術解讀的第140篇論文
ACL 2018 System Demonstrations
機器閱讀框架:Jack the Reader
Jack the Reader–A Machine Reading Framework
德國人工智慧研究中心
German Research Center for Artificial Intelligence (DFKI)
本文是德國人工智慧研究中心發表於 ACL 2018 的工作,為提高研究效率和代碼重用率,提出了一個機器閱讀框架Jack the Reader(JACK),允許通過組件重用快速建立模型原型,評估現有數據集上的新模型,集成新數據集,並將其應用於不斷增長的已實現基線模型集中。JACK目前支持(但不限於)三個任務:問答、自然語言推理和鏈接預測。
引言
自動閱讀和理解文本和符號輸入,在一定程度上使得問題回答成為了機器閱讀(MR)的核心。促進MR模型開發的一個核心洞察力是,這些任務中的大多數可以轉換為問題回答(QA)任務的實例:輸入可以轉換為問題、支持文檔和答案候選,輸出可以轉換為答案。例如,在自然語言推理(NLI)的情況下,我們可以將假設看作一個關於基本前提(支持)的多重選擇問題,具有預定義的一組特定答案候選(包含、矛盾、中立)。鏈接預測(LP)——一個需要預測被表示為(主語、謂語、賓語)三元組的事實的真實值的任務——可以設想為QA的實例。通過將這些任務統一到一個框架中,我們可以促進多單元MR的設計和構建。
目前已經有了許多成功的框架,例如用於NLP的STANFORD CORENLP、NLTK和SPACY,用於信息檢索的LUCENE和SOLR,以及用於通用機器學習(ML)的SCIKIT-LEARN、PYTORCH和TENSORFLOW,其中特別關注深度學習(DL)。所有這些框架都涉及機器讀取的幾個方面,但是沒有一個框架提供對現代MR的專門支持。MR數據集的預處理和轉換為MR模型可用的格式,以及實現公共體系結構構建塊,所有這些都需要大量的工作,而上述解決方案中沒有具體處理這些工作。這是因為它們服務於不同的、通常更廣泛的任務。
本文介紹了一個可重用的MR框架——Jack the Reader(JACK),它通過公開一組高級原語和一種通用的數據格式,使新任務和數據集易於集成。對於受支持的任務,開發新模型是非常方便的,而不用擔心訓練、評估、前後處理的繁瑣實現。聲明性模型定義使得使用公共構建塊開發QA和NLI模型變得不費吹灰之力。JACK涵蓋了三個不同的MR任務的各種數據集、實現和預訓練模型,並支持兩個ML後端,即PYTORCH和TENSORFLOW。此外,它易於訓練、部署以及與MR模型交互,我們稱之為閱讀器readers。
模型
下圖給出了我們的核心抽象JTREADER的高級概述。它是圍繞三個典型任務相關模塊(即輸入、模型和輸出模塊)的任務無關包裝。除了充當模塊的容器之外,JTREADER還為交互、訓練和序列化提供了方便的功能。因此,底層的模塊性對用戶隱藏得很好,這便於訓練模型的應用。
模塊及其應用:我們的抽象模塊具有以下功能:
· 輸入模塊:將基於文本的輸入轉換為張量的預處理。
· 模型模塊:實際端到端MR模型的實現。
· 輸出模塊:將預測轉換成人類可讀的答案。
在JACK中構建模型的主要設計圍繞三個主要模塊之間的功能介面:輸入、模型和輸出模塊。每個模塊可以被看作是圍繞(一組)函數的薄包裝,該函數另外以張量埠的形式提供顯式簽名,張量埠可以被理解為張量的命名佔位符。
顯式簽名的使用有助於驗證模塊是否正確實現和調用,並確保模塊之間的正確行為和兼容性。最後,通過將模塊實現為類,並通過簡單的功能介面實現它們的交互,JACK允許利用使用面向對象編程而帶來的好處,同時在組合模塊時保留了功能編程範式提供的靈活性。
給定訓練實例列表,對問答對,輸入模塊負責將這些實例轉換為張量。每個產生的張量都與一個預定義的張量埠——一個張量的命名佔位符——相關聯,該佔位符又可以在後面的模塊中使用來檢索實際的張量。這個步驟通常涉及一些淺層次的語言預處理,如標記化、構建辭彙表等。模型模塊對當前張量化的輸入運行端到端MR模型,並計算輸出張量埠到新計算張量的新映射。最後,輸入和模型模塊的聯合張量映射用作輸出模塊的輸入,從而產生人類可讀的答案。
模塊可重用性。我們將閱讀器淺層模塊化成輸入、模型和輸出模塊,具有易於重用的優點。目前大多數最先進的MR模型需要完全相同的輸入預處理,併產生相同形式的輸出。因此,在大多數情況下,可以重用負責預處理和後處理的現有輸入和輸出模塊,這使得研究人員能夠專註於原型化和實現新模型。儘管我們承認大多數預處理可以容易地由第三方庫(如CORENLP、NLTK或SPACY)執行,但我們認為額外的功能(如構建和控制辭彙表、填充、批處理等)以及將預處理的輸出與實際模型實現連接的挑戰。在處理我們當前支持的任務之一——問題回答、自然語言推理或知識圖中的鏈接預測——時,這些任務可以避免。請注意,模塊通常是特定於任務的,並不直接在任務之間共享。然而,像上面提到的預處理函數和模型構建塊這樣的實用程序即使在任務之間也能夠很容易地重用。
支持的ML後端。通過將建模與預處理和後處理分離,我們可以很容易地在後端之間切換以實現模型。在撰寫本文時,JACK同時為TENSORFLOW和PYTORCH提供支持。這允許從業人員使用他們首選的庫來實現新的MR模型,並允許將來集成更多的後端。
聲明性模型定義。實現不同類型的MR模型可能是重複的、冗長的,並且容易出錯。大多數神經結構都是使用一組有限的基本構建塊來構建的,用於對序列進行編碼,並實現序列之間的交互(例如,通過注意機制)。由於這樣的原因,JACK允許在高層描述這些模型,作為更簡單的構建塊的組合,將具體的實現細節留給框架。
數據覆蓋。JACK允許解析問題回答、自然語言推理和鏈接預測的大量數據集。支持的問題回答數據集包括SQuAD、TriviaQA、NewsQA和QAnagaroo。支持的自然語言推理的數據集包括SNLI和MultiNLI。支持的鏈接預測數據集包括WN18、WN18RR和FB15k-237。
預訓練模型。JACK提供幾種預訓練模型。對於QA,這些包括FastQA、BiDAF和JackQA,它們都是在SQuAD和TriviaQA上訓練的。對於NLI,這些包括DAM和ESIM,它們在SNLI和多NLI上訓練。對於LP,這些包括DistMult和CompleEx在WN18、WN18RR和FB15k-237上訓練。
支持的MR任務:大多數最終用戶的MR任務可以轉換為問題回答的實例。典型問題回答設置的輸入包括問題、在訓練期間支持文本和答案。在下面我們將展示如何使用JACK來建模當前支持的MR任務。準備好為這些任務使用允許快速原型化的實現。對開發新模型感興趣的研究人員可以在TENSORFLOW或PYTORCH中定義它們的體系結構,並重用現有的輸入和輸出模塊。在將新數據集轉換為我們支持的格式之一之後,可以在一組實現的基線模型上快速測試它們。
抽取式問答。JACK支持抽取式問題回答(Extractive Question Answering,EQA)任務,該任務要求模型以包括文檔ID、token開始和結束的答案跨度的形式,從給定的一組支持文檔中提取問題的答案。這個任務非常適合我們的內部數據格式,因此很容易用JACK表示。
自然語言推理。另一個流行的MR任務是自然語言推理,也稱為識別文本約束(RTE)。任務是預測一個假說是否被一個給定的前提所包含、反駁,或者中立。在JACK中,NLI被看作是一個選擇題回答問題的實例,通過把假設作為問題,把前提作為支持。這個問題的答案是三個可能的結果或類別,即必然性、矛盾性或中性。
鏈接預測。JACK還支持鏈接預測,因為現有的LP模型可以轉換為多項選擇問題回答模型,其中問題由三個單片語成——主語s、謂語p和對象o。在鏈接預測任務的原始公式中,支持是空的。然而,JACK通過額外的支持來豐富問題——例如,包括涉及問題的實體的鄰居,或者來自文本語料庫的句子,這些句子包括出現在三元組中的實體。這樣的設置可以被解釋為NLI的實例,並且原本不是為解決鏈接預測問題而設計的現有模型,可以被輕鬆地訓練。
實驗
本節報告了上述三個MR任務的不同模型的實驗設置和結果。
問題回答。對於問答(QA)實驗,我們報告了FastQA、BiDAF以及我們自己的JackQA實現的結果。利用JackQA,我們的目標是提供一個快速準確的QA模型。BiDAF和JackQA都是使用高級體系結構描述來實現的,也就是說,它們的體系結構純粹是在各自的配置文件中定義的。下表給出了我們在SQuAD開發集上的模型以及額外運行時和參數度量的結果。除了SQuAD,JACK還支持最近的NewsQA和TriviaQA數據集。
自然語言推理。對於NLI,我們報告了我們的條件性BiLSTM(cBiLSTM)、條件性LSTM的雙向版本、可分解注意模型DAM和增強的LSTM(ESIM)的實現結果。ESIM完全被實現為模塊化的NLI模型,也就是說,它的體系結構純粹是在配置文件中定義的。我們的模型或訓練配置包含來自原始設置的稍微修改,我們發現這些修改比原始設置執行得更好。
鏈接預測。對於知識圖中的鏈接預測,我們報告我們在各種數據集上實現DistMult和ComplEx的結果。結果列在下表中。
我們在https://github.com/uclmr/jack/tree/master/notebooks上創建了三個Jupyter教程來演示JACK的用例。
總結
本文提出了JackTheReader(JACK),這是一個用於機器讀取任務的共享框架,允許組件重用和跨數據集/域的模型輕鬆傳輸。JACK是一種新的適用於多種任務的統一機器閱讀框架,旨在提高研究人員的效率和代碼重用率。我們在三個任務方面展示了框架的靈活性:問題回答、自然語言推理和知識圖中的鏈接預測。隨著進一步的模型添加和用戶更廣泛的採用,JACK將支持更快速和可再現的機器閱讀研究,從而支持模型設計和開發的積木方法。
論文下載鏈接:
http://aclweb.org/anthology/P18-4005
※今日芯聲:小米深陷缺貨風波,雷軍要去工廠擰螺絲保證產量?
※NOVA:通過主題建模中的命名實體推廣來提高主題質量
TAG:讀芯術 |