強化學習三大分類

核心目標: 教會一個智能體(比如機器人、游戲AI、推薦系統)通過試錯獎勵,學會在某個環境中完成特定任務的最佳策略。

核心角色:

  1. 智能體 (Agent): 學習者,比如玩游戲的小人、控制溫度的空調系統。
  2. 環境 (Environment): 智能體所處的世界,比如游戲關卡、房間、股票市場。
  3. 狀態 (State): 環境在某個時刻的快照,比如游戲畫面、房間的溫度濕度、股票的價格成交量。
  4. 動作 (Action): 智能體能做的事情,比如上下左右移動、調高溫度、買入賣出股票。
  5. 獎勵 (Reward): 環境給智能體動作的即時反饋,比如吃到金幣+1分、撞到墻-1分、房間達到舒適溫度+0.1、虧錢-10。

目標: 智能體要找到一個策略 (Policy),這個策略告訴它在每個狀態下該做什么動作,使得長期累積的獎勵總和最大化。就像玩游戲要通關得分最高,投資要長期收益最大。

強化學習三大分類:

當你在教一只狗狗學新動作(比如坐下)。

基于值的方法 (Value-Based Methods) - “算盤派”

在這里插入圖片描述

  • 核心思想: 不直接學“做什么動作”,而是學每個狀態或者每個“狀態-動作對”值多少錢(值)。值越高,說明這個狀態(或在這個狀態做這個動作)未來能拿到的總獎勵越多。
    • 狀態值函數 V(s): 在這個狀態s下,按當前策略走下去,預期能拿到多少總獎勵。比如在游戲某個位置,V值高說明這是個好位置。
    • 動作值函數 Q(s, a):狀態s下,做了動作a,然后按當前策略走下去,預期能拿到多少總獎勵。比如在游戲某個位置,Q(跳躍)值高說明這時跳起來很劃算。
  • 怎么學?
    • 智能體不斷嘗試(探索),觀察獎勵和狀態變化。
    • 用觀察到的結果(實際獎勵 + 下一個狀態的價值估計)來更新當前狀態/動作的價值估計。這個更新規則基于貝爾曼方程,本質是說“當前位置的價值 ≈ 當前獎勵 + 打折后的下一個位置價值”。
  • 最終策略: 學好了Q值表,最優策略就很簡單了:在狀態s下,選Q值最大的那個動作a! (貪婪策略)。
  • 經典算法:
    • Q-Learning: 最基礎也最重要!學Q表。特點是“離線學習”:更新Q值時,用“假設下一步選最優動作”的價值 (max Q),而不管自己實際下一步會做什么(可能探索時做了隨機動作)。
    • SARSA: 也是學Q表。特點是“在線學習”:更新Q值時,用實際采取的下一步動作對應的Q值。更保守,跟著當前策略走。
    • DQN (Deep Q-Network): 革命性算法! 當狀態太復雜(比如游戲畫面像素)無法用表格存Q值時,用一個神經網絡代替Q表!輸入狀態(如圖像),輸出每個動作的Q值。解決了高維狀態問題。關鍵技巧:經驗回放(記住過去的經驗隨機抽著學,打破相關性)、目標網絡(穩定學習目標)。
    • DQN變種:
      • Double DQN: 解決DQN容易高估Q值的問題(覺得啥動作都值錢),讓動作選擇(用主網絡)和價值評估(用目標網絡)分開。
      • Dueling DQN: 把Q值拆成狀態值V(s)(這位置好不好)和動作優勢A(s,a)(在這個位置做這動作比平均水平好多少)。讓網絡更聚焦學狀態的好壞。
  • 適合場景: 動作空間是離散的、有限的(比如游戲手柄的按鍵)。像下棋(動作有限)、經典游戲(上下左右開火)。
  • 優點: 相對穩定。
  • 缺點: 只能處理離散動作;找到最優策略依賴于價值函數估計得準不準。

