解鎖LLMs的“思考”能力:Chain-of-Thought(CoT) 技術推動複雜推理的新發展
1.簡介
Chain-of-Thought(CoT)是一種改進的Prompt技術,目的在於提升大模型LLMs在複雜推理任務上的表現,如算術推理(arithmetic reasoning)、常識推理(commonsense reasoning)、符號推理(symbolic reasoning)。
-
起源
:CoT技術的概念是在Google的論文“Chain-of-Thought Prompting Elicits Reasoning in Large Language Models”中被首次提出。 -
現狀
:隨著大語言模型(LLM)的發展,CoT技術已成為提高LLM在複雜推理任務中效能的重要手段。透過特定的提示(prompt)或訓練策略,可以引導模型生成詳細的推理過程,從而提高模型的準確性和可解釋性。 -
定義
:CoT技術指的是一種推理過程,其中模型在生成最終答案之前,先逐步推匯出一系列的中間步驟或子目標。這些中間步驟構成了一個“思維鏈”,最終引導模型得到正確的結果。 -
核心思想
:模仿人類的推理過程,即人們往往在解決問題時不是直接得出答案,而是透過一系列的思考、分析和推理步驟。 -
特點與優勢
- 中間步驟:模型在生成最終答案之前,會先產生一系列的中間推理步驟。
- 可解釋性:由於CoT提供了推理過程的可見性,因此它有助於提高模型決策的可解釋性。
- 邏輯推理:CoT可以幫助模型進行復雜的邏輯推理,尤其是在需要組合多個事實或資訊片段的問題上。
- 上下文利用:在CoT中,模型可以利用上下文資訊,透過逐步推理來解決問題,而不是僅僅依賴於直接的答案。
-
擴充技術自動思維鏈(Auto-CoT)
:這是一種更高階別的CoT技術,透過簡單的提示,促使模型自我思考,自動展示從設定方程到解方程的整個推理過程。這種技術可以在保證每個思維鏈正確性的同時,實現更精簡的提示詞設計。 -
思路
ICL的思路是在新測試樣本中加入示例(demonstration)來重構prompt。與ICL(In-Context Learning)有所不同,CoT對每個demonstration,會使用中間推理過程(intermediate reasoning steps)來重新構造demonstration,使模型在對新樣本預測時,先生成中間推理的思維鏈,再生成結果,目的是提升LLM在新樣本中的表現。
2.CoT方法
一般來說CoT會分為兩種:基於人工示例標註的Few-shot CoT和無人工示例標註的Zero-shot CoT。下面將逐一介紹。
1.1 Few-shot CoT
假設基於ICL的測試樣本輸入表示為$<input, demonstrations>$,那麼加入Few-shot CoT的測試樣本輸入,可表示為$<input, CoT>$。
1.1.1 CoT Prompt設計
我們知道了加入CoT的示例後,能提升LLM的表現。那麼我們應該如何構造或使用CoT?
投票式CoT
《Self-Consistency Improves Chain of Thought Reasoning in Language Models》
論文基於一個思想:一個複雜的推理任務,其可以有多種推理路徑(即解題思路),最終都能夠得到正確的答案。故Self-Consistency在解碼過程中,拋棄了greedy decoding的策略,而是使用取樣的方式,選擇生成不同的推理路徑,每個路徑對應一個最終答案。
具體做法為:
- 對於單一的測試資料,透過多次的解碼取樣,會生成多條推理路徑和答案。
- 基於投票的策略,選擇最一致的答案。
實驗表明,對於同一問題生成更多的推理鏈以供投票往往能取得更好的效果。當推理鏈數量足夠多時,這種方法效果能夠勝過使用greedy decoding的CoT方法。
《On the advance of making language models better reasoners》
論文在Self-Consistency的基礎上,進一步做了最佳化。
- 1.Diverse Prompts
- 對於每個測試問題,構造了$M_1$種不同的prompt(即由不同demonstration構造的prompt)
- 對於每種不同的prompt,讓LLM生成$M_2$條推理路徑。
- 則對於同一個測試問題,共生成了$M_1*M_2$條結果
- 2.Verifier
- 訓練了一個Verifier,用於判斷當前推理路徑得出的答案正確與否。
- 關於樣本構建,使用LLM生成的推理路徑和答案,與grandtruth進行對比,一致的即視為正樣本,否則負樣本。
- 3.Vote
- 訓練好Verifier後,對與一個測試問題與LLM生成的多條推理路徑,Verifier進行二元判別
- 結合判別結果和投票結果,得出模型的最終預測。
實驗結果顯示,本論文的方法相對基於Greedy Decode和Self-Consistency能得到更優的效果。
使用複雜的CoT
《Complexity-based prompting for multi-step reasoning》
面對這麼多可選的CoT,簡單的CoT示例和複雜的CoT示例,對新的樣本推理結果會不會產生影響?答案是Yes。
論文探討了一個問題,在包含簡單推理路徑的demonstrations和複雜推理路徑的demonstrations下,哪個效果會表現較好?(這裡的簡單和複雜是指 推理鏈/推理步驟的長度)
本論文繼承了Self-Consistency的思想,具體方法:
- 1.對於同一個測試問題,使用功能LLM(GPT-3)生成$N$條不同的推理鏈+答案;
- 2.對於生成的推理鏈+答案,按照推理鏈的長度進行倒序排序;
- 3.保留TopK條推理鏈+答案,並使用投票的方式,選取最終預測。
實驗結果表明,本論文的方法效果優於以下方法: (1)人工構建Cot、(2)random Cot、(2)Complex CoT(資料集中最長的多個思維鏈作為demonstrations)。
自動構建CoT
《Automatic chain of thought prompting in large language models》
上面提到的方法是基於人工構造CoT,那我們能否讓模型自己來生成CoT?本論文就提供了這樣一種自動生成CoT的思路。
本論文提到的Manual-CoT,可以等同於Few-shot CoT來理解。
由於Zero-Shot-CoT方法存在不穩定性,而Manual-CoT方法需要大量人工成本投入。作者提出了一種基於Auto-CoT的方法,自動構建包含問題和推理鏈的說明樣例(demonstrations)。
整個過程分了兩個階段:
1.question cluster: 目的是將資料集中的question劃分到不同簇中。
- 使用Sentence-Bert計算每個question的向量表示;
- 使用k-means方法將question記性簇劃分;
- 最後對每個簇中的question,根據距離中心點距離,升序排序。
2.demostration sampling: 目的是從每個簇中選取一個代表性的question,基於LLMs,使用Zero-Shot-CoT生成推理鏈。
-
對於每一個簇$i$裡的每一個問題$q{(i)}_j$,使用Zero-Shot-CoT的方法,將$[Q:q_j,A:[P]]$(其中$[P]$表示"Let's think step by step")輸入到LLMs,LLMs生成該問題的推理鏈$r{(i)}_j$和答案$a_j$;
-
若問題$q{(i)}_j$不超過60個tokens,且推理鏈$r_j$不超過5個推理步驟,則將問題+推理鏈+答案,加入到demostrations列表中:$[Q:q{(i)}_j,A:r_j。a^{(i)}_j]$;
-
遍歷完所有簇,將得到k個demostrations,將其拼接上測試question,構造成新的Prompt,輸入LLMs便可得到生成結果。
值得一提的是,Auto-CoT在多個開源推理任務的資料集上,效果與Manual-CoT相當,甚至某些任務表現得更好。
CoT中示例順序的影響
《Chain of thought prompting elicits reasoning in large language models》
儘管CoT是ICL的一種特殊形式,但是與ICL有所不同的是,CoT中demonstrations的排序對其在新測試樣本中的生成結果影響較小,論文對demonstrations進行重排序,在多數推理任務上僅導致小於2%的效能變化。(demonstrations順序對ICL影響較大)
1.1.2 CoT的增強策略
COT(Chain-of-Thought)的增強策略主要包括以下幾種:
-
結合驗證和細化:
- 思維鏈推理過程中可能會出現誤差,產生錯誤的推理步驟。為了減少這種現象,可以結合驗證來獲取反饋,並根據反饋改進推理過程。這與人類的反思過程類似。
- 例如,VerifyCoT設計了一種自然程式(NaturalProgram),允許模型產生精確的推理步驟,每個後續步驟都嚴格基於之前的步驟。
-
問題分解:
- COT透過將多步驟推理問題分解成多箇中間步驟,分配給更多的計算量,生成更多的token,再進行求解。這種策略有助於更好地推理問題的每個部分。
-
利用外部知識:
- 在某些情況下,為了促進知識密集型任務,可以結合外部知識對不確定的例子進行重新推理,從而減少再分析中的事實錯誤。
-
投票排序:
- DIVERSE等策略利用投票機制消除錯誤答案,然後對每個推理步驟進行獨立的細粒度驗證,從而提高推理的準確性。
-
提高效率:
- 透過最佳化模型結構和演算法,減少不必要的計算量,提高推理的效率。
-
偏差增強一致性訓練(BCT):
- 針對COT可能產生的系統性偏見問題,引入了BCT無監督微調方案。這種方法可以訓練模型在包含和不包含偏見特徵的提示下給出一致的推理,減少偏見推理。實驗表明,BCT可以顯著降低偏差推理率,提高模型解釋的可信度。
-
Zero-shot-COT:
- 引入了一種簡單的零樣本提示方法,透過在問題的結尾附加“Let's think step by step”等詞語,使大語言模型能夠生成一個回答問題的思維鏈。這種方法無需額外的訓練資料,可以直接應用於各種推理任務。
1.2 Zero-shot CoT
與Few-shot CoT不同,Zero-shot CoT並不需要人為構造demonstrations,只需要在prompt中加入一個特定的指令,即可驅動LLMs以思維鏈的方式生成結果。
當然這種不需要人工構造demonstrations的方式,效果相對Few-shot CoT會表現稍微差一點點。但是相對Zero-shot和Few-shot的方法而言,Zero-shot CoT在複雜任務推理上卻能帶來巨大的效果提升。
《Large language models are zero-shot reasoners》
論文首先提出了Zero-shot CoT的方法,整個流程包含兩部分:
- 1.Reasoning Extraction
- 使用一個特定的"reasoning" prompt,是語言模型LLM生成原始問題的思維鏈,如"Let's think step by step."(讓我們一步步來思考)
- 2.Answer Extraction
- 基於第一步的結果,新增一個"answer" prompt,要求LLM生成正確的結果。
- 這一個步驟中,LLM的輸入格式為:quesiton + "reasoning" prompt + result(CoT) + "answer" prompt,輸出為:result(answer)
值得一提的是,論文同時發現了,當模型LLM變得越來越大,對於使用Zero-shot的結果帶來的增益不大,但是對使用Zero-shot CoT的結果帶來的增益較大。
《Scaling Instruction-Finetuned Language Models》
既然在上一篇論文中,已經發現了LLM存在Zero-shot CoT的能力,那如果事先對LLM進行基於CoT的instruction tuning,那模型使用Zero-shot CoT方式在對unseen樣本進行預測時,效果會不會更好?本論文給出了肯定的答案。
論文探索了以下可能影響LLM在unseen task上表現的因素:
- 1.任務數量
- 2.模型大小
- 3.指令微調(instruction tuning)
論文微調資料集包含了1836種指令任務,473個資料集和146種任務型別構成,資料集中包含了9個人工標註的CoT資料集。同時保留一個沒出現過的held-out資料集作為模型評估資料集。
使用的模型是PaLM,而經過instruction tuning的模型,稱為FlanPaLM(Finetuned Language PaLM)。
得到了以下結論:
- 1.增加微調任務數量,可以提高LLM表現。但任務數量超過一定值後,不管模型尺寸是否增大,受益都不大。推測原因有:
- (1) 額外的任務多樣化不足,沒有為LLM提供新的知識;
- (2) 多工指令微調只是更好地激發了模型從預訓練任務中學習到知識的表達能力,而微調任務超過一定值後,對錶達能力沒有太大幫助。
- 2.微調和未微調的PaLM,從8B增大到540B,在unseen任務上效果越來越好;
- 3.微調資料與CoT資料的關係
- (1) 微調資料中刪除CoT資料,會降低PaLM的推理能力
- (2) 微調資料包含CoT資料,會全面提高所有評測任務的表現
3.總結
對於大模型LLM湧現的CoT能力,業界目前的共識是:當模型引數超過100B後,在複雜推理任務中使用CoT是能帶來增益的;而當模型小於這個尺寸,CoT並不會帶來效果增益。
還記得在Pretrain+Fine-tuning時代下,對於複雜數學推理任務,如MultiArith、GSM8K下,效果還是不太理想,而短短几年時間,LLM+CoT的模式已經大大提升了該領域的解決能力。隨著LLM的繼續發展,未來必定會發現更多LLM隱藏的能力和使用方法,讓我們拭目以待。
4.Reference
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
Large language models are zero-shot reasoners
Scaling Instruction-Finetuned Language Models
Self-Consistency Improves Chain of Thought Reasoning in Language Models
On the advance of making language models better reasoners
Chain of thought prompting elicits reasoning in large language models
Complexity-based prompting for multi-step reasoning
Chain of thought prompting elicits reasoning in large language models
更多優質內容請關注公號:汀丶人工智慧;會提供一些相關的資源和優質文章,免費獲取閱讀。