李宏毅genai筆記:推理

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生成的訓練材料主要是數學和程序的問題
  • 模型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

  • 不要定義硬標準,定義相對標準
  • 同一個問題丟給語言模型很多次
    • 答對的收集起來,看平均需要多長的推理長度

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87880.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87880.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87880.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用SSH隧道連接遠程主機

概述 SSH(Secure Shell 的縮寫)是一種網絡協議,通過使用身份驗證機制,是兩臺計算機進行加密通信。 SSH 主要用途是登錄服務器,還可以作為加密通信的中介,充當兩臺服務器之間的通信加密跳板,這個功能稱為端口轉發(port forwarding),又稱 SSH 隧道(tunnel)。 端口…

數據結構---鏈表理解(二)

文章目錄 二、鏈表2.1 鏈表初始化2.2 單鏈表2.2.1 單鏈表---頭插法2.2.2 單鏈表---單鏈表遍歷2.2.3 單鏈表---尾插法2.2.4 單鏈表---在指定位置插入數據2.2.5 單鏈表---刪除指定位置節點2.2.6 單鏈表---獲取鏈表長度2.2.7 單鏈表---釋放鏈表 二、鏈表 暫時到這一步你就理解為&a…

Playnite使用指北 —— 一個優秀的本地化游戲管理工具

為何我們使用 Playnite&#xff1f; 首先我們需要知道 Playnite 是什么&#xff0c;如果你有過用 emby 等管理過電影影視的經驗&#xff0c;你可能會對這種工具感到熟悉&#xff1a; Playnite 是一個開源的本地化的游戲管理軟件&#xff0c;可以實現多平臺的管理&#xff08;S…

時間與空間復雜度詳解:算法效率的度量衡

一、為什么需要復雜度分析&#xff1f; 想象你正在開發一個手機通訊錄應用&#xff0c;需要實現聯系人搜索功能。你有兩種算法可以選擇&#xff1a; // 算法A&#xff1a;線性搜索 public Contact linearSearch(List<Contact> contacts, String name) {for (Contact c …

408第三季part2 - 計算機網絡 - 交換機

理解 題目 如果你這么做 那你完了&#xff0c;因為這種叫存儲轉發 直通只轉目的地址 b 再次理解 A發數據到交換機里想給B 然后交換表會記錄A的MAC地址和端口 然后因為交換表找不到B&#xff0c;所以A會把BCD全部肘一遍&#xff08;廣播&#xff09;&#xff0c;最終只有B會…

從零開始開發純血鴻蒙應用之探析倉頡語言與ArkTS的差異

探析倉頡語言與ArkTS的差異 〇、前言一、IDE 的支持程度不同二、內置組件的使用方式不同三、頁面路由實現方式的不同四、總結 〇、前言 截止到本文發布的日期為止&#xff0c;鴻蒙官方所推薦的開發原生鴻蒙應用的語言&#xff0c;有兩種&#xff0c;分別是擴展自 Typescript 的…

Cursor/VScode ,點擊運行按鈕,就打開新的終端,如何設置為在當前終端運行文件而不是重新打開終端----一招搞定篇

我發現就是&#xff0c;我運行.py&#xff0c;點擊完運行按鈕&#xff0c;就給我重新打開一個終端&#xff0c;然后新的終端是在base環境中的&#xff0c;就跟麻煩 還得在當前終端輸入python3 test.py 來運行文件。能不能修改。1、打開cursor或者vscode 。 同時按下 ctrlshiftp…

【STM32實踐篇】:I2C驅動編寫

文章目錄I2C 物理層I2C 協議層1. 數據有效性2. 起始和停止信號3. 應答響應4. 總線的尋址方式5. 數據傳輸5.1 主機向從機發送數據5.2 主機由從機中讀數據5.3 I2C通信復合格式I2C 驅動編寫1. 配置 SCL 和 SDA2. I2C起始信號和停止信號3. 等待從設備應答4. 主機發送ACK和NACK信號5…

ragflow本地部署教程linux Ubuntu系統

以下是一份在 Ubuntu 系統上本地部署 RAGFlow 的詳細教程。 一、基礎環境準備 1.硬件要求 –CPU ≥ 4核 –RAM ≥ 16 GB –磁盤空間 ≥ 50 GB&#xff08;建議 SSD&#xff09; 2.系統配置 更新系統 sudo apt update && sudo apt upgrade -y 設置內核參數&#xff…

[netty5: WebSocketClientHandshaker WebSocketClientHandshakerFactory]-源碼分析

