強化學習中重要性采樣

PPO 中重要性采樣

  • https://github.com/modelscope/ms-swift/blob/main/docs/source/Instruction/GRPO/GetStarted/GRPO.md
  • 樂,這個網頁中是的groundtruth是錯誤的(可能是為了防止抄襲)。
    在這里插入圖片描述

一些例子

0. 池塘養魚的一個例子

想象一下,你想知道一個湖里所有魚的平均重量(求期望)。

普通(均勻)采樣:你租一條小船,隨機在湖面上撒網。問題是,湖中心魚又多又大,但你隨機撒網,很可能大部分網都撒在了沒什么魚的岸邊。這樣你得撒非常多次網(采樣非常多),才能得到一個比較準確的平均值。效率低下。

重要性采樣:你是個聰明的漁夫。你知道湖中心的魚又多又大(重要區域)。所以你決定:別隨機撒網了,咱們就開著船專門去湖中心撒網!

新問題:這樣從湖中心撈上來的魚肯定比實際湖里的平均魚要重,直接算平均值會嚴重高估。

解決方案:加權(重要性權重)。當你從湖中心撈起一條大魚時,你在心里想:“這條魚確實重,但它來自一個我刻意選擇的‘高產區域’,所以它的代表性沒那么強。我得給它打個折。”

反之,如果你偶爾在岸邊撈到一條小魚,你會想:“這條魚雖然小,但它來自一個我幾乎不采樣的‘低產區域’,它能被撈上來非常難得,它的價值應該被放大。”

這個“打折”或“放大”的系數,就是 重要性權重 。通過這個權重,就能糾正你“刻意去湖中心采樣”所帶來的偏差,最終也能算出整個湖里魚的真實平均重量。

核心思想:重要性采樣允許我們故意從一個我們喜歡的、容易采樣的分布(去湖中心) 而不是從那個原始的、難以采樣的分布(整個湖面)進行抽樣。然后通過一個權重來修正兩個分布之間的差異,從而得到無偏的估計。

1. 強化學習

這是重要性采樣最經典的應用領域之一。

問題:一個機器人要用“舊策略” π_old 收集來的數據,來學習和評估一個“新策略” π_new 的好壞。如果新策略和舊策略差別很大,那么舊數據對于新策略來說就可能很不相關,直接用它訓練效果會很差甚至危險(比如新策略是“高速行駛”,而舊數據全是“低速行駛”的)。

重要性采樣的應用:我們仍然使用舊策略的數據,但在用這些數據計算新策略的收益時,給每一條數據都加上一個重要性權重:權重 = (新策略采取舊行動的概率) / (舊策略采取舊行動的概率)。

例子:舊策略 π_old 在紅燈時有 80% 的概率剎車,20% 的概率闖過去。新策略 π_new 更保守,在紅燈時有 99% 的概率剎車,1% 的概率闖過去。

如果一條舊數據是“紅燈->闖過去->發生車禍”,那么這條數據對于新策略的權重就是 (1%) / (20%) = 0.05。

這意味著,雖然“闖紅燈導致車禍”這件事本身代價很大,但因為新策略幾乎不會這么做(概率只有1%),所以這件事對新策略的影響會被大大折扣(權重0.05)。

反之,對于“紅燈->剎車->安全”的數據,權重是 (99%) / (80%) ≈ 1.24,其影響會被適當放大。

這樣,就能安全且高效地利用舊數據來優化新策略了。你提供的命令中的 --importance_sampling_level sequence 就是這個思想在 GRPO 算法中的應用。

2. 金融風險評估

問題:計算某種極端金融事件(如股市暴跌50%)發生的風險。這種事件概率極低,但后果極其嚴重。如果用普通的蒙特卡洛模擬,你可能要模擬成千上萬次甚至百萬次,才可能碰到一兩次這種極端情況,效率極低。

重要性采樣的應用:我們故意修改模擬的規則(采樣分布),讓極端事件更容易發生。比如,在模擬時故意讓股價的波動性變大。

然后,在計算風險時,為每一次模擬結果加上一個權重。這個權重就是:在真實模型下,這個結果發生的概率 / 在修改后的模型下,這個結果發生的概率。

對于那些被我們“人為放大”的暴跌事件,我們會給它一個很小的權重,因為雖然它在我們的模擬中經常發生,但在現實中其實很難發生。通過權重修正后,我們就能得到它在真實世界中的正確風險值。這樣,我們用幾千次模擬就可能達到普通蒙特卡洛需要幾百萬次模擬的精度。

