不要think step by step!谷歌最新自然語言推理算法LAMBADA:「反向鏈推理」才是答案
?自動推理絕對算是自然語言處理領域的一大難題,模型需要根據給定的前提和知識推導出有效且正確的結論。
盡管近年來NLP領域借著大規模預訓練語言模型在各種「自然語言理解」如閱讀理解和問答等任務中取得了極高的性能,但這些模型在邏輯推理方面的性能仍然十分滯后。
去年5月「思維鏈」(Chain of Thought, CoT)橫空出世,有研究人員發現,只需要在prompt中加入「Let's think step by step」就能讓GPT-3的推理性能大幅提升,比如在MultiArith中就將推理準確率從之前的17.7%一下提升到了78.7%
但諸如CoT和Selection Inference等方法都是以前向(forward direction)的方式從公理(axioms)中搜索證明過程(proof)以推導出最終結論(conclusion),存在搜索空間組合爆炸的問題,因此對于較長的推理鏈,失敗率較高。
最近,Google Research開發了一種反向鏈(Backward Chaining)算法LAMBADA(LAnguage Model augmented BAckwarD chAining),將經典推理文獻中得出的「反向推理效率明顯高于前向推理」這一結論應用于語言模型(LM)中。
論文鏈接:https://arxiv.org/abs/2212.13894
LAMBADA將推理過程分解為四個子模塊,每個模塊都由few-shot prompted語言模型推理實現。
最終LAMBADA相比當下sota的前向推理方法在兩個邏輯推理數據集上實現了顯著的性能提升,特別是在問題要求深度和準確的證明鏈情況下,LAMBADA的性能提升更加明顯。
「反向推理」成版本答案?
邏輯推理,特別是對非結構化自然文本的邏輯推理,是構建自動知識發現的基礎構件,也是未來各種科學領域進步的關鍵。
雖然許多NLP任務的發展都受益于預訓練語言模型不斷擴大的規模,但根據觀察,提升模型的尺寸對解決復雜推理問題的提升十分有限。
在經典文獻中,有兩種主要的邏輯推理方法:
1、前向鏈式推理(Forward Chaining, FC),即從事實和規則出發,在做出新的推理并將其加入理論之間進行迭代,直到目標陳述可以被證明或推翻;
2、后向鏈式推理(Backward Chaining, BC),即從目標出發,將其遞歸分解為子目標,直到子目標可以根據事實被證明或推翻。
以前用語言模型進行推理的方法大多采用前向鏈式推理的思路,要求從整個集合中選擇一個事實和規則的子集,這對LM來說可能是困難的,因為它需要在一個大的空間里進行組合搜索。
此外,決定何時停止搜索并宣布證明失敗在FC中也是非常困難的,有時甚至需要一個專門對中間標簽進行訓練的模塊。
事實上,經典的自動推理文獻在很大程度上偏重于后向鏈式推理或目標導向的求證策略。
LAMBADA
LAMBADA意為「反向鏈式技術增強的語言模型」,研究人員通過實驗證明了BC更適合于基于文本的演繹邏輯推理(deductive logical reasoning)。
BC不需要大量的組合搜索來選擇子集,而且有更自然的停止搜索標準(halting criteria)。
LAMBADA主要專注于對事實進行自動推理,即自然語言斷言,如「好人是紅色的」,這些斷言是連貫的(coherent),但不一定基于真實情況。
一個規則由自然語言聲明編寫,形式上可以改寫為「如果P那么Q」,例如「粗暴的好人是紅色的」(Rough, nice people are red)可以改寫為「如果一個人是粗暴的好人,那么他們是紅色的」(If a person is rough and nice, then they are red)。
其中P被稱為規則的前項(antecedent),Q被稱為規則的后項(consequent)。
一個理論theory C由事實F={f1, f2, . . , fn}和規則R={r1, r2, . . , rm}組成,G代表一個想根據事實和規則來證明或反駁的目標。
例1、一個帶有虛構角色和規則的理論實例C
F={"菲奧娜是好人","菲奧娜是粗人"}
R={"如果某人很聰明,那么他就是好人","粗暴的好人是紅色的","作為好人和紅色意味著他是圓的"}。
基于上述理論,人們可能想證明或反駁一個目標,如「菲奧娜是紅色的?」。
后向鏈法推理
一條規則是否適用于一個目標,是通過邏輯學中的一個叫做unification的操作來確定的。
例如,對于例1中的目標「Fiona是紅色的?」,第二條規則的后果與目標相同,所以可以適用;但另外兩條規則的后果不同,所以不適用。
考慮例1中的理論和目標,BC從目標「Fiona是紅色的?」開始推理。
首先,BC驗證該目標是否可以從任何事實中被證明或反駁。由于沒有任何事實可以證明或反駁這個目標,所以接下來會驗證這個目標是否與任何規則的結果相統一,結果發現它與第二條規則「粗糙的好人是紅色的」相統一。
因此,該目標可以被分解成兩個子目標:1)菲奧娜是粗暴的嗎?和2)菲奧娜是好人嗎?。
由于這兩個子目標都可以從事實中得到證明,BC的結論是原始目標可以得到證明。
對于一個目標,BC的結果要么是證明,要么是否定,要么是不知道(例如目標「菲奧娜很聰明?」)。
LAMBADA中的語言模型
為了將BC用于基于文本的推理,研究人員引入了四個基于LM的模塊:事實檢查(Fact Check)、規則選擇(Rule Selection)、目標分解(Goal Decomposition)和符號一致性(Sign Agreement)。
事實檢查
給出理論中的一組事實F和一個目標G,事實檢查模塊驗證是否存在一個事實f∈F,使得f包含G(在這種情況下,目標被證明)或者f包含G的否定(在這種情況下,目標被否定)。
如果找不到這樣的事實,那么G的真相仍然是未知的。
事實檢查的實現包括兩個子模塊:第一個子模塊從與目標最相關的事實集中選擇一個事實,第二個子模塊根據這個事實來驗證目標是否可以被證明或否定。
由于事實選擇子模塊在第一次嘗試時可能無法確定最佳的事實,如果在調用子模塊一輪后,目標的真相仍然未知,可以刪除所選的事實,然后再次調用子模塊;這個過程可以重復多次。
規則選擇
給出理論中的一組規則R和一個目標G,規則選擇模塊確定規則r∈R,使r的結果與G相統一,然后用這些規則將目標分解為子目標。
如果不能確定這樣的規則,那么G的真相仍然是未知的。
規則選擇同樣包括兩個子模塊:第一個子模塊確定每個規則的結果(與目標無關),第二個子模塊將規則的結果和目標作為輸入,并確定哪一個與目標相統一。
需要注意的是,由于BC的遞歸性質,規則選擇模塊在證明一個目標的過程中可能會被多次調用。由于識別每條規則的結果與目標無關,這個子模塊只需要被調用一次。
目標分解
給定一個規則r和一個目標G,使r的結果與G統一,目標分解模塊確定需要證明的子目標,以使G被證明或被否定。
在成功證明r的前項的情況下,目標是被證明還是被否定取決于目標的符號(sign)是否與r的結果符號一致。
例如對于目標「Fiona是紅色的?」,由于目標的符號與第二條規則的結果符號一致,并且規則的前項被證明,可以得出結論,目標被證明。
符號一致性
給定一個規則r和一個目標G,符號一致模塊驗證r的結果符號是否與目標的符號一致或不一致。
實驗部分
研究人員選擇Chain of Thought(CoT)、基于顯式推理的sota神經推理方法、sota模塊推理方法Selection Inference(SI)作為對比基線模型。
實驗的數據集采用ProofWriter和PrOntoQA,這些數據集對LM推理具有挑戰性,包含需要證明鏈長度達5跳的例子,以及目標既不能從提供的理論中證明也不能反駁的例子。
實驗結果顯示,LAMBADA明顯優于其他兩個基線,特別是在包含UNKNOWN標簽的ProofWriter-PUD數據集上(與CoT相比有44%的相對改善,與SI在深度-5上相比有56%的改善),以及在PrOntoQA的較高深度上(與CoT相比有37%的相對改善,與SI在深度-5上相比有113%的改善)。
這些結果顯示了LAMBADA在邏輯推理方面的優點,也顯示了后向鏈(在LAMBADA中是推理的backbone)與前向鏈(在SI中是backbone)相比可能是更好的選擇。
這些結果還揭示了CoT方法在處理UNKNOWN標簽時的一個缺陷:與標簽為證明(PROVED)或否定(DISPROVED)的例子不同,對于標簽為UNKNOWN的例子,沒有自然的思維鏈。
對于更深(3+)的證明鏈問題上,在三個數據集上,SI產生的預測接近于多數類預測。
可以發現,在二元情況下,它傾向于過度預測DISPROVED;在三元分類情況下,傾向于過度預測UNKNOWN,這使得它在PrOntoQA的深度-5中的表現甚至比多數類更差,因為該深度的PROVED標簽比DISPROVED多。
不過研究人員也驚訝地發現,CoT對于ProofWriterPD數據集的性能仍然相對較高,而且準確率沒有降低。
總之,在這些數據集上,LAMBADA具有更高的推理準確性,與其他用虛假的證明痕跡找到正確結論的技術相比,LAMBADA更有可能產生有效的推理鏈,同時也比其他基于LM的模塊化推理方法更有查詢效率。
研究人員表示,該實驗結果強烈地表明,未來關于用LM進行推理的工作應該包括后向鏈或目標導向的策略。
參考資料:?
https://arxiv.org/abs/2212.13894