強化學習筆記(三)——表格型方法(蒙特卡洛、時序差分)

強化學習筆記(三)——表格型方法(蒙特卡洛、時序差分)

  • 一、馬爾可夫決策過程
  • 二、Q表格
  • 三、免模型預測
    • 1. 蒙特卡洛策略評估
      • 1) 動態規劃方法和蒙特卡洛方法的差異
    • 2. 時序差分
      • 2.1 時序差分誤差
      • 2.2 時序差分方法的推廣
    • 3. 自舉與采樣

一、馬爾可夫決策過程

狀態轉移概率:用 p [ s t + 1 , r t ∣ s t , a t ] p[s_{t+1}, r_t \vert s_t, a_t ] p[st+1?,rt?st?,at?]表示在狀態 s t s_t st?選擇動作 a t a_t at?時,轉移到狀態 s t + 1 s_{t+1} st+1?,得到獎勵 r t r_t rt?概率
狀態轉移概率是具有馬爾可夫性質的,系統下一時刻的狀態僅有當前時刻的狀態決定,不依賴于以往任何狀態。

馬爾可夫決策過程的四元組: ( S , A , P , R ) (S,A,P,R) (S,A,P,R)。加上折扣因子 γ \gamma γ組成五元組。

概率函數: P [ s t + 1 , r t ∣ s t , a t ] P[s_{t+1}, r_t \vert s_t, a_t] P[st+1?,rt?st?,at?]
獎勵函數: R [ s t , a t ] R[s_t, a_t] R[st?,at?]
若知道概率函數和獎勵函數,則馬爾可夫決策過程就是已知的,可以通過策略迭代和價值迭代找到最佳策略。換句話說,如果知道環境的狀態轉移概率和獎勵函數,則環境就是已知的,可以用這兩個函數來描述環境。這種情況下的算法為有模型算法。

如果環境未知,則是免模型算法。

免模型強化學習方法沒有獲取環境的狀態轉移和獎勵函數,而是讓智能體與環境進行交互,采集大量的軌跡,從軌跡中獲取信息改進策略。

二、Q表格

如下圖所示,Q表格的行為所有狀態,列為所有動作。最開始Q表格全部初始化為0。當交互足夠多時,可以估算出每一個狀態下,每個動作的平均總獎勵,更新Q表格。

Q表格

強化:指可以用下一個狀態的價值更新當前狀態的價值,即自舉

每走一步更新一次Q表格,用下一個狀態的Q值更新當前狀態的Q值,這種單步更新的方法稱為時序差分方法(TD,Temporal Difference)。

三、免模型預測

在免模型狀態下,可以通過蒙特卡洛方法時序差分方法估計某個給定策略的價值。

1. 蒙特卡洛策略評估

是基于采樣的方法,給定策略 π \pi π,讓智能體與環境交互,得到很多軌跡。每個軌跡都有回報:
G t = r t + 1 + γ r t + 2 + γ 2 r t + 3 + ? G_t = r_{t+1} + \gamma r_{t+2} + \gamma^2 r_{t+3} + \cdots Gt?=rt+1?+γrt+2?+γ2rt+3?+?則某一個策略對應狀態的價值,可以用所有軌跡的回報的平均值表示:
V π ( s ) = E τ ~ π [ G t ∣ s t = s ] V_{\pi} (s ) = \mathbb{E}_{\tau \sim \pi} [G_t \vert s_t = s ] Vπ?(s)=Eτπ?[Gt?st?=s]蒙特卡洛仿真指:可以采樣大量的軌跡,計算所有軌跡的真實回報,計算平均值。
其使用經驗平均回報的方法進行估計,因此不需要狀態轉移函數和獎勵函數,也不需要自舉。
蒙特卡洛只能用在有終止的馬爾可夫決策過程中。

寫成增量式蒙特卡洛
N ( s t ) ← N ( s t ) + 1 V ( s t ) ← V ( s t ) + 1 N ( s t ) ( G t ? V ( s t ) ) N(s_t) \leftarrow N(s_t) + 1 \\ V(s_t) \leftarrow V(s_t) + \frac{1}{N (s_t) } \left( G_t - V (s_t) \right) N(st?)N(st?)+1V(st?)V(st?)+N(st?)1?(Gt??V(st?)) 1 N ( s t ) \frac{1}{N (s_t) } N(st?)1?看成學習率 α \alpha α,則
V ( s t ) ← V ( s t ) + α ( G t ? V ( s t ) ) V(s_t) \leftarrow V(s_t) + \alpha \left( G_t - V (s_t) \right) V(st?)V(st?)+α(Gt??V(st?))