基于策略的方法 (Policy-Based Methods) - “直覺派”

在這里插入圖片描述

  • 核心思想: 繞開“值”,直接學習策略本身! 用一個函數(比如神經網絡)表示策略,輸入狀態s,直接輸出動作a(確定性策略)或者輸出每個動作的概率(隨機性策略)。
  • 怎么學?
    • 目標就是讓策略函數輸出的動作序列能最大化長期累積獎勵的期望
    • 核心是策略梯度定理:它告訴你怎么調整策略函數的參數,才能讓期望累積獎勵增加。簡單說就是:如果某個動作(或動作方向)帶來了好結果(高獎勵),就增加以后選這個動作(或類似動作)的概率;反之減少。
  • 經典算法:
    • REINFORCE: 最基礎的策略梯度算法。跑完一整局游戲(一條完整軌跡),計算總獎勵,然后根據這個總獎勵來調整策略。缺點: 獎勵波動大(方差高),學得慢。
    • Actor-Critic (演員-評論家): 結合了值和策略! 是主流方法。
      • Actor (演員): 負責執行策略,輸出動作。
      • Critic (評論家): 負責評價狀態或動作的價值(學一個值函數V(s)或Q(s,a))。
      • 怎么協作? Critic 給 Actor 反饋:在狀態s下,Actor選擇的動作a到底有多好?這個反饋通常用優勢函數 A(s, a) = Q(s, a) - V(s) 表示(動作a比在s狀態下的平均動作好多少)。Actor就用這個優勢值來更新策略(增大帶來正優勢的動作概率,減小帶來負優勢的動作概率)。Critic則通過TD誤差等方法來學習更準的價值估計。
      • A3C (Asynchronous Advantage Actor-Critic): 利用多線程異步更新,效率高。
    • PPO (Proximal Policy Optimization): 目前最流行最實用的策略優化算法之一! 核心思想:更新策略時,步子別邁太大,避免新策略一下子變得和舊策略差太多導致性能崩盤。通過一個“裁剪”機制限制更新的幅度。優點: 穩定、效果好、相對容易調參。
    • DDPG (Deep Deterministic Policy Gradient): 針對連續動作空間(比如方向盤轉多少度、電機輸出多少扭矩)設計的Actor-Critic算法。Actor輸出一個確定的連續動作值(不是概率)。需要加一些噪聲來探索。
    • SAC (Soft Actor-Critic): 也是處理連續動作的先進算法。特色是引入了最大熵目標,不僅追求高獎勵,還鼓勵策略有一定的隨機性(熵高),這樣探索更充分,更容易找到全局最優解,也更魯棒。
  • 適合場景: 動作空間是連續的(機器人控制、自動駕駛)或者即使是離散但策略本身很復雜需要直接建模。也常與Actor-Critic結合處理各種場景。
  • 優點: 能直接處理連續動作;可以學習隨機策略(有時隨機探索很重要,比如石頭剪刀布)。
  • 缺點: 訓練可能不太穩定;樣本效率有時相對較低(需要更多試錯);容易陷入局部最優。

基于模型的方法 (Model-Based Methods) - “預言家派”