3. 計算機圖形學(渲染)

問題:計算一個物體表面某一點的顏色(即它接收到的來自所有方向的光照積分)。來自光源方向的光線貢獻很大,而來自其他方向的光線貢獻很小。

重要性采樣的應用:與其均勻地向所有方向發射光線去探測,不如集中地向光源的方向發射更多光線(因為那里貢獻大)。

然后,在計算顏色時,為那些射向光源的光線賦予較低的權重(因為你發射了太多條了),為那些射向黑暗角落的光線賦予較高的權重(因為你發射的很少)。這樣就可以用更少的光線(更快的渲染速度)得到更清晰、噪聲更少的圖像。

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

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

相關文章

《樹與二叉樹詳解:概念、結構及應用》

目錄 一. 樹的概念和結構 1.1 樹的基本概念 1.2 樹的結構特點 二. 樹的表示方法和實際運用 2.1 孩子 - 兄弟表示法(Child-Sibling Representation) 2.2 樹的實際應用場景 三. 二叉樹的概念 3.1 二叉樹的核心定義 3.2 二叉樹的基本分類 四. 二叉…

Qt/C++,windows多進程demo

1. 項目概述 最近研究了一下Qt/C框架下,windows版本的多進程編寫方法,實現了一個小demo。下面詳細介紹一下。 MultiProcessDemo是一個基于Qt框架實現的多進程應用程序示例,展示了如何在Windows平臺上通過共享內存和事件機制實現進程間通信。該…

Android SystemServer 系列專題【篇五:UserController用戶狀態控制】

本篇接著SystemServer的啟動流程,圍繞SystemServer最后階段關于主用戶的啟動和解鎖的流程,作為切入點,來看看SystemServer是如何講用戶狀態同步到所有的系統級服務中。ssm.onStartUserssm.onUnlockingUserssm.onUnlockedUser本篇先介紹UserCo…

推薦使用 pnpm 而不是 npm

npm 的局限性 磁盤空間浪費在 npm 早期版本中,每個項目的node_modules目錄都會完整復制所有依賴包,即使多個項目依賴同一個包的相同版本,也會重復存儲。這導致磁盤空間被大量占用,隨著項目數量的增加,存儲成本顯著上升…

Transformer實戰(18)——微調Transformer語言模型進行回歸分析

Transformer實戰(18)——微調Transformer語言模型進行回歸分析0. 前言1. 回歸模型2. 數據處理3. 模型構建與訓練4. 模型推理小結系列鏈接0. 前言 在自然語言處理領域中,預訓練 Transformer 模型不僅能勝任離散類別預測,也可用于連…

【Linux】【實戰向】Linux 進程替換避坑指南:從理解 bash 阻塞等待,到親手實現能執行 ls/cd 的 Shell

前言:歡迎各位光臨本博客,這里小編帶你直接手撕,文章并不復雜,愿諸君耐其心性,忘卻雜塵,道有所長!!!! IF’Maxue:個人主頁🔥 個人專欄…

linux常用命令 (3)——系統包管理