在閱讀這篇文章前&#xff0c;推薦先閱讀以下內容&#xff1a; [netty5: WebSocketFrame]-源碼分析[netty5: WebSocketFrameEncoder & WebSocketFrameDecoder]-源碼解析 WebSocketClientHandshakerFactory WebSocketClientHandshakerFactory 是用于根據 URI 和協議版本創…

4.2 如何訓練?個 LLM

?般??&#xff0c;訓練?個完整的 LLM 需要經過圖1中的三個階段——Pretrain、SFT 和 RLHF。 4.2.1 Pretrain 預訓練任務與架構 任務類型&#xff1a;采用因果語言模型&#xff08;CLM&#xff09;&#xff0c;通過預測下一個 token 進行訓練&#xff0c;與傳統預訓練模型…

Qt中的QObject::moveToThread方法詳解

一、QObject::moveToThread方法QObject::moveToThread()是Qt框架中一個非常重要的功能&#xff0c;它允許改變QObject及其子對象的線程關聯性。這個功能在多線程編程中特別有用&#xff0c;可以將耗時操作移到工作線程執行&#xff0c;避免阻塞主線程/GUI線程。基本用法void QO…

【9】用戶接入與認證配置

本文旨在幫助網絡管理員在 SD-WAN 環境中實現安全、穩定的用戶接入與認證策略,涵蓋本地/遠程認證、權限管理、密碼策略、SSH、會話控制等關鍵配置要素。 1.密碼策略與賬戶安全 從 IOS XE SD-WAN 17.3.1 起,Cisco 引入密碼強化功能,用于統一用戶密碼的復雜度與有效性要求。密…

第十六節:第三部分:多線程:線程安全問題、取錢問題的模擬

線程安全問題介紹&#xff1a;取錢的線程安全問題 取錢的線程安全問題 取錢案例需求分析 線程安全問題出現的原因 代碼&#xff1a;模擬線程安全問題&#xff08;上述取錢案例&#xff09; Account類&#xff08;賬戶類&#xff09; package com.itheima.day3_thread_safe;pu…

APE:大語言模型具有人類水平的提示工程能力

摘要 通過以自然語言指令作為條件輸入&#xff0c;大型語言模型&#xff08;LLMs&#xff09;展現出令人印象深刻的通用計算能力。然而&#xff0c;任務表現嚴重依賴于用于引導模型的提示&#xff08;prompt&#xff09;質量&#xff0c;而最有效的提示通常是由人類手工設計的…

X86 CPU 工作模式

1.概述 1.實模式 實模式又稱實地址模式&#xff0c;實&#xff0c;即真實&#xff0c;這個真實分為兩個方面&#xff0c;一個方面是運行真實的指令&#xff0c;對指令的動作不作區分&#xff0c;直接執行指令的真實功能&#xff0c;另一方面是發往內存的地址是真實的&#xff…

Java設計模式之行為型模式(策略模式)介紹與說明

一、策略模式簡介 策略模式&#xff08;Strategy Pattern&#xff09;是一種行為型設計模式&#xff0c;它定義了一系列算法&#xff0c;并將每個算法封裝起來&#xff0c;使它們可以相互替換&#xff0c;且算法的變化不會影響使用算法的客戶。策略模式讓算法獨立于使用它的客…

【BIOS+MBR 微內核手寫實現】

本文基于BIOS+MBR的架構,從四部分講解微內核是如何實現的: 1)搭建微內核編譯調試環境 2)梳理微內核的代碼結構:偽指令講解 3)手寫實現微內核框架,輸出簡單的字符串 4)講解微內核啟動階段的具體運行過程 先完成內核工程創建,如下圖 我們這里使用nasm風格的匯編編寫,…

從C/C++遷移到Go:內存管理思維轉變

一、引言 在當今高速發展的軟件開發世界中&#xff0c;語言遷移已成為技術進化的常態。作為一名曾經的C/C開發者&#xff0c;我經歷了向Go語言轉變的全過程&#xff0c;其中最大的認知挑戰來自內存管理模式的根本性差異。 我記得第一次接觸Go項目時的困惑&#xff1a;沒有析構函…

正確設置 FreeRTOS 與 STM32 的中斷優先級

在裸機開發&#xff08;非 RTOS&#xff09;時&#xff0c;大多數 STM32 外設的中斷優先級通常不需要手動配置&#xff0c;原因如下&#xff1a; ? 裸機開發中默認中斷優先級行為 特點說明默認中斷優先級為 0如果你不設置&#xff0c;STM32 HAL 默認設置所有外設中斷為 0&…