在這里插入圖片描述

  • 核心思想: 智能體不光學怎么動,還要學環境是怎么運作的! 它試圖建立一個環境模型,這個模型能預測:在狀態s做動作a后,下一個狀態s’會是什么?能拿到多少獎勵r?
  • 怎么用?
    • 有了這個“世界模擬器”,智能體就可以在腦子里做計劃(Planning)!不用每次都去真實環境里撞墻試錯,可以在模型里模擬各種動作序列,看哪個序列預測的累積獎勵最高,然后去執行第一個動作。執行完,用真實結果更新模型,再繼續計劃。大大減少真實交互次數!
  • 經典思路/算法:
    • 動態規劃 (DP): 最理想情況,環境模型(狀態轉移和獎勵函數)完全已知且精確。直接用數學方法(迭代貝爾曼方程)就能算出最優策略和最優價值。現實問題很少這么完美。
    • Dyna: 結合模型和無模型學習(如Q-Learning)。 智能體一邊在真實環境交互學習(更新Q值),一邊用這些交互數據學習環境模型。然后用學到的模型生成大量模擬數據,也用這些模擬數據來更新Q值。提高了樣本效率。
    • MBPO (Model-Based Policy Optimization): 先用數據學環境模型,然后在學到的模型上跑基于策略的方法(如PPO) 來優化策略。模型會不斷用新數據更新。
    • MPC (Model Predictive Control): 工業界常用! 每一步都做:
      1. 觀察當前狀態。
      2. 用模型預測未來有限幾步內不同動作序列的結果。
      3. 選擇預測累積獎勵最高的動作序列。
      4. 只執行這個序列的第一個動作。
      5. 下一步重復1-4。邊走邊看,靈活調整。
  • 適合場景: 真實環境交互代價高昂、危險或緩慢(比如操控真實機器人、化學實驗、金融交易);或者環境本身是可精確建模/仿真的(比如一些棋類游戲、物理仿真器)。
  • 優點: 樣本效率極高(省試錯次數);能進行前瞻性規劃;在仿真中訓練安全。
  • 缺點: 模型很難學得準! 模型預測有誤差,基于錯誤模型學的策略在真實環境會失效(“基于幻覺做決策”);構建和利用模型本身有計算開銷。

對比:

特點基于值 (Value-Based)基于策略 (Policy-Based)基于模型 (Model-Based)
核心 (V/Q值)直接學策略 (Policy)環境模型 (預測 s’ 和 r)
輸出策略間接 (選值最大的動作)直接 (輸出動作或概率)直接或間接 (在模型上規劃)
動作空間適合離散動作離散和連續動作都行離散和連續動作都行
穩定性相對穩定可能不穩定 (策略梯度)依賴模型精度 (模型不準策略就崩)
樣本效率中等通常較低 (尤其REINFORCE)非常高 (能用模型模擬)
規劃能力無顯式規劃無顯式規劃有顯式規劃 (在模型里模擬未來)
經典算法Q-Learning, SARSA, DQN及其變種REINFORCE, Actor-Critic, PPO, DDPG, SACDyna, MBPO, MPC
比喻算盤派 (精打細算每個位置/動作值不值錢)直覺派 (憑感覺和經驗直接出招)預言家派 (先搞懂世界規則,再推演最優解)

簡單選擇指南:

  • 如果你的問題動作是離散的(按鍵選擇),狀態不太復雜,試試Q-Learning/DQN
  • 如果你的問題動作是連續的(控制機械臂、開車),或者需要隨機策略,首選PPO、SAC這類策略梯度/Actor-Critic方法。
  • 如果你有精確的環境模型或者交互代價極高(真機器人、高風險),或者能在好的仿真器里訓練,基于模型的方法 (MBPO, MPC) 是首選,效率極高。
  • Actor-Critic (PPO, SAC) 是當前非常通用和強大的主流選擇。

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

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

相關文章

城市排水生命線安全運行監測項目

近年來,城市內澇、污水溢流等問題頻發,讓排水管網這一"城市生命線"的安全運行備受關注。如何讓地下的"毛細血管"更智能、更可靠?本文將帶您深入解析城市排水生命線安全運行監測項目的建設邏輯與技術內核,看科…

LeetCode - 34. 在排序數組中查找元素的第一個和最后一個位置

題目 34. 在排序數組中查找元素的第一個和最后一個位置 - 力扣&#xff08;LeetCode&#xff09; 思路 查找左邊界 初始化 left 0, right nums.size() - 1 當 left < right 時循環&#xff1a; 計算中點 mid left (right - left) / 2 如果 nums[mid] < target…

