Pytorch深度強化學習1-6:詳解時序差分強化學習(SARSA、Q-Learning算法)

目錄

  • 0 專欄介紹
  • 1 時序差分強化學習
  • 2 策略評估原理
  • 3 策略改進原理
    • 3.1 SARSA算法
    • 3.2 Q-Learning算法

0 專欄介紹

本專欄重點介紹強化學習技術的數學原理,并且采用Pytorch框架對常見的強化學習算法、案例進行實現,幫助讀者理解并快速上手開發。同時,輔以各種機器學習、數據處理技術,擴充人工智能的底層知識。

🚀詳情:《Pytorch深度強化學習》


1 時序差分強化學習

在這里插入圖片描述

在Pytorch深度強化學習1-5:詳解蒙特卡洛強化學習原理中我們指出,在現實的強化學習任務中,轉移概率、獎賞函數甚至環境中存在哪些狀態往往很難得知,因此有模型強化學習在實際應用中不可行,而需要免模型學習技術,即假設轉移概率和環境狀態未知,獎賞也僅是根據經驗或需求設計。蒙特卡洛強化學習正是免模型學習中的一種,其核心思想是使用蒙特卡洛方法來估計各個狀態-動作對的值函數。通過對大量的樣本進行采樣,并根據它們的累積獎勵來評估狀態-動作對的價值,智能體可以逐步學習到最優策略。

本節介紹的時序差分強化學習(Temporal Difference Reinforcement Learning)則是另一類免模型學習算法,它結合了動態規劃和蒙特卡洛強化學習的優點,用于在未知環境中進行決策。

2 策略評估原理

策略評估本質上是求解狀態值函數 V π ( s ) V^{\pi}\left( s \right) Vπ(s)或狀態-動作值函數 Q π ( s , a ) Q^{\pi}\left( s,a \right) Qπ(s,a),數值越大表明策略回報越高。從定義出發,蒙特卡洛強化學習核心是采樣近似,基于采樣的算法通常采用增量更新方式節省內存

Q π ( s , a ) = E [ R t ] ∣ s t = s , a t = a ≈ 1 n ∑ i = 1 n R t , i = n 次增量 Q π ( s , a ) × c o u n t ( s , a ) + R t c o u n t ( s , a ) + 1 = n 次增量 Q π ( s , a ) + 1 c o u n t ( s , a ) + 1 ( R t ? Q π ( s , a ) ) \begin{aligned}Q^{\pi}\left( s,a \right) &=\mathbb{E} \left[ R_t \right] \mid_{s_t=s,a_t=a}^{}\\&\approx \frac{1}{n}\sum_{i=1}^n{R_{t,i}}\\&\xlongequal{n\text{次增量}}\frac{Q^{\pi}\left( s,a \right) \times \mathrm{count}\left( s,a \right) +R_t}{\mathrm{count}\left( s,a \right) +1}\\&\xlongequal{n\text{次增量}}Q^{\pi}\left( s,a \right) +\frac{1}{\mathrm{count}\left( s,a \right) +1}\left( R_t-Q^{\pi}\left( s,a \right) \right)\end{aligned} Qπ(s,a)?=E[Rt?]st?=s,at?=a?n1?i=1n?Rt,i?n次增量 count(s,a)+1Qπ(s,a)×count(s,a)+Rt??n次增量 Qπ(s,a)+count(s,a)+11?(Rt??Qπ(s,a))?

因為采樣過程通常以萬次計,因此可以用一個較小的正數 α \alpha α來描述,超參數 α \alpha α可理解為模型的學習率, R t ? Q π ( s , a ) R_t-Q^{\pi}\left( s,a \right) Rt??Qπ(s,a)稱為蒙特卡洛誤差

