在上一篇文章中,我們介紹瞭什麼是概念化和組合性,而常識推理對於判斷新組合的可靠性是十分重要的。

往泛瞭說,常識推理是附屬於自然語言推理(NLI)領域的一個子任務。除瞭之前提到的WSC之外,近年來面向NLI的benchmark任務數量在飛速增漲。尤其是2018年,湧現出瞭比以往任何時候都規模更大且數量更多的benchmark。

自2005年以來的眾多NLI benchmark

這些NLI benchmark主要涵蓋瞭以下幾種任務:指代消解(reference resolution),如Winograd Schema Challenge、WinoGrande;問答(question answering),如MCTest、RACE、NarrativeQA、CommonsenseQA;文本蘊含(textual entailment),如RTE Challenges、SICK;可信推斷(plausible inference),如COPA、SWAG、ROCStories;直覺心理學(intuitive psychology),如Event2Mind、Story Commonsense;以及一些多任務benchmark,如bAbI、DNC等。

解決NLI問題的相關研究可以被大致分為三類:

1. 基於規則和知識的方法 (Rule and knowledge-based approaches)

2. 通用的人工智能方法 (Generic AI approaches)

3. 語言模型方法 (AI language model approaches)

【=== survey預警 不喜閱讀綜述的可直接跳到下方分割線 ===】

第一種基於規則的方法是從symbolic approaches延伸來的,它運用邏輯形式和過程(logical forms and processes)來推理。從亞裡士多德的邏輯理論和演繹推理開始,人類歷史上對於運用邏輯進行推理的研究已經持續瞭幾百年。在此期間,邏輯學的理論在人工智能和語言學領域也得到瞭應用,比如Lakoff (1970) 用自然邏輯對語義進行表征。在1990s早期,符號方法在語言的知識表征和語義處理方面占據瞭主導地位,因此這一方法被大量用於解決NLI問題。

舉例來說,Raina(2005) 將自然語言的句子解析成為邏輯形式,然後利用學習到的假設和似然對它們進行歸納,以確定是否可以用一組高似然的假設來證明一個句子蘊含另一個句子。Giampiccolo (2008) 運用瞭Wikipedia等外部語義知識源增強假設句中的信息,然後用人工撰寫的邏輯規則將其映射到前提句中的單詞。Gordon(2016) 創建瞭一套完備的人工編寫的邏輯和常識規則,用於獲取數據中的自然語言到邏輯形式的映射。

雖然手動編寫邏輯規則以及構建語言到邏輯形式的映射的確在某些任務中非常有效,但這對於更大數量級的數據集來說是不可擴展的,因為在這些數據集中,所需的知識、語言和語義現象的變化要大得多。

從1990s中期到2010s早期,統計學方法在NLP領域占據瞭主導地位,也即後來的通用人工智能方法:基於數據的特征訓練得到各種類型的統計模型。早期的方法常將各種詞語匹配和其他詞匯特征與人工編寫的確定性規則或者傳統的決策樹模型相結合。其中詞匯特征比如bag-of-words,語言特征比如有語義依賴、釋義、同義詞、反義詞、超義詞等。外部知識也常被用作訓練數據特征的補充,例如第一次RTE挑戰賽的最優方案使用瞭一個樸素貝葉斯分類器,其特征來自於在線搜索引擎的詞共現率(co-occurrences)。

此後神經網絡方法興起,其最大優勢在於模型能夠主動地學到數據中的有用特征而不必依靠人為設定。隨著ML和DL的發展,NLP領域形成瞭一種解決一般問題的范式:使用上下文詞表示模型學習得到詞表示(word representation)作為特征或直接用於下遊任務的微調。在此類神經網絡方法中,被重點關註的模塊主要有註意力機制(attention mechanism)、記憶力增強(memory augmentation)、上下文模型和表示學習(contextual models and representations)。