Tesollo四指靈巧手DG-4F:18自由度與多種抓取模式結合實現高精度操作

Tesollo四指靈巧手 DG-4F 是一款具備 18 自由度的多模態末端執行器&#xff0c;采用模塊化結構設計&#xff0c;融合人手靈活性與夾爪高效性特點。該產品兼容 Universal Robots、Techman、Doosan Robotics、Rainbow Robotics 等主流機器人平臺&#xff0c;適用于工業自動化、科…

深入淺出JavaScript 原型鏈:對象繼承的“隱形鏈條”

深入淺出JavaScript 原型鏈&#xff1a;對象繼承的“隱形鏈條” 在 JavaScript 的世界里&#xff0c;原型鏈&#xff08;Prototype Chain&#xff09;是一個核心概念。它如同一條隱形的鏈條&#xff0c;連接著所有對象&#xff0c;使得代碼能夠高效地共享屬性和方法。理解原型…

LINUX中MYSQL的使用

LINUX中MYSQL的使用 MYSQL的數據類型 bool&#xff1a; 布爾類型 0 或者 1 CHAR&#xff1a; 單字符的字符 CHAR&#xff08;n&#xff09;:多字節字符 VARCHAR&#xff08;n&#xff09;&#xff1a;可變長度的字符型 TINYINT &#xff1a; 單字節整型 SMALLINT&#x…

打卡第48天:隨機函數與廣播機制

知識點回顧&#xff1a; 隨機張量的生成&#xff1a;torch.randn函數卷積和池化的計算公式&#xff08;可以不掌握&#xff0c;會自動計算的&#xff09;pytorch的廣播機制&#xff1a;加法和乘法的廣播機制 ps&#xff1a;numpy運算也有類似的廣播機制&#xff0c;基本一致 …

學習昇騰開發的第四天--基本指令

1、查看npu當前狀態信息 npu-smi info 2、查看NPU的ID npu-smi info -l3、調用python python3 4、修改用戶名 su - HwHiAiUser 5、查看cann版本 cat /usr/local/Ascend/ascend-toolkit/latest/compiler/version.info 6、刪除文件夾 sudo rm -rf HelloWorld7、在本地環…

vue3 - 自定義hook

自定義hook 簡單點來說就是將人物或者訂單的所有數據和方法放在一個ts文件里面 這樣便于維護 假如一個人只需要管 人物的模塊 那他只需要操作usePerson.ts文件就可以了 //useDog.ts import { ref,reactive} from vue; import axios from axios;export default function(){…

【python】bash: !‘: event not found

報錯 # 2. 測試smplx是否工作&#xff08;可能不需要chumpy&#xff09; python -c "import smplx; print(? smplx works!)"bash: !: event not found 分析 這是bash的歷史擴展問題&#xff0c;感嘆號被解釋為歷史命令。用這些方法解決&#xff1a; &#x1f680…

【Python打卡Day47】注意力熱力圖可視化@浙大疏錦行

可視化空間注意力熱力圖的意義&#xff1a; 提升模型可解釋性 熱力圖能直觀展示模型決策的依據區域&#xff0c;破除深度學習"黑箱"困境。例如在圖像識別中&#xff0c;可以看到模型識別"貓"是因為關注了貓耳和胡須區域&#xff0c;識別"禁止通行&qu…

樹狀數組 2

L - 樹狀數組 2 洛谷 - P3368 Description 如題&#xff0c;已知一個數列&#xff0c;你需要進行下面兩種操作&#xff1a; 將某區間每一個數加上 x&#xff1b; 求出某一個數的值。 Input 第一行包含兩個整數 N、M&#xff0c;分別表示該數列數字的個數和操作的總個數。…

YOLOv2 技術詳解:目標檢測的又一次飛躍

