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