20251110筆記 內容可能有錯誤,請參考原始影片 [李宏毅【生成式AI時代下的機器學習(2025)】](https://www.youtube.com/playlist?list=PLJV_el3uVTsNZEFAdQsDeOdzAaHTca2Gi) [【生成式AI時代下的機器學習(2025)】第七講:DeepSeek-R1 這類大型語言模型是如何進行「深度思考」(Reasoning)的?](https://www.youtube.com/watch?v=bJFtcwLSNxI&list=PLJV_el3uVTsNZEFAdQsDeOdzAaHTca2Gi&index=8) ### 【生成式AI時代下的機器學習(2025)】第七講:DeepSeek-R1 這類大型語言模型是如何進行「深度思考」(Reasoning)的? 大綱 ### I. 深度思考與推理 (Reasoning) 基礎 * **定義:** 語言模型產生長篇思考過程並最終給出答案的行為。 * **機制:** 測試時計算(Testing-Time Compute),即在測試階段投入更大的算力來提升結果。 ### II. 打造深度思考 LLMs 的四種方法 (Methods for Building Reasoning LLMs) #### A. 無需微調參數的方法 (Methods without Fine-Tuning) 1. **優化思維鏈(Chain-of-Thought, CoT):** 透過 Prompt 引導模型列出解題過程。 * CoT 類型:Few-shot CoT、Zero-shot CoT、Supervised CoT。 2. **賦予模型推理工作流程 (Workflow):** 透過多重嘗試與驗證機制來找到最佳答案。 * 核心技術:多重採樣與投票(Majority Vote/Self-Consistency)、驗證器(Verifier/Best-of-N)、以及 Beam Search。 #### B. 需微調參數的方法 (Methods requiring Fine-Tuning) 3. **模仿學習與知識蒸餾 (Imitation Learning & Knowledge Distillation):** 讓模型模仿正確或可修正的推理過程。 * 關鍵:蒐集帶有推理過程的訓練資料,尤其是包含錯誤修正的路徑(Journey Learning)。 4. **結果導向的強化學習 (Outcome-Oriented RL):** 僅依據最終答案的正確性給予獎勵,而不嚴格控制推理過程。 ### III. 案例分析:DeepSeek-R1 的複雜訓練 (Case Study: DeepSeek-R1) * **實際流程:** 結合了強化學習、模仿學習和知識蒸餾等多階段方法。 --- ### I. 深度思考與推理 (Reasoning) 基礎 #### 1. 概念與模型 * **深度思考**是現今一系列模型(包括 ChatGPT 的 O 系列、DeepSeek 的 R 系列、Google 的 Gemini Fast Thinking、Claude 3.5 Sonnet 的 Extended Thinking Mode)所具備的一種特定行為。 * 這種行為的特徵是**先給出一個很長的思考過程,最後才給出答案**。這個思考過程常被稱為**推理**(Reasoning)。 * *範例:* 當詢問 DeepSeek-R1 "1 + 1 等於多少" 時,它會展示一個「深度思考」的框框,內容就像它的內心小劇場,可能先得出答案 2,隨後又否定自己,考慮如二進位下 1+1 等於 10 的情況,最後再推翻之前的想法,給出最終答案 2。 * 模型在思考過程中通常會有幾個行為:**驗證答案**(let me check the answer)、**探索**其他可能性、以及**規劃**解題步驟。 #### 2. 推理 vs. 推論 (Reasoning vs. Inference) * 在機器學習中,Reasoning(推理)與 Inference(推論)的意思大不相同。 * **Inference(推論)**:指使用一個模型來產生答案的行為。 * **Reasoning(推理)**:指模型在 Inference 階段產生特別長的思考過程的行為。 * 值得注意的是,模型所做的 Reasoning 行為**不一定與人類的推理行為相同**。 #### 3. 測試時計算 (Testing-Time Compute) * Reasoning 的行為是 **Testing-Time Compute** 的一種。 * **Testing-Time Compute** 的意思是:**在測試階段投入更大的算力,可能可以讓你得到更好的結果**。 * 這一概念並非全新,例如 **AlphaGo** 在決定下一步落子時,也會進行巨大的運算,利用 **Monte Carlo Tree Search (MCTS)** 進行「腦內小劇場」的模擬。 * **Testing-Time Scaling** 指的是**思考越多,往往結果越好**。有研究顯示,少量投入 Testing-Time Compute 所減少的訓練(Training)時間算力,是非常可觀的。 ### II. 打造深度思考 LLMs 的四種方法 #### 1. 優化思維鏈 (Better Chain-of-Thought, CoT) * **概念:** 讓模型先列出解題過程,再給出答案。 * **傳統 CoT:** * *Few-shot CoT:* 給予模型範例,教導它先寫過程再給答案。 * *Zero-shot CoT:* 直接告訴模型 "let's think step by step",它就會自動列出計算過程。 * **Long CoT :** 由於現在的思考過程非常長,因此出現 Long CoT 的說法。 * **Supervised CoT:** 使用人類的知識告訴模型如何一步一步思考。這類方法通常透過撰寫**複雜的 Prompt**,要求模型進行深入解析題目的要求、定出計畫、按部就班執行、並進行**多次驗算**(Verification)。 * *範例:* 複雜 Prompt 可以要求模型將思考過程放在 `<think>` 與 `</think>` 符號之間。強大的模型如 GPT-4o 能夠依照指示進行題目的分析、總計畫訂定、分步驟計算,以及多種驗算(如直式乘法、估算上下界、交換律拆解)。 * *限制:* 較弱的模型(如 Llama 3)可能無法讀懂或執行這些複雜的 Supervised CoT 指令。 #### 2. 賦予模型推理工作流程 (Giving the Model Reasoning Workflow) * 此類方法無需微調參數,即使較弱的模型也能大幅強化能力。 * **多重採樣 (Multi-sampling) 與多數投票 (Majority Vote)** * **概念:** 強迫模型對同一個問題回答幾千幾萬次,利用「無限猴子定理」的概念,期望它總有機會產生出正確答案。 * **Majority Vote / Self-Consistency:** 在模型所有輸出的答案中,看哪個答案出現的次數最多,就選擇它作為最終答案。 * *結果:* 這種方法非常強大,常被建議作為 Baseline。增加採樣次數(如 1萬次)能顯著提高模型的「覆蓋率」(Coverage,即只要一次輸出正確就視為成功)。 * **驗證器 (Verifier) 與 Best-of-N** * **概念:** 訓練一個獨立的 Verifier 模型(也常是一個語言模型)來評估多個答案中哪一個最可能是正確的,然後選擇分數最高的答案(Best-of-N)。 * Verifier 可以通過訓練資料(問題與標準答案)來訓練:如果模型輸出正確答案,Verifier 輸出 1;錯誤則輸出 0,以此學習驗證。 * **過程式驗證器 (Process Verifier) 與 Beam Search** * **中途驗證:** 現代深度思考模型會在解題到一半時,在中途步驟就開始進行驗證,以避免「一步錯、步步錯」。 * **Process Verifier:** 這種驗證器不需要看到完整的計算過程或最終答案,而是根據回答的「一部分」或「某一單一步驟」就進行驗證。 * **訓練 Process Verifier:** 透過讓模型從某一步驟(如 Step 1)開始多次解題,計算得到正確答案的機率,Process Verifier 就能學會為每個步驟(如 Step 1, Step 2...)評分,代表繼續解題的正確率。 * **Beam Search:** 利用 Process Verifier 的評分,每次只保留分數最好的 N 條路徑繼續往下走,淘汰較差的路徑。 * *結果:* 實驗顯示,使用 Beam Search 的方法(如綠色線)甚至可以讓較小的 1B 模型超越 8B 模型的表現。 #### 3. 模仿學習與知識蒸餾 (Imitation Learning & Knowledge Distillation) * 這類方法屬於 **Post-training**,透過微調(Fine-tuning)讓 Foundation Model 具備 Reasoning 能力。 * **Imitation Learning:** 假設訓練資料中不僅有問題和答案,還包含**推論的過程**。模型模仿這些過程來學習如何 Reasoning。 * **獲取推理過程:** 通常是透過一個較強的語言模型自行產生過程(CoT),然後只保留那些最終答對的過程作為訓練資料。 * **只給正確推論過程的問題:** * **質疑:** 我們真的應該教導模型推理過程中的每一步都必須是正確的嗎? * **問題所在:** 如果訓練時只看過正確的過程,模型從來不知道推理過程可能會出錯,它將**不知道如何找自己的問題**,會認為前面的推論一定是對的,即使錯了也會「硬凹下去」。 * **解決方案:** 需要故**意製造一些特殊的訓練過程**,其中間可能包含錯誤,以便教導模型具備「知錯能改」的能力。 * **Journey Learning (String of Search):** 這是解決上述問題的方法。 * **概念:** 從樹狀結構中,故意包含錯誤的搜尋路徑(例如走錯一步後退回再嘗試正確的),將這些包含錯誤修正的過程納入訓練資料。 * **效果:** Journey Learning 讓模型學會「逆轉勝」,實驗結果顯示它比只走正確路徑的 Shortcut Learning 表現更好。 * **知識蒸餾 (Knowledge Distillation):** 直接拿已存在且具有 Reasoning 能力的模型(如 DeepSeek-R1)當作老師,讓你的模型學習這個老師產生的 Reasoning 過程。 * *範例:* DeepSeek-R1 的論文展示了 Knowledge Distillation 可以讓較小的 Foundation Model(如 Qwen-1.5 32B/8B)的能力在數學等任務上「起飛」。 #### 4. 結果導向的強化學習 (Outcome-Oriented Reinforcement Learning, RL) * **概念:** 使用 RL 教導模型 Reasoning,但**只專注於結果**。將問題輸入模型,模型推理後給出答案;如果答案是對的,給予 Positive Reward;錯的則給予 Negative Reward。 * **關鍵區別:** 在此 RL 學習過程中,推論的內容(Reasoning Process)到底說了什麼**不重要**。 * **範例:** DeepSeek-R10 (DeepseekR10) 就是一個純粹由 RL 學習出來的模型。它將**模型的答對率當作 Reward**,並且也給予格式獎勵(如要求產生 `<think>` token)。 * **RL 的限制與本質:** * DeepseekR10 雖然厲害,但其 Reasoning 過程**非常難讀**,甚至多種語言混雜,因為訓練時**根本不在意它推論的過程寫了什麼**。 * RL 的作用是**強化模型原有的能力**。如果一個模型(如 Qwen 1.5 32B)本身不夠強,單純使用 RL 仍難以激發其 Reasoning 能力。 * 許多論文檢驗發現,在進行 RL 之前,Foundation Model(如 DSIC-V3 Base)本身可能就已經具備了自我質疑、自我檢查的能力(e.g., "I'm overthinking," "Let's check"),RL 只是強化了這些行為的出現。 ### III. 案例分析:DeepSeek-R1 的複雜訓練 DeepSeek-R1 (DeepseekR1) 是最終發布在平台上的模型,其打造過程非常複雜,結合了前述三種方法,而不僅僅是單純使用 RL。 1. **階段一:基於 R1-Zero 的知識蒸餾與模仿學習** * 首先利用純 RL 模型 DeepseekR1-Zero 產生帶有 Reasoning Process 的訓練資料。 * 但因為 R1-Zero 的輸出難以閱讀,故需**耗費大量人力去修改 R1-Zero 的輸出**,使其成為可讀的訓練資料。 * 同時,也利用 **Few-shot CoT** 和 **Supervised CoT** 的方法(要求模型產生 detailed answer 且要有 reflection/verification)產生額外的帶 Reasoning 資料。 * 利用這些資料對 Foundation Model (DeepseekV3 Base) 進行模仿學習(Imitation Learning),得到 **Model A**。 2. **階段二:RL 與語言一致性獎勵 (Model B)** * Model A 進一步做 RL,除了要求提高正確率,還增加了**語言一致性**(Language Consistency)的限制(要求 Reasoning 過程必須使用一致的語言,如都用中文或英文)。 * 此步驟犧牲了些許正確率,但讓模型產出人更容易閱讀的推論過程,得到 **Model B**。 3. **階段三:大規模自動化數據採集與 Imitation Learning (Model C)** * 利用 Model B 在各種任務上自動產生 Reasoning 過程與答案。 * 使用 DeepseekV3 作為 Verifier 來判斷 Model B 輸出的答案品質。 * 過濾掉較差的 Reasoning 過程(如使用多種語言、太長、或產生程式碼)。 * 將這 60 萬筆自動生成的 Reasoning 資料,與 DeepseekV3 Base 的 20 萬筆 Self-output 資料混合,再次進行模仿學習,得到 **Model C**。 4. **階段四:最終 RL 與 Safety/Helpfulness 強化 (DeepseekR1)** * Model C 進行最後一次 RL,主要目的是強化模型的 **Safety** 與 **Helpfulness** 能力,最終得到 DeepSeek-R1。 這個複雜的流程表明,打造一個實用且具備深度思考能力的 LLM,需要系統性地結合多種方法,而不僅僅依賴單一技術。然而,由於其訓練主要仍依賴 RL,DeepseekR1 的 Reasoning 過程有時仍可能出現奇怪或不夠通順的語句,顯示出訓練過程中對 Reasoning 文本品質干預不足的結果。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up