1) 動態規劃方法和蒙特卡洛方法的差異

動態規劃中使用了自舉的思想,即基于之前估計的量來估計一個量。同時使用了貝爾曼期望備份,通過上一時刻的 V i ? 1 ( s ′ ) V_{i-1} (s') Vi?1?(s)來更新當前時刻的 V i ( s ) V_i (s) Vi?(s),即
V i ( s ) ← ∑ a ∈ A π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V i ? 1 ( s ′ ) ) V_i (s) \leftarrow \sum_{a \in A} \pi (a \vert s) \left( R(s,a) + \gamma \sum_{s' \in S} P \left( s' \vert s,a \right) V_{i-1} (s') \right) Vi?(s)aA?π(as)(R(s,a)+γsS?P(ss,a)Vi?1?(s)) 不停迭代后可以收斂。
貝爾曼期望備份有2層加和,內部和與外部和,計算兩次期望,得到一個更新。

蒙特卡洛通過一個回合的經驗平均回報來進行更新
V ( s t ) ← V ( s t ) + α ( G i , t ? V ( s t ) ) V(s_t) \leftarrow V(s_t) + \alpha \left( G_{i,t} - V (s_t) \right) V(st?)V(st?)+α(Gi,t??V(st?))蒙特卡洛方法得到的軌跡是已經決定的,采取的動作也是決定的,只更新該軌跡上的所有狀態,與該軌跡無關的狀態都不進行更新。

蒙特卡洛適用于環境未知的情況,動態規劃是有模型的方法;
蒙特卡洛只需要更新一條軌跡的狀態,動態規劃需要更新所有狀態。

2. 時序差分

是介于蒙特卡洛和動態規劃之間的方法,免模型,可以從不完整的回合中學習,并結合了自舉的思想。

目的:對某個給定的策略 π \pi π,在線計算出七價值函數 V π V_\pi Vπ?,即一步一步的算。最簡單的算法是一步時序差分,即TD(0)。每往前走一步,就做一步自舉,用得到的估計回報 r t + 1 + γ V ( s t + 1 ) r_{t+1} + \gamma V( s_{t+1}) rt+1?+γV(st+1?)來更新上一時刻的 V ( s t ) V(s_t) V(st?)
V ( s t ) ← V ( s t ) + α ( r t + 1 + γ V ( s t + 1 ) ? V ( s t ) ) V(s_t) \leftarrow V(s_t) + \alpha \left( r_{t+1} + \gamma V (s_{t+1}) - V (s_t) \right) V(st?)V(st?)+α(rt+1?+γV(st+1?)?V(st?))其中估計回報 r t + 1 + γ V ( s t + 1 ) r_{t+1} + \gamma V (s_{t+1}) rt+1?+γV(st+1?)稱為時序差分目標,是帶衰減的未來獎勵的總和

時序差分目標由2部分組成:

  1. 走了某一步之后得到的實際獎勵 r t + 1 r_{t+1} rt+1?
  2. 利用自舉方法,通過之前的估計來估計 V ( s t + 1 ) V(s_{t+1}) V(st+1?),且加了折扣因子 γ \gamma γ

時序差分目標之所以是估計,有2個原因:

  1. 時序差分方法對期望值進行采樣;
  2. 時序差分方法使用當前的估計的V,而不是真實的 V π V_\pi Vπ?

2.1 時序差分誤差

δ = r t + 1 + γ V ( s t + 1 ) ? V ( s t ) \delta = r_{t+1} + \gamma V (s_{t+1} ) - V (s_t) δ=rt+1?+γV(st+1?)?V(st?)類比增量式蒙特卡洛:
V ( s t ) ← V ( s t ) + α ( G i , t ? V ( s t ) ) V(s_t) \leftarrow V(s_t) + \alpha \left( G_{i,t} - V (s_t) \right) V(st?)V(st?)+α(Gi,t??V(st?))這里的 G i , t G_{i,t} Gi,t?即為 r t + 1 + γ V ( s t + 1 ) r_{t+1} + \gamma V (s_{t+1} ) rt+1?+γV(st+1?) G i , t ? V ( s t ) G_{i,t} - V (s_t) Gi,t??V(st?)即為 δ = r t + 1 + γ V ( s t + 1 ) ? V ( s t ) \delta = r_{t+1} + \gamma V (s_{t+1} ) - V (s_t) δ=rt+1?+γV(st+1?)?V(st?)。在蒙特卡洛里, G i , t G_{i,t} Gi,t?是實際得到的值,因為它已經把一條軌跡跑完了。而時序差分不等軌跡結束,往前走一步,就可以更新價值函數。時序差分只執行一步,狀態的值就更新。蒙特卡洛方法全部執行完之后,到了終止狀態之后,再更新它的值。

蒙特卡洛和時序差分
對比:

  1. 時序差分可以在線學習,每走一步就更新,效率高。蒙特卡洛要等游戲結束才能學習。
  2. 時序差分可以從不完整序列上進行學習,蒙特卡洛只能從完整序列上學習。
  3. 時序差分可以再連續的環境下(沒有終止)進行學習,蒙特卡洛只能在有終止的情況下學習。
  4. 時序差分李永樂馬爾科夫性質,在馬爾可夫環境下有更好的學習效率。蒙特卡洛沒有假設具有該性質。

2.2 時序差分方法的推廣

往前走一步為TD(0),可以調整步數,變成n步時序差分。如TD(2)即為往前走2步,利用2步得到的回報,使用自舉來更新狀態的價值。因此可以通過調整步數,來調整算法所需要的實際獎勵和自舉。
n = 1 ( T D ) G t ( 1 ) = r t + 1 + γ V ( s t + 1 ) n = 2 G t ( 2 ) = r t + 1 + γ r t + 2 + γ 2 V ( s t + 2 ) ? n = ∞ ( M C ) G t ∞ = r t + 1 + γ r t + 2 + ? + γ T ? t ? 1 r T \begin{aligned} n=1(TD) \qquad \qquad G_t^{(1)} &= r_{t+1} + \gamma V(s_{t+1}) \\ n = 2 \qquad \qquad \qquad G_t^{(2)} &= r_{t+1} + \gamma r_{t+2} + \gamma^2 V(s_{t+2}) \\ \vdots \\ n = \infty (MC) \qquad \qquad G_t^\infty &= r_{t+1} + \gamma r_{t+2} + \cdots + \gamma^{T-t-1} r_T \end{aligned} n=1(TD)Gt(1)?n=2Gt(2)??n=(MC)Gt??=rt+1?+γV(st+1?)=rt+1?+γrt+2?+γ2V(st+2?)=rt+1?+γrt+2?+?+γT?t?1rT?? n = ∞ n=\infty n=時,則整個游戲結束后再進行更新,時序差分就變成了蒙特卡洛。

以上為時序差分目標。得到時序差分目標之后,用增量式學習的方法更新狀態的價值:
V ( s t ) ← V ( s t ) + α ( G t n ? V ( s t ) ) V(s_t) \leftarrow V(s_t) + \alpha \left( G_t^n - V (s_t) \right) V(st?)V(st?)+α(Gtn??V(st?))

3. 自舉與采樣

自舉是指更新時使用了估計
蒙特卡洛沒有使用自舉,它根據實際的回報進行更新,沒有估計。動態規劃和時序差分使用了自舉。

采樣是指更新時通過采樣得到一個期望
蒙特卡洛是純采樣的方法。動態規劃沒有采樣,根據貝爾曼期望方程進行更新狀態價值。時序差分使用了采樣,時序差分目標 G G G由2部分組成,采樣與自舉。

  • 動態規劃:直接計算期望,把所有相關狀態都加和
    V ( s t ) ← E π [ r t + 1 + γ V ( s t + 1 ) ] V(s_t) \leftarrow \mathbb{E}_\pi [ r_{t+1} + \gamma V(s_{t+1}) ] V(st?)Eπ?[rt+1?+γV(st+1?)]
    動態規劃

  • 蒙特卡洛:在當前狀態下,采取一條支路,在該路徑上更新,即更新該路徑上的所有狀態
    V ( s t ) ← V ( s t ) + α ( G t ? V ( s t ) ) V(s_t) \leftarrow V(s_t) + \alpha ( G_t - V (s_t) ) V(st?)V(st?)+α(Gt??V(st?))
    蒙特卡洛

  • 時序差分:從當前狀態開始,往前走1步,關注局部的步驟
    T D ( 0 ) : V ( s t ) ← V ( s t ) α ( r t + 1 + γ V ( s t + 1 ) ? V ( s t ) ) TD(0): \quad V(s_t) \leftarrow V(s_t) _ \alpha \left( r_{t+1} + \gamma V (s_{t+1}) - V(s_t) \right) TD(0):V(st?)V(st?)α?(rt+1?+γV(st+1?)?V(st?))
    時序差分
    如果時序差分進行廣度的更新,就變成了動態規劃;
    如果時序差分需要深度的更新,就變成了蒙特卡洛。

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

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

相關文章

c++_csp-j算法 (4)

迪克斯特拉() 介紹 迪克斯特拉算法(Dijkstra算法)是一種用于解決單源最短路徑問題的經典算法,由荷蘭計算機科學家艾茲赫爾迪克斯特拉(Edsger W. Dijkstra)于1956年提出。迪克斯特拉算法的基本思想是通過逐步擴展已經找到的最短路徑集合,逐步更新節點到源節點的最短路…

(13)VTK C++開發示例 --- 透視變換

文章目錄 1. 概述2. CMake鏈接VTK3. main.cpp文件4. 演示效果 更多精彩內容👉內容導航 👈👉VTK開發 👈 1. 概述 在VTK(Visualization Toolkit)中,vtkPerspectiveTransform 和 vtkTransform 都是…

深入探索Qt異步編程--從信號槽到Future

概述 在現代軟件開發中,應用程序的響應速度和用戶體驗是至關重要的。尤其是在圖形用戶界面(GUI)應用中,長時間運行的任務如果直接在主線程執行會導致界面凍結,嚴重影響用戶體驗。 Qt提供了一系列工具和技術來幫助開發者實現異步編程,從而避免這些問題。本文將深入探討Qt…

基于Python的圖片/簽名轉CAD小工具開發方案

基于Python的圖片/簽名轉CAD工具開發方案 一、項目背景 傳統設計流程中,設計師常常需要將手寫簽名或掃描圖紙轉換為CAD格式。本文介紹如何利用Python快速開發圖像矢量化工具,實現: 📷 圖像自動預處理?? 輪廓精確提取?? 參數…

【倉頡 + 鴻蒙 + AI Agent】CangjieMagic框架(17):PlanReactExecutor

CangjieMagic框架:使用華為倉頡編程語言編寫,專門用于開發AI Agent,支持鴻蒙、Windows、macOS、Linux等系統。 這篇文章剖析一下 CangjieMagic 框架中的 PlanReactExecutor。 1 PlanReactExecutor的工作原理 #mermaid-svg-OqJUCSoxZkzylbDY…

一文了解相位陣列天線中的真時延

本文要點 真時延是寬帶帶相位陣列天線的關鍵元素之一。 真時延透過在整個信號頻譜上應用可變相移來消除波束斜視現象。 在相位陣列中使用時延單元或電路板,以提供波束控制和相移。 市場越來越需要更快、更可靠的通訊網絡,而寬帶通信系統正在努力滿…

Java中 關于編譯(Compilation)、類加載(Class Loading) 和 運行(Execution)的詳細區別解析

以下是Java中 編譯(Compilation)、類加載(Class Loading) 和 運行(Execution) 的詳細區別解析: 1. 編譯(Compilation) 定義 將Java源代碼(.java文件&#x…

【KWDB 創作者計劃】_深度學習篇---松科AI加速棒

文章目錄 前言一、簡介二、安裝與配置硬件連接驅動安裝軟件環境配置三、使用步驟初始化設備調用SDK接口檢測設備狀態:集成到AI項目四、注意事項兼容性散熱固件更新安全移除五、硬件架構與技術規格核心芯片專用AI處理器內存配置接口類型物理接口虛擬接口能效比散熱設計六、軟件…

如何清理Windows系統中已失效或已刪除應用的默認打開方式設置

在使用Windows系統的過程中,我們可能會遇到一些問題:某些已卸載或失效的應用程序仍然出現在默認打開方式的列表中,這不僅顯得雜亂,還可能影響我們快速找到正確的程序來打開文件。 如圖,顯示應用已經被geek強制刪除&am…

NFC碰一碰發視頻推廣工具開發注意事項丨支持OEM搭建

隨著線下門店短視頻推廣需求的爆發,基于NFC技術的“碰一碰發視頻”推廣工具成為商業熱點。集星引擎在開發同類系統時,總結出六大核心開發注意事項,幫助技術團隊與品牌方少走彎路,打造真正貼合商戶需求的實用型工具: 一…

pgsql中使用jsonb的mybatis-plus和Spring Data JPA的配置

在pgsql中使用jsonb類型的數據時,實體對象要對其進行一些相關的配置,而mybatis和jpa中使用各不相同。 在項目中經常會結合 MyBatis-Plus 和 JPA 進行開發,MyBatis_plus對于操作數據更靈活,jpa可以自動建表,兩者各取其…

kotlin + spirngboot3 + spring security6 配置登錄與JWT

1. 導包 implementation("com.auth0:java-jwt:3.14.0") implementation("org.springframework.boot:spring-boot-starter-security")配置用戶實體類 Entity Table(name "users") data class User(IdGeneratedValue(strategy GenerationType.I…

【JavaWeb后端開發03】MySQL入門

文章目錄 1. 前言1.1 引言1.2 相關概念 2. MySQL概述2.1 安裝2.2 連接2.2.1 介紹2.2.2 企業使用方式(了解) 2.3 數據模型2.3.1 **關系型數據庫(RDBMS)**2.3.2 數據模型 3. SQL語句3.1 DDL語句3.1.1 數據庫操作3.1.1.1 查詢數據庫3.1.1.2 創建數據庫3.1.1…

人工智能在智能家居中的應用與發展

隨著人工智能(AI)技術的飛速發展,智能家居逐漸成為現代生活的重要組成部分。從智能語音助手到智能家電,AI正在改變我們與家居環境的互動方式,讓生活更加便捷、舒適和高效。本文將探討人工智能在智能家居中的應用現狀、…

【EasyPan】項目常見問題解答(自用持續更新中…)

EasyPan 網盤項目介紹 一、項目概述 EasyPan 是一個基于 Vue3 SpringBoot 的網盤系統,支持文件存儲、在線預覽、分享協作及后臺管理,技術棧涵蓋主流前后端框架及中間件(MySQL、Redis、FFmpeg)。 二、核心功能模塊 用戶認證 注冊…

4.1騰訊校招簡歷優化與自我介紹攻略:公式化表達+結構化呈現

騰訊校招簡歷優化與自我介紹攻略:公式化表達結構化呈現 在騰訊校招中,簡歷是敲開面試大門的第一塊磚,自我介紹則是展現個人魅力的黃金30秒。本文結合騰訊面試官偏好,拆解簡歷撰寫公式、自我介紹黃金結構及分崗位避坑指南&#xf…

【Easylive】consumes = MediaType.MULTIPART_FORM_DATA_VALUE 與 @RequestPart

【Easylive】項目常見問題解答(自用&持續更新中…) 匯總版 consumes MediaType.MULTIPART_FORM_DATA_VALUE 的作用 1. 定義請求的數據格式 ? 作用:告訴 Feign 和 HTTP 客戶端,這個接口 接收的是 multipart/form-data 格式的…

OpenSSL1.1.1d windows安裝包資源使用

環境: QT版本:5.14.2 用途: openssl1.1.1d版本 問題描述: 今天嘗試用百度云人臉識別api搭載QT的人臉識別程序,需要用到 QNetworkManager 訪問 https 開頭的網址。 但是遇到了QT缺乏 openssl 的相關問題,找了大半天…

代碼實戰保險花銷預測

文章目錄 摘要項目地址實戰代碼(初級版)實戰代碼(進階版) 摘要 本文介紹了一個完整的機器學習流程項目,重點涵蓋了多元線性回歸的建模與評估方法。項目詳細講解了特征工程中的多項實用技巧,包括&#xff1…

RS232 串行通信:C++ 實現指南

文章目錄 一、RS232 簡介1. 電氣特性2. 傳輸速率3. 傳輸距離 二、在 C 中實現 RS232 通信1. Windows 平臺(1)打開串行端口(2)配置串行通信參數(3)發送數據(4)接收數據(5&…