大語言模型(Large Language Model, LLM)的性能近年來得到了顯著提升,尤其是在處理復雜推理任務、回答問題和生成自然語言的場景中。
目前國內外的大模型也是越來越卷,大模型廠商紛紛把自己的模型,支持處理的最大 tokens 數量值,作為一個亮點來大肆宣傳。
這些 tokens 數量的最大值,背后有一個關鍵的概念開始受到研究者和工程師的關注,這就是思維鏈長度(Chain of Thought Length, CoT Length)。
什么是思維鏈長度
思維鏈長度是指模型在完成一項任務時,能夠保持連貫的推理和邏輯鏈條的最大深度。它反映了模型在推理過程中能夠追蹤的邏輯步驟或思維層次的深淺程度。思維鏈長度通常決定了模型能否處理多步驟推理問題,尤其是在涉及數學計算、邏輯推理或復雜知識整合的任務中。
關鍵點:
- 思維鏈長度不是簡單的參數,而是模型在生成過程中展現的能力。
- 這通常通過對模型進行思維鏈提示(Prompting with Chain of Thought)或通過精心設計的任務評估。
例如:
假設一個模型需要回答問題 在一個盒子里有 5 個蘋果,你拿走了 3 個蘋果,現在盒子里還有幾個蘋果?。如果模型能夠逐步拆解問題:
- 盒子里最初有 5 個蘋果。
- 你拿走了 3 個蘋果。
- 剩下的蘋果數量是
5 - 3 = 2。
這個過程可以被描述為 3 步思維鏈。如果模型只能回答最后一步結果而沒有推理過程,思維鏈長度會顯得不足。
思維鏈長度對大語言模型的意義
推理能力的衡量標準
思維鏈長度直接反映了模型在處理復雜任務時的推理深度。短的思維鏈可能適用于簡單問題,但對于需要多步驟推理的任務(例如解謎、程序生成、復雜問答),較長的思維鏈是不可或缺的。
模型表現的限制和突破
對于許多應用場景,思維鏈長度是模型性能的上限。例如:
- 在法律領域,一個模型需要引用多個條款并推導出最終結論。
- 在醫學領域,模型需要整合患者癥狀、實驗室結果和醫學知識來診斷病因。
在這些情境下,短思維鏈的模型可能無法覆蓋所有推理步驟,導致結論不準確或不完整。
用戶體驗與信任
用戶通常期望語言模型能夠解釋其結論的來源。較長的思維鏈允許模型展示其推理過程,從而增加用戶對模型輸出的信任。例如,教育領域的學生希望看到模型如何解答數學問題,而不僅僅是結果。
如何量化思維鏈長度
思維鏈長度通常通過以下方法測量:
-
基于任務的推理深度評估:
創建一組需要逐步推理的任務,分析模型能夠正確完成的最大步驟數。例如:- 問題 A 需要 3 步推理,模型正確。
- 問題 B 需要 5 步推理,模型失敗。
此時可以判斷模型的思維鏈長度約為 3 至 5。
-
思維鏈提示(Chain of Thought Prompting):
為模型提供顯式的提示,以鼓勵其展現推理過程。例如:Prompt:
請逐步解釋為什么以下結論是正確的:... -
對比性能的變化:
比較模型在直接回答問題和逐步推理問題時的表現差異,差異的大小通常與思維鏈長度相關。
實驗案例:數學推理任務
我們設計了一個簡單的實驗來說明思維鏈長度的作用。
問題:
如果一個農場有 20 只雞和 15 頭牛,每只雞每天下 1 個蛋,每頭牛每天產 2 升牛奶。那么,5 天內雞蛋的總數量和牛奶的總數量是多少?
代碼示例:
from transformers import pipeline
def chain_of_thought_reasoning():
reasoning_pipeline = pipeline("text-generation", model="gpt-3.5-turbo")
prompt = (
"請逐步推導以下問題:"
"如果一個農場有 20 只雞和 15 頭牛,"
"每只雞每天下 1 個蛋,每頭牛每天產 2 升牛奶。"
"那么,5 天內雞蛋的總數量和牛奶的總數量是多少?"
)
result = reasoning_pipeline(prompt, max_length=200, temperature=0.5)
return result
output = chain_of_thought_reasoning()
print(output)
模型輸出:
1. 每只雞每天下 1 個蛋,20 只雞每天下 20 個蛋。
2. 15 頭牛每天產 15 x 2 = 30 升牛奶。
3. 5 天內,雞蛋的總數是 20 x 5 = 100。
4. 5 天內,牛奶的總數是 30 x 5 = 150。
結論:雞蛋的總數量是 100 個,牛奶的總數量是 150 升。
在這一例子中,模型完成了 4 步推理,展示了其思維鏈長度的表現。
優化模型思維鏈長度的策略
提示工程
通過設計更清晰、更詳細的提示,可以有效地延長模型的思維鏈。例如,在提示中明確要求模型逐步推理,并提供示例:
示例問題:
"小明有 10 元錢,買了 3 個蘋果,每個蘋果 2 元。他還有多少錢?"
逐步推導:
1. 每個蘋果 2 元,3 個蘋果共花費 3 x 2 = 6 元。
2. 小明原有 10 元,減去 6 元后,還剩 10 - 6 = 4 元。
請按照類似的步驟解決以下問題:...
模型架構改進
增加模型的上下文長度或對中間推理過程進行顯式編碼。例如,Transformer 架構的改進版本可以更有效地捕捉長序列依賴。
監督學習與強化學習
通過加入更多分步推理的數據來訓練模型,使其更善于生成長思維鏈。同時,結合強化學習(如人類反饋強化學習,RLHF)來優化模型的逐步推理能力。
真實案例研究
醫學診斷
在醫學診斷中,醫生通常需要逐步推理病因。例如:
- 癥狀 A 和 B 表明可能存在疾病 X 或 Y。
- 實驗室結果 C 排除了疾病 X。
- 根據癥狀 B 和結果 C,可以推斷為疾病 Y。
如果大語言模型可以模仿這種逐步推理過程,它就能夠輔助醫生進行更準確的診斷。
法律推理
處理復雜法律案件時,模型需要結合不同條款并推導出合法性結論。例如,基于《合同法》第 A 條和《民法典》第 B 條,逐步推理得出案件的最終裁決。