AI線上求鼓勵?這些人一句話讓GPT-3算術準確率提升61%

編輯:張倩、小舟

GPT-3 對一些問題的回答令人大跌眼鏡,但它可能只是想要一句「鼓勵」。

「一個玩雜耍的人總共有 16 個球,其中一半是高爾夫球,高爾夫球中又有一半是藍色的球,請問藍球總共有多少個?」

對於一個小學生來說,這是一道再簡單不過的數學題。但看似無所不能的 GPT-3 卻被這道題難住了。

如果你輸入這個問題之後,直接向 GPT-3 發問:「問題的答案(阿拉伯數字)是:__?」它會「不假思索」地給出一個錯誤答案:8。

GPT-3:你別說準不準,你就說快不快吧。


怎麼能讓 GPT-3 稍微「動動腦子」呢?想想我們上學的時候老師是怎麼做的。

一般來說,優秀的老師會在我們做錯題時鼓勵我們「再回去想想」,或者幫我們理清解題步驟。同樣的,我們也可以這麼對 GPT-3。

東京大學和谷歌大腦的一項聯合研究表明,只要在答案前加一句「 Let’s think step by step 」,GPT-3 就能給出上述問題的正確答案,而且它還自己理清了解題步驟。

在經典的 MutiArith 資料集上,這句魔法一樣的「咒語」將 GPT-3 在零樣本場景下解數學題的準確性從 17.7% 提升到了 78.7%。

重要的是,這句「咒語」的應用範圍還非常廣泛,不僅可以解數學題,還能做各種邏輯推理。

當然,在深度學習領域,這種「咒語」有個統一的名字——「prompt」。

prompt 和 prompt 工程是近年來非常火的話題,它可以幫助我們控制模型的預測輸出。合適的 prompt 對於模型的效果至關重要,大量研究表明,prompt 的微小差別,可能會造成效果的巨大差異[1]。比如在下面這個衛星圖片識別的例子中,我們僅添加一個「 satellite(衛星)」,就能把模型的準確率提升 13%+。

圖源:《 Learning to Prompt for Vision-Language Models 》

不過這一次,東京大學和谷歌大腦的研究者又把 prompt 的妙用推到了新的高度。

論文連結:https://arxiv.org/pdf/2205.11916.pdf

佐治亞理工學院 ML 博士 Aran Komatsuzaki 開玩笑說,這說明了「『Let’s think step by step』is all you need」。

同時,這也提醒我們,大模型的能力似乎還沒有被完全挖掘出來。

不過,對於「Let’s think step by step」為何如此奏效,谷歌大腦研究科學家 Denny Zhou 指出,這些參與測試的 GPT-3 模型(Text-davinci-002 (175B) 或其他 002 模型或 instruct GPT)可能已經用「let’s think step by step. …..」進行過微調。

對此,來自谷歌的論文作者 Shane Gu 表示,instruct GPT 部分確實幫助很大,但我們也能在原始 GPT 上看到很大的提升。

以下是論文細節

以下是論文細節。

研究概覽

大型預訓練語言模型被廣泛應用於 NLP 的很多子領域。它們具有優秀的少樣本甚至零樣本學習能力,可以藉助幾個示例(少樣本)或描述任務的一些說明(零樣本)簡單地給模型施加條件來適應很多工。這種調節語言模型的方法被稱為「prompting」,手工 / 自動設計 prompt 已經成為 NLP 領域的熱門話題。

與 LLM 在直觀的單步驟 system-1 任務(帶有特定於任務的少樣本或零樣本 prompting)中的出色表現相比,即使是 100B 或更多參數的語言模型在需要緩慢和多步驟推理的 system-2 任務中也表現不佳。(system-1 和 system-2 是心理學家 Keith Stanovich 和 Richard West 率先提出的兩種認知過程,前者對應快思考,是由直覺引導的,無意識且快速,比如看到一個數學題一下就反應出是個乘法式;後者對應慢思考,用於解決具有複雜邏輯性的問題,比如解數學題。)

為了解決大模型在 system-2 任務中表現不佳的問題,Wei et al. [2022]、Wang et al. [2022]提出了 chain of thought prompting (CoT),它為 LLM 提供了 step-by-step 的推理示例,而不是標準問答示例,區別如下圖所示。

圖源:《 Chain of Thought Prompting Elicits Reasoning in Large Language Models》

