一、概述
近來NLP領(lǐng)域由于語言模型的發(fā)展取得了顛覆性的進展,擴大語言模型的規(guī)模帶來了一系列的性能提升,然而單單是擴大模型規(guī)模對于一些具有挑戰(zhàn)性的任務(wù)來說是不夠的,比如算術(shù)、常識、符號推理任務(wù)(arithmetic, commonsense, symbolic reasoning)。本文探討了如何通過一個簡單的方法來解鎖大型語言模型的推理能力,這個方法由兩個想法驅(qū)動。第一個想法是算術(shù)推理的技術(shù)能夠從生成自然語言解釋(rationale)中獲益。先前的工作通過從頭開始訓(xùn)練或微調(diào)預(yù)訓(xùn)練模型,以及采用形式語言的神經(jīng)-符號方法來使模型能夠生成自然語言的中間步驟。第二個想法是利用大型語言模型實現(xiàn)上下文中的少數(shù)樣本學(xué)習(xí)(few-shot learning),即通過提示(prompting)提供少量輸入-輸出示例,而不是為每個新任務(wù)微調(diào)單獨的語言模型。這種方法在一系列簡單問答任務(wù)上取得了成功。
然而,這兩種方法都存在局限性。對于添加解釋的訓(xùn)練和微調(diào)方法,創(chuàng)建大量高質(zhì)量解釋的成本很高,遠(yuǎn)比傳統(tǒng)機器學(xué)習(xí)中使用的簡單輸入-輸出對復(fù)雜得多。而傳統(tǒng)的少數(shù)樣本提示方法在需要推理能力的任務(wù)上表現(xiàn)不佳,且隨著語言模型規(guī)模的增加,性能提升有限。為了克服這些局限性,作者將這兩個想法相結(jié)合,提出了一種稱為“思維鏈提示”(chain-of-thought prompting)的方法。在這種方法中,模型接收到的提示包含三個部分:輸入、思維鏈和輸出。思維鏈?zhǔn)且幌盗凶匀徽Z言中的中間推理步驟,它們導(dǎo)致最終輸出。
本文通過在算術(shù)、常識和符號推理基準(zhǔn)任務(wù)上的實證評估表明,思維鏈提示在性能上優(yōu)于標(biāo)準(zhǔn)提示,有時甚至達到令人驚嘆的程度。例如,在GSM8K數(shù)學(xué)問題基準(zhǔn)測試中,PaLM 540B模型使用思維鏈提示大幅度優(yōu)于標(biāo)準(zhǔn)提示(如下圖),達到了新的SOTA水平。提示方法的重要性在于它不需要大量訓(xùn)練數(shù)據(jù)集,并且單個模型檢查點可以執(zhí)行多個任務(wù)而不會失去通用性。這項工作強調(diào)了大型語言模型如何通過少量自然語言任務(wù)數(shù)據(jù)來學(xué)習(xí)(例如通過大型訓(xùn)練數(shù)據(jù)集自動學(xué)習(xí)輸入和輸出的潛在模式)。
實驗
二、方法
當(dāng)人們解決這類問題時,通常會將問題分解成中間步驟,逐個解決,最后給出答案。本文的目標(biāo)是賦予語言模型生成類似思維鏈的能力,即一個連貫的中間推理步驟序列,引導(dǎo)模型找到問題的最終答案。作者表明,如果在少數(shù)樣本提示中提供思維鏈推理的示例,足夠大的語言模型可以生成思維鏈。下圖展示了一個模型在解決數(shù)學(xué)問題時產(chǎn)生的思維鏈?zhǔn)纠?。在這種情況下,思維鏈類似于一個解決方案,但作者仍選擇稱其為思維鏈,以更好地捕捉模擬逐步解決問題的思維過程的概念。
思維鏈?zhǔn)纠?/p>
思維鏈提示作為促進語言模型推理的方法具有以下幾個有吸引力的特性:
①原則上,思維鏈允許模型將多步問題分解為中間步驟,這意味著可以為需要更多推理步驟的問題分配額外的計算能力。 ②思維鏈為模型的行為提供了一個可解釋的窗口,提示模型如何得出特定答案,并為發(fā)現(xiàn)推理路徑中的錯誤提供調(diào)試機會(盡管完全描述支持答案的模型計算仍然是一個開放性問題)。 ③思維鏈推理可用于諸如數(shù)學(xué)問題、常識推理和符號操作等任務(wù),并且原則上適用于任何人類可以通過語言解決的任務(wù)。 ④最后,通過在少數(shù)樣本提示的示例中包含思維鏈序列,可以輕松地在足夠大的現(xiàn)成語言模型中引出思維鏈推理。
本文在算術(shù)、常識、符號推理任務(wù)上進行了實驗,實驗中不同數(shù)據(jù)集的思維鏈提示示例如下:
示例
三、算術(shù)推理
實驗設(shè)置
這部分首先考慮了類似于圖1所示的數(shù)學(xué)問題,用以衡量語言模型的算術(shù)推理能力。盡管對人類來說很簡單,但算術(shù)推理是一個讓語言模型常常感到困難的任務(wù)。令人驚訝的是,當(dāng)將思維鏈提示應(yīng)用于具有540B參數(shù)的語言模型時,在幾個任務(wù)上與特定任務(wù)的微調(diào)模型表現(xiàn)相當(dāng),甚至在具有挑戰(zhàn)性的GSM8K基準(zhǔn)測試上實現(xiàn)了新的SOTA水平。
Benchmarks
我們考慮了以下五個數(shù)學(xué)問題benchmark數(shù)據(jù)集:
①GSM8K數(shù)學(xué)問題基準(zhǔn)測試; ②SVAMP數(shù)據(jù)集,包含不同結(jié)構(gòu)的數(shù)學(xué)問題; ③ASDiv數(shù)據(jù)集,包含多樣化的數(shù)學(xué)問題; ④AQuA數(shù)據(jù)集,包含代數(shù)問題; ⑤MAWPS基準(zhǔn)測試。
Standard prompting(標(biāo)準(zhǔn)提示)
作為baseline,我們采用GPT-3論文中的標(biāo)準(zhǔn)few-shot prompting,其中語言模型在為測試時示例輸出預(yù)測之前獲得了輸入-輸出對的上下文示例。示例以問題和答案的形式呈現(xiàn)。如圖1(左)所示,模型直接給出答案。
Chain-of-thought prompting(思維鏈提示)
我們提出的方法是用問題的關(guān)聯(lián)答案的思維鏈來增強few-shot prompting中的每個示例,如圖1(右)所示。由于大多數(shù)數(shù)據(jù)集僅有一個評估分割,我們手動編寫了一組包含思維鏈提示的八個少數(shù)樣本示例——圖1(右)顯示了一個思維鏈?zhǔn)纠?。這些特定示例沒有經(jīng)過提示工程。為了研究這種形式的思維鏈提示是否可以成功引導(dǎo)成功解答一系列數(shù)學(xué)問題,我們使用了這八個思維鏈?zhǔn)纠?,適用于除AQuA之外的所有基準(zhǔn)測試,因為AQuA是多項選擇而非自由回答。對于AQuA,我們使用了來自訓(xùn)練集的四個示例和解決方案
語言模型
我們評估了五個大型語言模型。
①GPT-3,我們使用了text-ada-001、text-babbage-001、text-curie-001和text-davinci-002,它們可能對應(yīng)于具有350M、1.3B、6.7B和175B參數(shù)的InstructGPT模型。 ②LaMDA,它有422M、2B、8B、68B和137B參數(shù)的模型。 ③PaLM,具有8B、62B和540B參數(shù)的模型。 ④UL2 20B。 ⑤Codex。
我們通過貪婪解碼從模型中采樣(盡管后續(xù)工作顯示,通過在許多采樣生成中采取多數(shù)最終答案,可以改進思維鏈提示)。對于LaMDA,我們報告了五個隨機種子的平均結(jié)果,每個種子具有不同的隨機洗牌順序的示例。由于LaMDA實驗在不同種子之間沒有顯示出較大的方差,為節(jié)省計算資源,我們對所有其他模型報告了單個示例順序的結(jié)果。
結(jié)果
算術(shù)推理
思維鏈提示的最優(yōu)結(jié)果匯總在上圖中。實驗的結(jié)果主要反映出三個關(guān)鍵要點。
首先,上圖顯示,思維鏈提示是模型規(guī)模的一種涌現(xiàn)能力(emergent ability)。也就是說,對于小型模型,思維鏈提示不會對性能產(chǎn)生積極影響,只有在與大約100B參數(shù)的模型一起使用時,才能產(chǎn)生性能提升。我們發(fā)現(xiàn),較小規(guī)模的模型產(chǎn)生了流暢但不合邏輯的思維鏈,導(dǎo)致性能低于標(biāo)準(zhǔn)提示。
其次,對于更復(fù)雜的問題,思維鏈提示的性能提升更大。例如,對于GSM8K(baseline性能最低的數(shù)據(jù)集),最大的GPT和PaLM模型的性能提高了一倍多。另一方面,對于SingleOp(MAWPS中最簡單的子集,只需要一個步驟就可以解決),性能改進要么是負(fù)面的,要么非常小。
第三,通過GPT-3 175B和PaLM 540B的思維鏈提示,與之前的最佳實踐相比,表現(xiàn)相當(dāng)不錯,后者通常在帶標(biāo)簽的訓(xùn)練數(shù)據(jù)集上對特定任務(wù)的模型進行微調(diào)。上圖顯示了PaLM 540B如何使用思維鏈提示在GSM8K、SVAMP和MAWPS上實現(xiàn)新的SOTA(請注意,標(biāo)準(zhǔn)提示已經(jīng)超過了SVAMP的之前最佳記錄)。在另外兩個數(shù)據(jù)集AQuA和ASDiv上,PaLM使用思維鏈提示的方法達到了距離最佳水平2%以內(nèi)。
為了更好地了解為什么思維鏈提示起作用,我們手動檢查了LaMDA 137B在GSM8K上生成的思維鏈。在50個隨機樣本中,模型給出了正確的最終答案,除了兩個恰好得到正確答案的樣本外,所有生成的思維鏈都是邏輯和數(shù)學(xué)上正確的。我們還隨機檢查了50個模型給出錯誤答案的樣本??偨Y(jié)一下這個分析,46%的思維鏈幾乎是正確的,只有一些小錯誤(計算錯誤、符號映射錯誤或缺少一個推理步驟),另外54%的思維鏈在語義理解或連貫性方面存在重大錯誤。為了更好地了解為什么規(guī)模化改善了思維鏈推理能力,我們對PaLM 62B犯的錯誤以及將其擴展到PaLM 540B是否修復(fù)了這些錯誤進行了類似的分析??偨Y(jié)來說,將PaLM擴展到540B能修復(fù)62B模型中的大部分缺失一步和語義理解錯誤。
這些結(jié)果表明,通過引入思維鏈提示,我們可以顯著提高大型語言模型在解決數(shù)學(xué)問題方面的性能,特別是在處理更復(fù)雜數(shù)學(xué)問題時。盡管較小的模型在生成思維鏈時可能會產(chǎn)生不合邏輯的結(jié)果,但隨著模型規(guī)模的增加,這種方法在很大程度上提高了解決問題的準(zhǔn)確性和邏輯性。
總之,通過在數(shù)學(xué)問題上應(yīng)用思維鏈提示,研究人員觀察到了顯著的性能提升。隨著模型規(guī)模的增加,這種方法在解決更復(fù)雜數(shù)學(xué)問題時變得更加有效。此外,通過將思維鏈提示與大型模型結(jié)合使用,研究人員能夠?qū)崿F(xiàn)接近甚至超過之前最佳實踐的性能。這表明,思維鏈提示是一種有前景的方法,可以幫助提高大型語言模型在數(shù)學(xué)和其他需要多步推理的任務(wù)上的性能。
消融實驗
消融實驗
使用思維鏈提示所觀察到的優(yōu)勢引發(fā)了一個自然問題:其他類型的提示是否也能帶來相同的性能提升。上圖展示了一個消融實驗,其中描述了以下三種思維鏈的變體。
Equation only
使用思維鏈提示可能有助于生成要評估的數(shù)學(xué)公式,所以我們測試了一個變體,在給出答案之前提示模型僅輸出數(shù)學(xué)公式。上圖顯示,對于GSM8K,僅方程式提示的幫助不大,這意味著GSM8K中問題的語義太具挑戰(zhàn)性,無法在沒有思維鏈自然語言推理步驟的情況下直接轉(zhuǎn)換成方程式。然而,對于只需要一步或兩步的問題數(shù)據(jù)集,我們發(fā)現(xiàn)僅方程式提示確實提高了性能,因為方程式可以從問題中輕易地得出。
Variable compute only
另一個直觀的想法是,思維鏈允許模型在更難的問題上花費更多的計算量(即中間token)。為了將可變計算量的效果與思維鏈推理分離,我們測試了一種配置,其中模型被提示僅輸出一系列等于解決問題所需方程中字符數(shù)量的點(. . .)。這個變體的性能與基線大致相同,這表明可變計算量本身并非思維鏈提示成功的原因,而且通過自然語言表達中間步驟似乎具有實用價值。
Chain of thought after answer
另一個可能的思維鏈提示優(yōu)勢可能僅僅是這樣的提示允許模型更好地訪問在預(yù)訓(xùn)練期間獲得的相關(guān)知識。因此,我們測試了一個替代配置,其中在給出答案之后再給出思維鏈提示,以分離模型是否真的依賴生成的思維鏈來給出最終答案。這種變體的性能與基線大致相同,這表明思維鏈中體現(xiàn)的順序推理對于激活知識之外的原因是有用的。
思維鏈的魯棒性
魯棒性研究
對示例的敏感性是提示方法的一個關(guān)鍵考慮因素——例如,改變少量示例的排列可能導(dǎo)致 GPT-3 在 SST-2 上的準(zhǔn)確率從接近隨機(54.3%)到接近最先進水平(93.4%)。在這最后一個小節(jié)中,我們評估了由不同注釋者編寫的思維鏈的魯棒性。除了以上使用 Annotator A 編寫的思維鏈的結(jié)果外,本文的另外兩位合作者(Annotator B 和 Annotator C)還獨立為相同的少量示例編寫了思維鏈。Annotator A 還編寫了另一個比原文更簡潔的思維鏈。
上圖顯示了 LaMDA 137B 在 GSM8K 和 MAWPS 上的這些結(jié)果。盡管不同思維鏈注釋之間存在差異,如同使用基于示例的提示時所預(yù)期的那樣,但所有的思維鏈提示都大幅度優(yōu)于標(biāo)準(zhǔn)基線。這一結(jié)果表明,成功使用思維鏈并不依賴于特定的語言風(fēng)格。
為了證實成功的思維鏈提示適用于其他示例集,我們還使用從 GSM8K 訓(xùn)練集中隨機抽取的三組八個示例進行實驗,這是一個獨立的來源(這個數(shù)據(jù)集中的示例已經(jīng)包括了類似思維鏈的推理步驟)。上圖顯示,這些提示的表現(xiàn)與我們手動編寫的示例相當(dāng),也大大優(yōu)于標(biāo)準(zhǔn)提示。
除了對注釋者、獨立編寫的思維鏈、不同示例和各種語言模型的魯棒性外,我們還發(fā)現(xiàn),對于算術(shù)推理的思維鏈提示在不同的示例順序和不同數(shù)量的示例方面也具有魯棒性。
四、常識推理與符號推理
除了算術(shù)推理任務(wù)外,本文還測試了思維鏈提示在常識推理與符號推理任務(wù)上的性能。對于常識推理任務(wù),我們選擇了五個涵蓋各種常識推理類型的數(shù)據(jù)集。「CSQA」提出了關(guān)于世界的常識問題,涉及復(fù)雜的語義,通常需要先驗知識。「StrategyQA」要求模型推斷出一個多跳策略來回答問題。我們從 BIG-bench 項目中選擇了兩個專門的評估集:「Date Understanding」,涉及從給定的上下文中推斷日期;「Sports Understanding」,涉及判斷與體育相關(guān)的句子是合理的還是不合理的。最后,「SayCan」數(shù)據(jù)集涉及將自然語言指令映射到離散集合中的一系列機器人動作。實驗結(jié)果如下:
常識推理
符號推理使用以下兩個toy任務(wù):
①最后字母拼接。這個任務(wù)要求模型將名稱中單詞的最后字母拼接起來(例如,“Amy Brown” → “yn”)。這是一個比首字母拼接更具挑戰(zhàn)性的版本,語言模型已經(jīng)可以在沒有思維鏈的情況下執(zhí)行第一個字母拼接。我們通過從名字人口普查數(shù)據(jù)([https://namecensus.com/)中隨機連接前一千個名字和姓氏來生成全名。 ②拋硬幣。這個任務(wù)要求模型回答在人們翻轉(zhuǎn)或不翻轉(zhuǎn)硬幣后,硬幣是否仍然是正面朝上的(例如,“一枚硬幣是正面朝上的。菲比翻轉(zhuǎn)了硬幣。奧斯瓦爾多沒有翻轉(zhuǎn)硬幣。硬幣還是正面朝上嗎?”→“不是”)。
由于這些符號推理任務(wù)的構(gòu)造是明確的,對于每個任務(wù),我們考慮一個在域內(nèi)測試集,其中的示例與訓(xùn)練/少量示例的步驟相同,以及一個域外(out-of-domain,OOD)測試集,其中評估示例比示例中的步驟多。對于最后字母拼接,模型只能看到兩個單詞的名稱示例,然后在具有3和4個單詞的名稱上執(zhí)行最后字母拼接。我們對拋硬幣任務(wù)中可能的翻轉(zhuǎn)次數(shù)也做同樣的處理。我們的實驗設(shè)置使用與前兩節(jié)相同的方法和模型。我們再次手動為每個任務(wù)的少量示例組合思維鏈。實驗結(jié)果如下:
符號推理
五、討論
我們已經(jīng)探討了思維鏈提示作為一種簡單機制來引導(dǎo)大型語言模型進行多步推理行為。首先,我們發(fā)現(xiàn)思維鏈提示在算術(shù)推理方面大大提高了性能,帶來的改進遠(yuǎn)比消融實驗更強大,而且對不同的注釋者、示例和語言模型具有魯棒性。接下來,常識推理實驗強調(diào)了思維鏈推理的語言特性使其具有普遍適用性。最后,我們展示了對于符號推理,思維鏈提示有助于在更長的序列長度上進行OOD泛化。在所有實驗中,思維鏈推理只是通過提示現(xiàn)成的語言模型來引導(dǎo),沒有對語言模型進行微調(diào)。
思維鏈推理屬于模型規(guī)模的涌現(xiàn)能力,這種能力已經(jīng)成為研究中的一種普遍主題。對于許多推理任務(wù),標(biāo)準(zhǔn)提示具有平坦的縮放曲線,思維鏈提示導(dǎo)致了陡峭的增長曲線。鏈?zhǔn)剿季S提示似乎擴大了大型語言模型可以成功執(zhí)行的任務(wù)集——換句話說,我們的工作強調(diào),標(biāo)準(zhǔn)提示只提供了大型語言模型能力的下限。這一觀察可能引發(fā)的問題比答案多——例如,隨著模型規(guī)模的進一步增加,我們能期望推理能力提高多少?還有哪些提示方法可能擴大語言模型可以解決的任務(wù)范圍?
至于局限性,我們首先說明,盡管思維鏈模擬了人類推理者的思維過程,但這并不能回答神經(jīng)網(wǎng)絡(luò)是否真正進行了“推理”,我們將這個問題留給未來研究。其次,雖然在少量示例設(shè)置中,用思維鏈?zhǔn)謩釉鰪娛纠某杀竞艿?,但這種注釋成本對于微調(diào)來說可能是高昂的(盡管這可以通過合成數(shù)據(jù)生成或零樣本泛化來克服)。第三,不能保證正確的推理路徑,這可能導(dǎo)致正確和錯誤的答案;改進語言模型的事實生成是未來工作的一個開放方向。最后,思維鏈推理僅在大型模型規(guī)模上的出現(xiàn)使其在實際應(yīng)用中的服務(wù)成本變得昂貴;進一步的研究可以探討如何在較小的模型中引入推理。
總之,思維鏈提示為解決多步推理任務(wù)提供了一種有效且簡單的方法,僅通過提示現(xiàn)成的語言模型就能實現(xiàn)。然而,這并不意味著思維鏈提示完美無缺,仍然存在一些局限性和未來需要解決的問題。例如,為了進一步提高推理能力,研究人員可能需要探討其他提示方法或改進現(xiàn)有的提示方法。此外,未來的研究可以關(guān)注如何在保持計算成本較低的情況下,引入推理能力。
通過本文的研究,我們可以更好地理解大型語言模型在推理任務(wù)上的性能,并為未來的研究和應(yīng)用奠定基礎(chǔ)。鏈?zhǔn)剿季S提示是一種重要的工具,可以幫助我們更好地利用現(xiàn)有的大型語言模型,在各種任務(wù)和場景中取得更好的結(jié)果。
審核編輯:劉清
-
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8406瀏覽量
132558 -
MDA
+關(guān)注
關(guān)注
0文章
13瀏覽量
12221 -
GPT
+關(guān)注
關(guān)注
0文章
352瀏覽量
15342 -
nlp
+關(guān)注
關(guān)注
1文章
488瀏覽量
22033
原文標(biāo)題:思維鏈Prompting促進大型語言模型的推理能力
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論