博客主頁:christine-rr-CSDN博客 ????? ?? hi,大家好,我是christine-rr ! 今天來分享一下linux常用命令——系統包管理 目錄linux常用命令---系統包管理(一)Debian 系發行版(Ubuntu、Debian、Linux …

YOLOv8 mac-intel芯片 部署指南

🚀 在 Jupyter Notebook 和 PyCharm 中使用 Conda 虛擬環境(YOLOv8 部署指南,Python 3.9) YOLOv8 是 Ultralytics 開源的最新目標檢測模型,輕量高效,支持分類、檢測、分割等多種任務。 在 Mac(…

【高等數學】第十一章 曲線積分與曲面積分——第六節 高斯公式 通量與散度

上一節:【高等數學】第十一章 曲線積分與曲面積分——第五節 對坐標的曲面積分 總目錄:【高等數學】 目錄 文章目錄1. 高斯公式2. 沿任意閉曲面的曲面積分為零的條件3. 通量與散度1. 高斯公式 設空間區域ΩΩΩ是由分片光滑的閉曲面ΣΣΣ所圍成&#x…

IDEA試用過期,無法登錄,重置方法

IDEA過期,重置方法: IntelliJ IDEA 2024.2.0.2 (親測有效) 最新Idea重置辦法!: 方法一: 1、刪除C:\Users\{用戶名}\AppData\Local\JetBrains\IntelliJIdea2024.2 下所有文件(注意:是子目錄全部刪除) 2、刪除C:\Users\{用戶名}\App…

創建用戶自定義橋接網絡并連接容器

1.創建用戶自定義的 alpine-net 網絡[roothost1 ~]# docker network create --driver bridge alpine-net 9f6d634e6bd7327163a9d83023e435da6d61bc6cf04c9d96001d1b64eefe4a712.列出 Docker 主機上的網絡[roothost1 ~]# docker network ls NETWORK ID NAME DRIVER …

Vue3 + Vite + Element Plus web轉為 Electron 應用,解決無法登錄、隱藏自定義導航欄

如何在vue3 Vite Element Plus搭好的架構下轉為 electron應用呢? https://www.electronjs.org/zh/docs/latest/官方文檔 https://www.electronjs.org/zh/docs/latest/ 第一步:安裝 electron相關依賴 npm install electron electron-builder concurr…

qt QAreaLegendMarker詳解

1. 概述QAreaLegendMarker 是 Qt Charts 模塊中的一部分,用于在圖例(Legend)中表示 QAreaSeries 的標記。它負責顯示區域圖的圖例項,通常包含區域顏色樣例和對應的描述文字。圖例標記和對應的區域圖關聯,顯示區域的名稱…

linux 函數 kstrtoul

kstrtoul 函數概述 kstrtoul 是 Linux 內核中的一個函數&#xff0c;用于將字符串轉換為無符號長整型&#xff08;unsigned long&#xff09;。該函數定義在 <linux/kernel.h> 頭文件中&#xff0c;常用于內核模塊中解析用戶空間傳遞的字符串參數。 函數原型 int kstrtou…

LLM(三)

一、人類反饋的強化學習&#xff08;RLHF&#xff09;微調的目標是通過指令&#xff0c;包括路徑方法&#xff0c;進一步訓練你的模型&#xff0c;使他們更好地理解人類的提示&#xff0c;并生成更像人類的回應。RLHF&#xff1a;使用人類反饋微調型語言模型&#xff0c;使用強…

DPO vs PPO,偏好優化的兩條技術路徑

1. 背景在大模型對齊&#xff08;alignment&#xff09;里&#xff0c;常見的兩類方法是&#xff1a;PPO&#xff1a;強化學習經典算法&#xff0c;OpenAI 在 RLHF 里用它來“用獎勵模型更新策略”。DPO&#xff1a;2023 年提出的新方法&#xff08;參考論文《Direct Preferenc…

BLE6.0信道探測,如何重構物聯網設備的距離感知邏輯?

在物聯網&#xff08;IoT&#xff09;無線通信技術快速滲透的當下&#xff0c;實現人與物、物與物之間對物理距離的感知響應能力已成為提升設備智能高度與人們交互體驗的關鍵所在。當智能冰箱感知用戶靠近而主動亮屏顯示內部果蔬時、當門禁系統感知到授權人士靠近而主動開門時、…

【計算機 UTF-8 轉換為本地編碼的含義】

UTF-8 轉換為本地編碼的含義 詳細解釋一下"UTF-8轉換為本地編碼"的含義以及為什么在處理中文時這很重要。 基本概念 UTF-8 編碼 國際標準&#xff1a;UTF-8 是一種能夠表示世界上幾乎所有字符的 Unicode 編碼方式跨平臺兼容&#xff1a;無論在哪里&#xff0c;UTF-8 …

4.6 變體

1.變體簡介 2.為什么需要變體 3.變體是如何產生的 4.變體帶來的麻煩 5.multi_compile和shader_feature1.變體簡介 比如我們開了一家餐廳, 你有一本萬能的菜單(Shader源代碼), 上面包含了所有可能的菜式; 但是顧客每次來點餐時, 不可能將整本菜單都做一遍, 他們會根據今天有沒有…

猿輔導Android開發面試題及參考答案(下)

為什么開發中要使用線程池,而不是直接創建線程(如控制線程數量、復用線程、降低開銷)? 開發中優先使用線程池而非直接創建線程,核心原因是線程池能優化線程管理、降低資源消耗、提高系統穩定性,而直接創建線程存在難以解決的缺陷,具體如下: 控制線程數量,避免資源耗盡…