第三種是語言模型方法。這一方法的基本假設是Wikipedia等文本中本身就隱含著常識性知識,而語言模型能夠在訓練時直接學到常識。這類方法通常需要兩階段的pipeline,首先做一個在大語料上自監督的預訓練語言模型,然後在微調階段將學習到的詞嵌入運用於下遊的任務,比如像WSC任務就可以在微調時當作普通的指代消解任務那樣處理。然而,近期也有很多工作通過各類實驗指出常識通常是隱式的,其實並不能被預訓練語言模型很好地捕獲到。

回到常識推理任務,一大難題就在於:常識要從哪裡來?

據估計,典型的成年人所知道的常識性知識公理多達100,000,000條。而在NLI應用中,這些知識的缺乏正是目前的一大瓶頸。為瞭克服這一瓶頸,從早期的語義網絡到最近的大規模常識知識圖譜,人工智能領域幾十年來一直在努力開發知識表征和各種知識資源。這些知識的表示形式通常有命題(propositions)、分類(taxonomies)、本體(ontologies)和語義網絡(semantic networks)等。知識源主要包括有以下幾大類:

一,語用知識資源(Linguistic knowledge)

在過去的30年以來,語言學資源一直是推動NLP領域發展的關鍵,這些句法、語義和話語結構的註釋被大量用於機器學習模型的訓練。1)標註語料庫,如Penn Treebank,它的標註包括POS標簽和基於無語境語法的句法結構,以及基於它構造的Penn Discourse Treebank添加瞭帶註釋的話語結構;2)詞匯資源,如WordNet,與普通字典不同的是,WordNet是按照概念(即同義詞列表)及其與其他詞的語義關系(如反義詞、次義詞/超義詞、蘊含等)來組織詞的,類似的還有基於動詞類的VerbNet等;3)框架語義,如FrameNet,所謂的框架(frame)是指關於原型事件和情境信息的認知數據結構,它也能表征動詞語義;4)預訓練語義向量,如著名的word2vec、GloVe等。

二,通用知識資源(Common knowledge)

這裡的Common knowledge指的是經常被明確指出的、關於世界的眾所周知的事實。由於這些事實經常在文字中得以陳述,因此直接從網絡上挖掘這些事實創建知識庫也相對容易。這類知識資源包括有YAGO、DBpedia、WikiTaxonomy、Freebase等,其中大多都是基於Wikipedia構建的。

三,常識知識資源(Commonsense knowledge)

與通用知識有所區別,常識對大多數人來說是顯而易見的,幾乎不會顯式地闡述。需要註意的是,通用知識和常識知識並不總是完全區分開的,而且由於這些資源一般是從網絡上收集得到的,所以許多常識知識庫也包含有通用知識。

一些較出名的常識資源庫有:

1)Cyc,它通過形式邏輯為基礎的CycL語言編碼瞭對象之間的本體關系,其中對象類型包括瞭實體、集合、函數和真理函數,庫中含有700萬個常識知識斷言;

2)ConceptNet,它含有800多萬個節點以及2,100多萬條節點間的link,包括瞭來自多語種資源的知識,還有與其他知識圖的鏈接,已經在許多NLI系統中得到瞭廣泛使用;

3)SenticNet以及IsaCore,主要是用於情感分析的常識知識庫;

4)COGBASE,它用一種新的形式表示瞭270萬個概念和1000萬個關於這些概念的常識,後來構成瞭SenticNet3的核心;

5)WebChild,基於從網頁獲取的一般性的"名詞-形容詞"關系構成的知識庫。它與其他基於網頁獲取的知識庫不同之處在於它主要是一個常識性知識庫,這是因為WebChild是由各種語料庫中收集的名詞和形容詞之間的細粒度概括性關系組成,而不是直接從維基百科獲取結構化的通用知識。它的2.0版本含有200萬個概念和活動以及1,800多萬個斷言;

6)TOMIC,是一個眾包知識圖譜,包含瞭30萬個節點對應事件的文字描述以及約87.7萬個"if-event-then"三段式,代表瞭日常事件之間的九種if-then關系。它表征的不是分類或本體,而是易於獲取的推理知識;