CoT 的思維鏈演示有助於模型生成一個推理路徑,該路徑將複雜的推理分解為多個簡單的步驟。值得注意的是,有了 CoT 的加持,模型的推理性能更加滿足 scaling law,並隨著語言模型的規模增長而增長。例如,當與 540B 參數的 PaLM 模型相結合時,與標準少樣本 prompting 相比,chain of thought prompting 在多個基準推理任務上顯著提升了性能(如在 GSM8K 上從 17.9% 提升到 58.1%)。

雖然 CoT prompting 的成功和許多其他特定於任務的 prompting 工作經常被歸功於 LLM 的少樣本學習能力,但本文作者表明,通過添加一個簡單的 prompt,即「Let’s think step by step」,LLM 就能成為一個優秀的零樣本推理器,它會引導模型在給出答案之前展開一步一步的思考(如圖 1 所示)。

雖然看起來非常簡單,但作者提出的 Zero-shot-CoT 成功地以零樣本的方式生成了可行的推理路徑,而且最後得到了正確答案,而標準的零樣本方法(圖 1c)並沒有給出正確答案。重要的是,這個 Zero-shot-CoT 非常通用,且不針對具體任務,這不同於之前大多數以示例(少樣本)或模板(零樣本)的形式進行、特定於某個任務的 prompt 工程。它可以在包括算術、符號推理、常識推理、策略 QA 在內的各種邏輯推理任務中促使模型逐步回答問題,無需為每個任務專門修改 prompt。

如圖 1 所示,研究者將 Zero-shot-CoT 與其他 prompting 基線進行了比較。雖然 Zero-shot-CoT 的表現不如有著精心設計的、針對特定任務的 step-by-step 示例的 Few-shot-CoT,但與零樣本基線相比,Zero-shot-CoT 實現了巨大的分數提升(在 MultiArith 上從 17.7% 提升到 78.7% ,在 GSM8K 上從 10.4% 提升到 40.7%)。重要的是,與少樣本 CoT 基線相比,使用研究者設計的單個固定 prompt,零樣本 LLM 會擁有更優秀的 scaling 曲線。

此外,研究者還發現,Few-shot-CoT 除了需要多步驟推理 prompt 的手工工程之外,當 prompt 示例問題類型和任務問題類型不匹配時,它們的表現會下降,這表明它們對逐任務 prompt 設計的敏感性很高。相比之下,研究者提出的單個 prompt 通用性很強,適用於多種推理任務,這表明 LLM 的零樣本基礎能力還沒有被完全開發出來,比如更高層次的廣泛認知能力(如通用邏輯推理)。

研究細節

Zero-shot-CoT 是一個基於零樣本模板的 prompting 方法,用於思維鏈推理。它不同於最初的思維鏈 prompting [Wei et al., 2022],因為它不需要 step-by-step 少樣本示例,它也不同於之前的大多數模板 prompting,因為它本質上與任務無關,可以通過單一模板在廣泛的任務範圍內進行 multi-hop 推理。該方法的核心思想非常簡單,如上圖 1 所示:添加「Let’s think step by step」,或者類似的文字(如下表 5 所示),然後就能讓模型進行一步一步的推理。

兩階段 prompting

兩階段 prompting

Zero-shot-CoT 在概念上很簡單,其微妙之處在於它使用了兩次 prompting,如圖 2 所示。這是因為零樣本基線(圖 1 左下角)已經以「The answer is」的形式使用了 prompting,以正確的格式提取答案。少樣本 prompting(standard 或 CoT)通過顯式地設計以這種格式結尾(見圖 1 右上角)的少樣本示例答案來避免對此類答案提取 prompting 的需要。總而言之,Few-shot-CoT [Wei et al., 2022] 需要仔細地人為設計一些 prompt 示例,每個任務都有特定的答案格式,而 Zero-shot-CoT 不需要這樣的工程,但需要兩次 promp。

第一個 prompt:推理提取。在這一步中,首先使用一個簡單的模板「Q: [X]. A: [Z]」將輸入問題 x 修改為一個 prompt,其中,[X]是 x 的一個輸入位置,[T] 是手工觸發的句子 t 的位置,它將提取一個思維鏈來回答問題 X。例如,如果我們使用「Let’s think step by step」作為觸發句,prompt 就是「Q: [X]. A: Let’s think step by step.」然後將被加工成 prompt 的文字 x’輸入到語言模型中,生成後續句子 z。此處可以使用任何解碼策略,但為了簡單起見,研究者在整個論文中都使用了貪婪解碼。