Q π ( s , a ) = n 次增量 Q π ( s , a ) + α ( R t ? Q π ( s , a ) ) Q^{\pi}\left( s,a \right) \xlongequal{n\text{次增量}}Q^{\pi}\left( s,a \right) +\alpha \left( R_t-Q^{\pi}\left( s,a \right) \right) Qπ(s,a)n次增量 Qπ(s,a)+α(Rt??Qπ(s,a))

動態規劃強化學習核心是自我迭代

Q π ( s , a ) = E [ R t ] ∣ s t = s , a t = a = ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ ∑ a ′ ∈ A π ( s ′ , a ′ ) Q π ( s ′ , a ′ ) ] Q^{\pi}\left( s,a \right) =\mathbb{E} \left[ R_t \right] \mid_{s_t=s,a_t=a}^{}=\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma \sum_{a'\in A}{\pi \left( s',a' \right) Q^{\pi}\left( s',a' \right)} \right] Qπ(s,a)=E[Rt?]st?=s,at?=a?=sS?Pssa?[Rssa?+γaA?π(s,a)Qπ(s,a)]

根據動態特性和當前 Q π ( s , a ) Q^{\pi}\left( s,a \right) Qπ(s,a),具體計算出下一次迭代的 Q π ( s , a ) Q^{\pi}\left( s,a \right) Qπ(s,a)

動態規劃強化學習的優點是計算準確且效率高,但無法適應無模型場景;蒙特卡洛強化學習的優點是克服無模型障礙,但有更新延遲現象。時序差分強化學習是動態規劃與蒙特卡洛的折中

Q π ( s t , a t ) = n 次增量 Q π ( s t , a t ) + α ( R t ? Q π ( s t , a t ) ) = n 次增量 Q π ( s t , a t ) + α ( r t + 1 + γ R t + 1 ? Q π ( s t , a t ) ) = n 次增量 Q π ( s t , a t ) + α ( r t + 1 + γ Q π ( s t + 1 , a t + 1 ) ? Q π ( s t , a t ) ) ? 采樣 \begin{aligned}Q^{\pi}\left( s_t,a_t \right) &\xlongequal{n\text{次增量}}Q^{\pi}\left( s_t,a_t \right) +\alpha \left( R_t-Q^{\pi}\left( s_t,a_t \right) \right) \\\,\, &\xlongequal{n\text{次增量}}Q^{\pi}\left( s_t,a_t \right) +\alpha \left( r_{t+1}+\gamma R_{t+1}-Q^{\pi}\left( s_t,a_t \right) \right) \\\,\, &\xlongequal{n\text{次增量}}{ \underset{\text{采樣}}{\underbrace{Q^{\pi}\left( s_t,a_t \right) +\alpha \left( r_{t+1}+{ \gamma Q^{\pi}\left( s_{t+1},a_{t+1} \right) }-Q^{\pi}\left( s_t,a_t \right) \right) }}}\end{aligned} Qπ(st?,at?)?n次增量 Qπ(st?,at?)+α(Rt??Qπ(st?,at?))n次增量 Qπ(st?,at?)+α(rt+1?+γRt+1??Qπ(st?,at?))n次增量 采樣 Qπ(st?,at?)+α(rt+1?+γQπ(st+1?,at+1?)?Qπ(st?,at?))???

其中 r t + 1 + γ Q π ( s t + 1 , a t + 1 ) ? Q π ( s t , a t ) r_{t+1}+\gamma Q^{\pi}\left( s_{t+1},a_{t+1} \right) -Q^{\pi}\left( s_t,a_t \right) rt+1?+γQπ(st+1?,at+1?)?Qπ(st?,at?)稱為時序差分誤差。當時序差分法只使用一步實際獎賞時稱為 T D ( 0 ) TD(0) TD(0)算法,擴展為 T D ( n ) TD(n) TD(n)算法,當 n n n充分大時退化為蒙特卡洛強化學習

3 策略改進原理

類似地,時序差分強化學習同樣分為同軌策略和離軌策略,前者的代表性算法是SARSA算法,后者的代表性算法是Q-learning算法

3.1 SARSA算法

SARSA算法流程圖如下所示

在這里插入圖片描述

3.2 Q-Learning算法

Q-Learning算法流程圖如下所示

在這里插入圖片描述


🔥 更多精彩專欄

  • 《ROS從入門到精通》
  • 《Pytorch深度學習實戰》
  • 《機器學習強基計劃》
  • 《運動規劃實戰精講》

👇源碼獲取 · 技術交流 · 抱團學習 · 咨詢分享 請聯系👇

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

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

相關文章

老人的數目

給你一個下標從 0 開始的字符串 details 。details 中每個元素都是一位乘客的信息,信息用長度為 15 的字符串表示,表示方式如下: 前十個字符是乘客的手機號碼。接下來的一個字符是乘客的性別。接下來兩個字符是乘客的年齡。最后兩個字符是乘…

QGIS 加載在線XYZ地圖圖層

QGIS 加載在線XYZ地圖圖層 定義并添加必應XYZ圖層 Go to Layer > Add Layer > Add XYZ Layer…Click NewName as BingMaps(as you wish)URL as http://ecn.t3.tiles.virtualearth.net/tiles/a{q}.jpeg?g1click OkSelect XYZ Connections as Bing Maps(Which you creat…

PR自動剪輯視頻工具AI智能剪輯插件AutoPod

推薦一款可以提高剪輯效率,節約時間成本的AI人工智能自動剪輯視頻制作工具pr插件Autopod,輔助你更快地完成視頻內容的編輯工作。 Autopod 插件是一款應用于 Adobe Premiere Pro 軟件的插件,用于自動剪輯。該插件能夠識別和處理視頻和音頻素材…

Spring Boot 常用注解分類

目錄 1.核心注解:2.配置相關注解:3.控制器相關注解:4.數據訪問相關注解:5.測試相關注解:6.條件注解:7.AOP相關注解:8.定時任務相關注解:9.消息隊列相關注解:10.Spring Se…

函數式編程解析:定義、功能與Java實踐

目錄 一、函數式編程1.1 什么是函數式編程1.2 函數式編程特征1.2.1 純函數1.2.2 函數是一等公民 1.3 函數式編程在java中的實踐 參考資料 一、函數式編程 1.1 什么是函數式編程 函數式編程(Functional Programming)是一種編程范式,它將計算…

ES6中的迭代器和set、map集合

什么是迭代器? 一種機制,也是一種接口,為數據結構提供統一訪問接口,依次處理數據據結構成員 只要實現了迭代器接口,就可以使用for...of循環遍歷。 /*** 迭代器是一種機制 是一種接口 只要數據解構實現了接口 就可…

力扣labuladong一刷day36天

力扣labuladong一刷day36天 一、96. 不同的二叉搜索樹 題目鏈接:https://leetcode.cn/problems/unique-binary-search-trees/ 思路:這是一道典型的動態規劃題,從n3來看 子樹有幾種形態 (0, 2)、(1, 1)、(2, 0)有規律可循,即為左…

飛天使-linux操作的一些技巧與知識點4

文章目錄 ansible配置文件的優先級嘗試開始進行操作ansible常用模塊ansible 的playbook示例安裝phpplaybook中變量的引用 ansible yum install -y ansible 測試是否可用 ansible localhost -m ping /etc/ansible/ansible.cfg :主配置文件,配置 ansible…

大公司求我用Kotlin寫個通用爬蟲模板

bug虐我千百遍,我待他如初戀。每次深夜挑燈都是我與bug較量的時間。今天我要說的就是寫一個爬蟲模版,自動抓取百度圖片的教程,這次使用Kotlin編寫的爬蟲程序在Scrapy框架下完成的,如有不足歡迎指正。 首先,使用Kotlin編…

Mybatis-Plus源碼解析之@MapperScan(一)

group : com.baomidou version:3.5.2.2-SNAPSHOT baomidou官網可以從快速開始了解到,除了配置數據源,最重要的就是MapperScan 注解,在 Spring Boot 啟動類中添加 MapperScan 注解,掃描 Mapper 文件夾。 MapperScan 按照慣例&…

angular form 組件、雙向綁定;反應式表單

1.使用雙向綁定,以及angular的表單提交功能 app.moudle中引入 雙向綁定 [(ngModel)]"text" ??????? 效果 提交表單 2.反應式表單 在app.module.ts中引入在組件中引入,并放在一個變量里 在初始化時實列化這個module 定義規則 在html…

Linux:環境變量

目錄 1.基本變量 2.通過代碼獲取環境變量 2.1 main傳參 2.2 全局變量environ 2.3 系統調用getenv() 3.在腳本文件中添加環境變量 4.環境變量通常是具有全局屬性 1.基本變量 環境變量(environment variables)一般是指在操作系統中用來指定操作系統運行環境的一些參數…

商用中央空調市場分析:預計2028年將達到628億元

商用空調一直以來都沒有一個相對比較明確的概念,一直以來被認為是制冷空調市場的一個細分子行業。現在比較一致的觀點是,可以納入商用空調范疇的產品可以包括戶式中央空調產品、部分傳統中央空調產品以及部分家用空調。商用空調已普遍采用直流變頻領先技…

網絡計算機模擬實現

今天給大家說說前幾天完成的一個模擬的網絡計算機吧,雖然計算機的模擬實現的原理很簡單,但是如果要想寫乘網絡的,個人認為是不簡單的。基本上算是包涵了套接字編程的三分之一的知識點,此處的套接字編程指的是在理解TCP/IP五層協議…

泡沫玻璃市場分析:預計2028年將達到14億美元

泡沫玻璃最早是由美國匹茲堡康寧公司發明的,是由碎玻璃、發泡劑、改性添加劑和發泡促進劑等,經過細粉碎和均勻混合后,再經過高溫熔化,發泡、退火而制成的無機非金屬玻璃材料。它是由大量直徑為1~2毫米的均勻氣泡結構組成。其中吸聲…

Linux 常用命令----mktemp 命令

文章目錄 基本用法實例演示高級用法注意事項 mktemp 命令用于創建一個臨時文件或目錄,這在需要處理臨時數據或進行安全性測試時非常有用。使用 mktemp 可以保證文件名的唯一性,避免因文件名沖突而導致的問題。 基本用法 創建臨時文件: 命令 mktemp 默認…

Go語言基礎知識學習(一)

Go基本數據類型 bool bool型值可以為true或者false,例子: var b bool true數值型 類型表示范圍int8有符號8位整型-128 ~ 127int16有符號16位整型-32768 ~ 32767int32有符號32位整型-2147783648 ~ 2147483647int64有符號64位整型uint8無符號8位整型0 ~ 255uint16…

優思學院|如何建立公司運營指標體系?如何推行六西格瑪改進運營指標?

關鍵績效指標 (KPI) 是測量您團隊或組織朝重要商業目標進展表現如何的量化指標,組織會在多個層面使用 KPI,這視乎您想要追蹤何指標而定,您可以設定全組織的、特定團隊的、或甚至是個人 KPI。 良好的KPI能讓公司管理者掌握組織的營運是否進度…

使用React 18、Echarts和MUI實現溫度計

關鍵詞 React 18 Echarts和MUI 前言 在本文中,我們將結合使用React 18、Echarts和MUI(Material-UI)庫,展示如何實現一個交互性的溫度計。我們將使用Echarts繪制溫度計的外觀,并使用MUI創建一個漂亮的用戶界面。 本文…

點評項目——分布式鎖

2023.12.10 集群模式下的并發安全問題及解決 隨著現在分布式系統越來越普及,一個應用往往會部署在多臺機器上(多節點),通過加鎖可以解決在單機情況下的一人一單安全問題,但是在集群模式下就不行了。見下圖&#xff1a…