7)ASER,和ATOMIC類似,也是一個含有活動、實體、事件和關系的知識圖譜,但它的規模更大,包含瞭1.94億個事件、6400萬個關系和15種關系類型,並且是從非結構化文本數據中提取得到而非眾包的。

雖然各類知識源眾多,但由於人類擁有的知識量實在太大瞭,沒有任何一種知識源是完整的,即使是最大的資源庫也會缺少知識或出現錯誤,從而無法在NLI benchmark上得到過人的表現。

那麼如何利用這些不完整知識庫呢?主要有如下幾種方法:

一,降維(Dimensionality reduction)。比如計算不同的知識圖結構之間的相似度並進行類比,從而產生新的關系。這一方法的缺點在於無法創造新的term,而隻是對知識圖譜中的現有term產生置信度分數。

二,抽取式補全(Extractive knowledge base completion),通過生成新的關系來補全知識庫。比如通過訓練得到一個能分辨是錯誤關系還是知識庫中的關系的神經網絡,然後用來給擬議的新關系的真實性打分。

三,自動式補全(Automatic knowledge base completion)。這一方法的思路在於,新的關系除瞭能夠從文本中提取,也能用現有的關系推斷得到。比如對知識圖中已有事件的時間關系進行概括,能排序獲得新的時間關系。

【=============== 我是分割線 ===============】

上文介紹瞭幾種方法和知識源,那麼目前的SOTA在前面提到的benchmark上表現究竟如何呢?下圖是一些公開瞭人類準確率的benchmark與目前SOTA的比較。

SOTA準確率和人類的對比(按照人類準確率的降序排序)

從圖上可以發現bAbl這個benchmark似乎對於人類和模型是最容易的,都做到瞭100%(這可能也並不奇怪,因為bAbl的數據是按照簡單的結構合成生成的,而這些更簡單的語言模式可以被深度學習模型很好地捕獲到)。在圖中這些benchmark上,人類的準確率幾乎都在80%~90%多,而模型在不同benchmark上的表現卻差異很大。

雖然機器學習模型的確在部分數據集(如SQuAD 1.1和2.0)上的表現達到瞭人類基準甚至超過瞭人類,這是不是意味著這個任務已經得到解決瞭呢?奇怪的是,在模型表現超過人類的幾個數據集上,人類的準確率是相對較低的。那是不是因為這些任務對於人類來說本身就太難瞭呢?

需要註意的是,這些對於人和機器的performance的衡量方法的確能讓我們意識到任務的復雜性如何,但卻並不能僅靠performance說明問題。這裡有以下兩個原因:

一、對於人類表現的衡量不一定準確。比如,評價方法對人類不友好。舉例來說,SQuAD 1.1 中的人類錯誤大多是給出回答時遺漏瞭不必要的單詞或短語導致的。另外,當人類數據是通過眾包獲得的時候,得到的performance也可能會偏低。比如在RACE數據集上,眾包得到的準確率是73.5%,而人類專傢的準確率是94.5%。因為眾包的人一般是希望快速完成任務使收入最大化,所以可能不會像在日常環境中那樣花很多時間去完成推理。

二、對於模型表現的衡量也不一定準確。比如,有些任務本身就是對機器更友好。舉例來說,CBT語言建模的一個子任務:在無論是否有上下文段落的情況下,預測句子中的隨機詞。對於人類而言,預測某些類型的詞(比如介詞)是很困難的,在沒有上下文語境時人類的準確率隻有67.6%。但神經語言模型在捕捉模式的能力上更強,很容易就在這個子任務上超過瞭人類。另外,由於數據集本身是有bias的,加之機器學習模型的不可解釋性(benchmark也沒有要求解釋性),模型的performance高並不一定能代表在這些任務上真正比人類做得好。

由此看來,對於NLI模型的評估亟需一個更廣泛和多維度的評價指標,需要衡量的除瞭解決任務的能力,還需兼顧效率、可解釋性、推廣/泛化能力。


Ps:文中有些涉及到語言學的專業術語不確定有沒有翻譯正確,歡迎在評論區指正

參考文獻:Recent Advances in Natural Language Inference: A Survey of Benchmarks, Resources, and Approaches