&#x1f9e0; YOLOv2 技術詳解&#xff1a;目標檢測的又一次飛躍 一、前言 在 YOLOv1 提出后&#xff0c;雖然實現了“實時性 單階段”的突破&#xff0c;但其在精度和小物體檢測方面仍有明顯不足。為了彌補這些缺陷&#xff0c;Joseph Redmon 等人在 2017 年提出了 YOLOv2…

JAFAR Jack up Any Feature at Any Resolution

GitHub PaPer JAFAR: Jack up Any Feature at Any Resolution 摘要 基礎視覺編碼器已成為各種密集視覺任務的核心組件。然而&#xff0c;它們的低分辨率空間特征輸出需要特征上采樣以產生下游任務所需的高分辨率模式。在這項工作中&#xff0c;我們介紹了 JAFAR——一種輕量級…

SamWaf 開源輕量級網站防火墻源碼(源碼下載)

SamWaf網站防火墻是一款適用于小公司、工作室和個人網站的開源輕量級網站防火墻&#xff0c;完全私有化部署&#xff0c;數據加密且僅保存本地&#xff0c;一鍵啟動&#xff0c;支持Linux&#xff0c;Windows 64位,Arm64。 主要功能&#xff1a; 代碼完全開源 支持私有化部署…

79Qt窗口_QDockWidget的基本使用

目錄 4.1 浮動窗?的創建 4.2 設置停靠的位置 浮動窗? 在 Qt 中&#xff0c;浮動窗?也稱之為鉚接部件。浮動窗?是通過 QDockWidget類 來實現浮動的功能。浮動窗 ??般是位于核?部件的周圍&#xff0c;可以有多個。 4.1 浮動窗?的創建 浮動窗?的創建是通過 QDockWidget…

UE/Unity/Webgl云渲染推流網址,如何與外部網頁嵌套和交互?

需求分析&#xff1a;用threejs開發的數字孿生模型&#xff0c; 但是通過webgl技術網頁中使用&#xff0c;因為模型數據量大&#xff0c;加載比較慢&#xff0c;且需要和其他的業務系統進行網頁嵌套和交互&#xff0c;使用云渲染技術形成的推流網址&#xff0c;如何與外部網頁嵌…

在Termux中搭建完整Python環境(Ubuntu+Miniconda)

蹲坑也能寫python? ?? 環境準備?? 詳細搭建步驟步驟1:安裝Linux容器工具步驟2:查看可用Linux發行版步驟3:安裝Ubuntu系統步驟4:登錄Ubuntu環境步驟5:下載Miniconda安裝包步驟6:安裝Miniconda? 環境驗證?? 使用技巧?? 注意事項前言:想在吃飯、通勤甚至休息間隙…

EventSourcing.NetCore:基于事件溯源模式的 .NET Core 庫

在現代軟件架構中&#xff0c;事件溯源&#xff08;Event Sourcing&#xff09;已經成為一種非常流行的模式&#xff0c;尤其適用于需要高可用性和數據一致性的場景。EventSourcing.NetCore 是一個基于事件溯源模式的 .NET Core 庫&#xff0c;旨在幫助開發者更加高效地實現這一…

Linux下的第一個程序——進度條(命令行版本)

文章目錄 編寫Linux下的第一個小程序——進度條進度條的樣式前置知識回車和換行緩沖區對回車、換行、緩沖區、輸出的測試代碼簡單的測試樣例倒計時程序 進度條程序理論版本基本框架代碼實現 真實版本基礎框架 代碼實現 編寫Linux下的第一個小程序——進度條 在前面的基礎開發工…

【項目】仿muduo庫one thread one loop式并發服務器前置知識準備

&#x1f4da; 博主的專欄 &#x1f427; Linux | &#x1f5a5;? C | &#x1f4ca; 數據結構 | &#x1f4a1;C 算法 | &#x1f152; C 語言 | &#x1f310; 計算機網絡 |&#x1f5c3;? mysql 本文介紹了一種基于muduo庫實現的主從Reactor模型高并發服務器框架…