第二個 prompt:答案提取。在第二步中,使用生成的句子 z 和被加工成 prompt 的句子 x’從語言模型中提取最終答案。具體來說,我們簡單地將三個元素連接起來,如 [X’] [Z] [A]:[X’] 表示第一個 prompt x’, [Z]表示第一步生成的句子,[A]表示用來提取答案的觸發句。這一步的 prompt 是自增強的,因為 prompt 包含同一個語言模型生成的句子 z。在實驗中,研究者會根據答案格式的不同使用不同的答案觸發句。例如,他們在多項選擇 QA 中使用「Therefore, among A through E, the answer is」,在需要數字答案的數學問題中使用「Therefore, the answer (arabic numerals) is」。最後,將被加工成 prompt 的文字作為輸入饋入語言模型,生成句子ˆy 並解析最終答案。

實驗結果

該研究在四類推理任務的 12 個資料集上評估了新方法,包括算術、常識、符號和其他邏輯推理任務。

該研究對下表所示的 13 種模型進行了實驗:

該研究對下表所示的 13 種模型進行了實驗

Zero-shot-CoT vs Zero-shot

下表 1 比較了每個資料集上新方法 (Zero-shot-CoT) 和標準零樣本 prompting 方法(Zero-shot)的準確性。Zero-shot-CoT 在四種算術推理任務(MultiArith、GSM8K、AQUA、SVAMP)、所有符號推理任務和所有邏輯推理任務上都顯著優於 Zero-shot 方法。

該研究還將 Zero-shot-CoT 方法與其他基線進行了比較,在兩個算術推理基準(MultiArith 和 GSM8K)上的結果如下表 2 所示。標準 prompting(第一部分)和 thought prompting(第二部分)之間的巨大差距表明,如果不使用多步驟推理,這些任務是非常困難的。

Zero-shot-CoT 自然不如 Few-shot-CoT,但它甚至在每個任務 8 個樣本的情況下都能大大優於標準的 few-shot prompting 方法 。對於 GSM8K,使用 Instruct GPT-3 (175B) 的 Zero-shot-CoT 也優於微調 GPT-3 和使用大型模型 (PaLM, 540B) 的標準 few-shot prompting 方法(上表 2 第三部分)。

然後,該研究進一步實驗來回答如下幾個問題。

模型大小對於零樣本推理是否重要?為了回答這個問題,該研究比較了各種語言模型在 MultiArith 資料集上的性能,結果如下表 3 所示。

如果沒有思維鏈推理(chain of thought reasoning),性能不會隨著模型規模的增加而增加,或者只是緩慢地增加,增長曲線大多是平坦的。相比之下,隨著模型規模變大,性能隨著思維鏈推理而迅速提升。當模型規模較小時,思維鏈推理無效。這一結果與 Wei et al. [2022]的 few-shot 實驗結果一致。此外,研究者還手動查看了生成的思維鏈的質量,大模型有著更好的推理效果。

prompt 的選擇對 Zero-shot-CoT 方法有什麼影響?該研究針對輸入 prompt 驗證了 Zero-shot-CoT 的穩健性。表 5 總結了使用多個不同句子模板的性能。結果表明,如果以「鼓勵」思維鏈推理的方式編寫文字,性能就會得到提升。但是,根據句子的不同,準確性的差異很大。在這個實驗中,「Let’s think step by step」達到最佳效果。有趣的是,研究者發現不同模板鼓勵模型推理的方式截然不同。

prompt 的選擇對 Few-shot-CoT 有什麼影響呢?表 6 顯示了 Few-shot-CoT 在使用來自不同資料集的樣本時的性能。令人驚訝的是,來自不同域但具有相同答案格式的思維鏈樣本提供了相對於 Zero-shot 的顯著性能提升。相比之下,當使用具有不同答案類型的樣本時,性能增益變少,這表明 LLM 主要利用 few-shot 樣本來推斷重複格式,而不是任務語境。儘管如此,這兩種情況的結果都比 Zero-shot-CoT 差,這說明特定任務樣本工程對 Few-shot-CoT 是至關重要的。

參考連結:

[1] https://zhuanlan.zhihu.com/p/399295895?utm_source=wechat_session&utm_medium=social&utm_oi=56560353017856&utm_campaign=shareopn