0 思考越多效果越好
- 可以把算力投入在training的時候,也可以投入在testing上面
- 連起來的線表示表現是差不多的,越高分(越右上方)越好
- 同樣-1000分,可以訓練時候用力較少,test的時候多用點算力
- 但是training的數量級比testing大多了
1? Chain of thought
- reasoning先列出解題過程再給答案
- 這件事和CoT是非常相似的
- 只不過reasoning的更長,可以看作“long CoT"
- CoT最早是few shot CoT,需要給CoT范例
- 后來直接給一句let's think step by step即可
- 過去需要給LLM更精確的prmopt,讓他思考
- ?把思考的方式的流程完整給他
- 如果只讓模型think step by step,模型可能不會
- 需要用人類的知識和語言告訴模型怎么think step by step
2 給模型推理工作流程
- 強迫語言模型回答一個問題回答幾千幾萬次
- 讓語言模不斷解同一問題
- 橫軸是解題次數
- 縱軸是只要有正確答案就當作對的
- 強的語言模型,在嘗試比較少的情況下就能得到正確答案
Self-Consistency Improves Chain of Thought Reasoning in Language Models
Chain-of-Thought Reasoning Without Prompting
- 怎么知道哪一次是正確的呢?
- 第一種:看哪一種答案生成的次數最多
- 第二種,讓模型計算產生答案的信息
- 當然,需要在prompt里說明, 把答案寫在<answer></answer>里面
2.1 Best of N
Training Verifiers to Solve Math Word Problems
- 訓練一個verifier模型
- 給答案和輸入問題,判斷答案是否正確
- 也可以直接用一個語言模型當作verifier
- 更好的方法給verifier其加以訓練
- 問題丟給語言模型,知道什么時候答對什么時候輸出錯誤,訓練一個專門驗證的模型
另外一種方法是串行:先解第一次,根據第一次的解法解第二次。。。
- 兩種可以結合先并行解三次,然后根據第一次的解法分別再解一次
2.2 中間步驟進行驗證
之前都是得到正確答案以后再驗證
現在往往不是正確答案再驗證,因為如果要到最后一步,模型需要花很多時間計算到最后一步才發現自己錯了
現在的方法在進行到某一階段的時候就開始驗證,防止一步錯步步錯
先不接完,先只生成第一步
process verifier不需要看到完整的計算過程和答案才來驗證是不是對的
根據一整個回答的一部分來驗證,就可以驗證這一步是不是對的,對的繼續
給定prompt的方式,讓模型分不同步驟,每個步驟以</step?結尾
就知道產生</step>的時候就是一步
- 把剩下的步驟完成
- 多次sample,同時從第一步開始解,每次都得到答案
- 得到正確答案的幾率,這個就是step1的分數
- step2也是開始多次解題,得到正確答案的幾率作為其分數
Self-Evaluation Guided Beam Search for Reasoning
得到數值,閾值應該怎么定義呢?
- 每一次保留最好的n條路經,比較差的不再考慮
3 模仿學習 imitation learning
訓練資料:問題+推論過程+和答案
輸入問題,后面的都是要學的
讓語言模型自己推理+給出答案,如果有答對的,那么過程+答案是traning data
用樹狀搜尋的方法一步一步驗證,對的步驟繼續,直到得到答案
答案正確的作為訓練樣本
第三類的方法可以是RL——鼓勵對的步驟,懲罰錯的步驟
- 真應該這么教模型嘛?需要每一步推理都是對的么
- 就算中間過程有錯也沒事,只要語言模型自己找到錯誤并改正,最終答案正確也行
-
如果每一步都是對的,那么他自始至終都只看過對的,沒看過錯的步驟
-
以為每一步推理都是對的,不知道從自己的推論過程中找有可能犯錯的推理,并改正之
-
- 制造一些錯誤的step,讓語言模型有知錯能改的能力
- 從樹狀結構里找到包括錯誤答案的推理過程
- 深搜,把錯誤的搜尋過程也加到答案里面
- 橙色的step 2錯了,接下來產生藍色的step 2
- 直接從橙色step2切到藍色step2過去可能前言不對后語——>可以加上verifer的回饋(也即這個橙色step 2是錯誤的這些對應的文字)
——>語言模型就會學到一開始學到歪路,但是能更正回來
O1 Replication Journey: A Strategic Progress Report -- Part 1
shortcut learning就是只看過對的推理過程;journey learning就是先看到錯誤的推理過程再轉到正確的推理過程
可以看到,后者train完后準確率高很多
3.1 對已有推理模型直接知識蒸餾
讓這些有推理能力的模型產生reasoning的過程和答案,直接學習
DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
數值越高越好
后面是post training 的源模型,前面是蒸餾的部分(也即從誰哪里拿到的訓練數據)
4 基于強化學習
有訓練資料和結果
要求模型做reasoning?
這里中間推理過程不重要,只在意答案
看起來和第三類(模仿學習)類似,但是這一類不管推理的過程,只要最終答案好就行
Deepseek-R1-Zero就是純RL訓練出來的
DeepSeek-R1強調了一個Aha Moment——RL學著學著 開始自己學會改錯了
- R1-zero的推理過程的內容非常難懂,他是多語言復雜的
- 因為訓練過程只在意答案對不對,不在意結果怎么樣
- 真正的r1還有以下幾步
- R1-zero產生訓練資料
- 耗費人力改reasoning process當作訓練資料,再一次訓練depseek v3-base
- 此時得到的模型A可以產生人比較看得懂的推理過程
- 從A到B,還需要再進行一次RL,要求回答問題的準確度+需要說同一種語言進行推理
- R1-zero產生訓練資料
- 之前R1-zero生成的訓練材料主要是數學和程序的問題
- 模型B生成的訓練資料就是各式各樣的問題了
- 生成問題的推理過程和答案后,用deepseek v3-base作為verifier判斷得到的是不是好的答案&推理過程,去掉一些不好的
- 重新訓練deepseek v3-base得到模型C
- 模型C進行safety和helpfulness的RL微調,得到最終的deepseek R1
4.1Foundation Model 很重要
強化正確答案的幾率的前提是能夠產生正確答案,如果模型本身就不夠強,那就無法激發他的能力
deepseek v3 base?本身就會aha和自我check,RL只是強化了他的能力
5 推理長度和正確率的關系
Revisiting the Test-Time Scaling of o1-like Models: Do they Truly Possess Test-Time Scaling Capabilities?
同樣的問題問5次,根據長度分類
實驗結果:每次推理長度有很大的區別
gorup1到gorup5 越來越長(最短的也已經很長了)
越長并沒有越好
而長的推理過程代價是額外的計算資源
5.1 CoT避免想太多的方法
5.1.1 Chain of Draft
- think step by step的時候reasoning的部分似乎太長了
- 這里改寫了think step?by step的 prompt
- 每一個都是一個草稿(draft),每個草稿最多五個token
- CoD的reasoning 長度 短了很多,性能區別不大,有時候甚至結果更好
5.2 給模型推理流程& imitatin learning的解決辦法
Towards Thinking-Optimal Scaling of Test-Time Compute for LLM Reasoning
推理的模型作為老師,根據輸入產生推理過程和答案
學習過程并沒有考慮長度
問一個問題問很多次,選一個最短的推理過程作為訓練資料
5.3 RL如何避免長推理過程
- 對LLM來說,可以反復驗證推理過程,只要最后答案是對的就行
- 第一種解法是把長度的限制加到reward里面
- 但多數沒有采用這個方法
- 因為不適用于所有問題,不同問題思考的長度是不一樣的
Kimi k1.5: Scaling Reinforcement Learning with LLMs
- 不要定義硬標準,定義相對標準
- 同一個問題丟給語言模型很多次
- 答對的收集起來,看平均需要多長的推理長度