Motivation
雖然語言建模方面,NLP模型表現很好,但是在邏輯推理和數值計算領域(稱其為第二類任務,system-2 task),即使是目前最大的模型也難以處理某些推理任務,如數學單詞問題、符號操作和常識性推理。
本文探討了語言模型產生一個連貫的思維鏈的能力——一系列的短句子,模仿一個人在回答一個問題時可能擁有的推理過程。
Introduction
在本文中,我們探索思維鏈提示(chain of thought prompting)作為一種提高語言模型執行推理任務的能力的方法。直覺是,一個思維鏈允許語言模型將一個多步驟的問題分解為可以單獨解決的中間步驟,思維鏈提示是簡單的,在標准的少鏡頭prompt不足的情況下,可以在各種推理任務中提高性能。至關重要的是,我們的實驗表明,成功的思維鏈提示是模型規模的一個突發屬性——也就是說,思維鏈提示的好處只有在足夠的模型規模(大約100B個參數)才會實現。
Chain of Thought
在解決第二類任務時,要考慮自己的思維過程,比如多步數學單詞問題,通常是將問題分解為中間步驟,並在給出最終答案之前解決每個步驟。本文的目標是賦予語言模型產生一個類似的思維鏈的能力——一系列連貫的短句子,從而得出一個推理問題的答案。作者證明,如果在范例中提供了思維鏈推理的演示,那么足夠大的語言模型可以生成思維鏈。
作為促進語言模型中推理的一種方法,思維鏈提示有幾個吸引人的特性:
- 首先,產生一個思想鏈,原則上,允許模型將多步驟的問題分解為中間步驟,這意味着可以將額外的計算分配給需要更多推理步驟的問題。
- 第二,生成的思想鏈提供了一個可解釋的窗口模型的行為,表明它如何可能到達一個特定的答案和提供機會調試推理路徑出了問題(盡管完全描述模型的計算支持一個答案仍然是一個懸而未決的問題)。
- 第三,思維鏈推理可以用於一系列任務,包括數學單詞問題、符號操作和常識推理,並且適用於(至少在原則上)適用於人類可以通過語言解決的任何任務。
- 最后,通過將思維序列鏈的示例納入小樣本,在足夠大的現成的語言模型中,只需將思維序列鏈的示例,就可以簡單地引出思維鏈推理。
實驗表明,在標准的少鏡頭提示不足的幾個數據集上,思維鏈提示顯著提高了這些數據集的性能。
Arithmetic Reasoning
算術推理。
實驗設置
- 數據集
- 6個數據集:(1) SingleOp (Roy et al., 2015), (2) SingleE (Koncel-Kedziorski et al., 2015), (3) AddSub (Hosseini et al., 2014), (4)ASDiv (Miao et al., 2020), (5) MultiArith (Roy & Roth, 2015), and (6) GSM8K
- standard prompting。
- 作為一種基線方法,我們考慮了由Brown等人(2020)推廣的標准少鏡頭提示,在該模型中,在輸出測試時間示例的預測之前,給出輸入-輸出對的上下文范例。樣本在被輸入模型之前被格式化為問題和答案,模型直接給出答案。
- Chain of thought prompting
- proposed model,在少鏡頭提示中增加每個范例,並考慮一個相關的答案。
為了研究這種形式的思維鏈提示是否能夠成功地在廣泛的數學單詞問題中引出成功的推理,我們對所有6個數據集使用了這一組包含8個思維鏈樣本的單一集。對於每個實驗,我們報告了5個隨機種子的平均結果,其中每個種子都有不同的隨機打亂的樣本順序。
實驗結果
- 添加思維鏈提示只會略微提高較大模型的准確性。
- 對於兩個更具挑戰性的數據集(MultiArith and GSM8K),思維提示鏈的影響變得顯著。
- 對於MultiArith and GSM8K,增加標准提示的模型規模並不能提高這些數據集的性能——縮放曲線大多是平坦的。然而,當添加思維鏈提示時,模型現在能夠實現隨着模型規模而提高的性能。值得注意的是,只有在∼100B參數的規模下,思維鏈提示才比標准提示更好;小規模的模型產生了流暢但不合邏輯的思維鏈,導致性能低於標准提示。
- 使用外部計算器是一種改進思想提示鏈的補充方法。我們使用Python程序作為計算器來評估生成的思想鏈中的所有方程;當一個思想鏈中存在多個方程時,我們通過字符串匹配將外部計算器的結果從一個方程傳播到下面的方程。我們發現思維鏈prompting在GSM8K上的性能從14.8%提高到19.5%。
消融實驗
探究問題:
- 為什么chain of thought prompting 有用?
- 能否通過類似的其他prompt方法提高?
如下三個設置:
- Equation Only。
- 在給出答案之前,系統會提示該模型只輸出一個數學方程。
- 雖然僅方程提示對縮放有幫助的四個簡單數據集有幫助(結果如附錄中的表11所示),但對於兩個具有平坦縮放曲線的具有挑戰性的數據集,僅方程提示沒有幫助
- 這個結果表明,這些數據集中的問題的語義太具有挑戰性了,不能直接轉化為一個沒有中間推理步驟提供的思維鏈的方程。
- Variable Compute Only。
- 為了將變量計算的影響與思維推理鏈分離開來,在該配置中,提示模型只輸出一系列點(…),數量等於解決問題所需的字符數。
- 結果與baseline基本相同
- 模型自身的變量計算並不是chain of thought prompting成功的原因,通過自然語言表達中間步驟似乎有有意義的效用
- Chain of thought after answer
- 我們測試了另一種配置,其中思維提示鏈只在答案之后給出,隔離了模型是否實際上依賴於產生的思維鏈來給出最終的答案。
- 表現與baseline基本相同。
- 體現在思維鏈中的順序推理是有用的,而不僅僅是激活知識的原因。
Robustness of Chain of Thought
通過更換標注chain of thought prompting的標注者,和隨機產生三組不同的8 exemplars組合,作者發現效果都比標准少樣本效果要好。
Symbolic Reasoning
符號推理
符號推理任務
- Last letter concatenation
- Reverse List
- Coin flip
作者將每個任務的數據集分為一個in domain 和兩個out-of-domain,其中out-of-domain比in-domain在推理步驟上更多。
實驗結果
- 小模型仍然fail
- 大模型(137B)在三個任務上表現都不錯