深度策略梯度算法PPO

一、策略梯度核心思想和原理

從時序差分算法Q學習到深度Q網絡,這些算法都側重于學習和優化價值函數,屬于基于價值的強化學習算法(Value-based)。

1. 基于策略方法的主要思想(Policy-based)

基于價值類方法當狀態動作空間較大且連續時面臨挑戰,對基于策略的目標函數使用梯度上升優化參數最大化獎勵。在策略梯度中,參數化的策略π不再是一個概率集合,而是一個概率密度函數

2. 優點:建模效率高、探索性更好、收斂性更優

3. 模型結構

是無環境模型的結構,神經網絡作為策略函數近似器,其參數表示或策略

仍然是一個無環境模型結構,和之前基于價值類的方法有很大的不同。首先,策略不再是隱式的,而是要直接求解。對于深度策略梯度而言就是使用神經網絡作為策略函數的函數逼近器,通過神經網絡的參數來表示策略π。其次,在下邊的PGM圖中,沒有畫出價值結點,多了獎勵累計部分,這是因為經典的策略梯度方法經常使用獎勵和的期望作為優化的目標,而不直接使用狀態價值函數V(s),或者動作價值函數Q(s,a)。與之前的Value-Based方法不同,基于策略的方法不依賴與價值函數的估計,不適用貝爾曼方程或者貝爾曼期望方程,是直接使用神經網絡逼近策略函數,并使用策略梯度來進行更新。

R(t)和G(t)的區別:其中R(t)是累計獎勵,G(t)是回報。回報是隨時間步變化的量,累計獎勵R是整個episode的獎勵的總和。

4. 目標函數

episode可以用很多個,比如打游戲每個回合就是一個episode,希望在多個回合中找到最佳策略或者規律。目標函數的設計原則就是所有的回合總回報的加權平均值最大(用加權平均的原因是因為每條軌跡發生的概率不同,用的經常發生,有的發生的概率極小,顯然不能平均)

5. 策略梯度的兩種常見改進

5.1 添加基線:如前所述,策略梯度的計算往往采樣軌跡的方法。通過多條軌跡,也就是多次與環境的交互來收集數據,每條軌跡都會算出來一個梯度用來更新函數的參數,然而單條軌跡梯度可能存在高方差的問題,容易導致訓練過程的不穩定,或者說收斂的速度比較慢。為了解決這個問題,引入所謂基線這一概念,就是在目標函數梯度中減去一個b,其中b代表baseline,b是一個相對獎勵的參考值,因為他的波動范圍相對來說更小,因此可以使訓練過程更加穩定并且加快收斂速度。具體可以通過減去獎勵均值,再除以方差來實現,這樣可以將獎勵調整為正態分布,從而使得梯度更新的尺度更加合適。這一項叫優勢函數,某種程度上可以將優勢函數視為價值函數在策略梯度算法中的一種變體。在強化學習中,價值函數通常在基于價值的方法,如動態規劃、Q-Learring等中使用,來估計狀態或者動作的價值來指導agent的決策。在策略梯度的方法當中,通常使用優勢函數,不過這都屬于價值評估的范疇。如果我們用便想邊干來比喻強化學習過程的話,想就代表求價值,干就是求策略,優勢函數就是屬于想的這個范疇中。

5.2 改進二:Credit-Assignment功勞分配

在前面的目標函數當中,同一個episode中所有時間步的狀態動作對使用同樣的獎勵來進行加權,這顯然是不公平的,因為在同一個episode中有些動作是好的,有些動作是不好的,不應該公平對待。改進如下:在計算總回報的時候,只計算當前時刻之后的獎勵,忽略之前的。還可以再未來獎勵前加個折扣,讓影響力計算更加合理,因為一般情況下,時間拖的越久,未來時刻對當前時刻的影響力就越小。因此γ隨時間呈指數級的減小。

6. 策略梯度的適用條件和常見的應用場景

6.1 策略梯度方法可以處理連續的問題,而不需要對動作空間進行離散化。

6.2 適用于高緯度狀態空間的問題,可以處理包含大量狀態的環境。

6.3 通過參數化的策略函數,使得策略可以靈活調整和優化

在應用場景方面,策略梯度方法適用于各種強化學習任務,比如機器人控制、游戲等等。這些問題中往往都有連續動作空間,此外面對高緯度狀態空間問題,圖像處理任務,自然語言處理任務等,策略梯度表現出良好的適應性,還有就是策略梯度方法可以很好的應用于帶有約束的優化問題。總的來說策略梯度方法相對于基于價值的方法更加靈活,特別是在連續動作空間和高緯度狀態空間的情況下。

面臨的挑戰:梯度估計的方差問題和采樣效率等等,在離散動作空間和低緯狀態空間中基于價值的方法更具有優勢。

二、蒙特卡洛策略梯度

在強化學習中提到蒙特卡洛一般就是指基于經驗的學習方法,使用采樣軌跡進行學習,而且通常是用完整的軌跡進行學習和估計。

1. 主要思想:蒙特卡洛策略梯度就是一種結合了蒙特卡洛學習和策略梯度的方法,通過采樣軌跡,采用梯度上升法,更新參數,最大化累計獎勵。

2. 模型結構

屬于無環境模型,用神經網絡逼近策略函數。選用回報,而非總回報表示價值。

3. 概念對比

4. 目標函數:給定策略之后的累計期望

5. 適用條件

5.1 通常適用于離散空間的強化學習問題,不需要進行連續的動作選擇。

5.2 不依賴環境模型的支持,而是通過環境模型的交互來收集經驗的樣本。

5.3 由于該方法使用完整的軌跡方法進行參數更新,進而可以處理高方差問題,更好地利用軌跡中的獎勵信息

5.4 無需探索策略或探索率,因為可以通過與環境的交互來進行自然地探索,這使得他在探索利用平衡方面更加靈活。

三、近端策略優化算法(PPO)

Proximal Policy Optimization

1. 主要思想:

傳統策略梯度方法是同策略的,有一些列顯著的缺點:

采樣效率低:每個樣本只用于一次更新,用完就廢掉,無法重復利用

方差大、收斂不穩定:受樣本隨機性和噪聲的影響

難以探索新策略空間:只使用當前的采樣數據,容易陷入局部最優

優點:異策略(off-policy)將采樣與學習分離,數據復用,收斂性和穩定性更好

2. 前置知識

2.1 重要性采樣(Importance Sampling)

是一種用于估計概率分布的統一方法,常常用于強化學習,概率推斷和統計推斷等領域,主要目的是用一個概率分布的樣本來估計另一個概率的期望或者是累計的分布函數。比如:兄弟倆,其中有一個很神秘,不知道其連續分布長什么樣。另外一個很熟悉,分布是已知的。兩個人都可以采樣,也就是說可以同時知道他們的一些具體的行為,比如他倆同時參加一次考試得到的分數,這樣以來就能根據一個人的行為,再加上兩個人在某些具體的事上的比值來估計另外一個人。

3. 目標函數

近端強調的就是KL項起到的約束作用。重要性采樣+KL散度=PPO算法同策略到異策略的完美轉換。其中KL散度是用來度量兩種分布間相似程度的量,簡單理解就是一個數值,約相似這個數值就約小。

4. 改進

4.1 改進一、自適應懲罰(PPO penalty)

在KL懲罰之前有個參數β,理想情況下是可以自適應調整的,用來實現動態懲罰的目的。具體調整如下:進一步前邊的期望可以簡化為一個求和的運算有兩個原因,一是假定所有樣本的概率相同。二是在求梯度的情況下除以樣本數的意義也不是很大,去掉也不受影響。

4.2 PPO-clip

clip修剪:簡化原有目標函數KL散度部分,提高運算效率。

5. 模型結構

重要性采樣PPO和KL散度都是在修正或約束兩個策略分布間相似度

其中虛線表示未知的目標策略,實線表示已知的采樣策略

6. 適用條件:

6.1 在高緯度連續動作空間搜索最優策略的問題:機器人控制、自動駕駛等

6.2 適用于需要穩定收斂的任務:限制每次更新中策略改變幅度

6.3 大規模分布式訓練:可以在多個并行訓練實例上更新和采樣

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

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

相關文章

【LaTeX】Word插入LaTeX行間公式如何編號和對齊

在 Word 文檔中插入公式,需要用到 LaTeX \LaTeX LATE?X 。但遺憾的是,Word 只支持部分 LaTeX \LaTeX LATE?X 語法,這就導致很多在 Markdown 能正常渲染的公式在 Word 中無法正常顯示。 “內嵌”和“顯示” 首先介紹一下 Word 的“內嵌”…

互聯網大廠Java面試實戰:Spring Boot到微服務的技術問答解析

💪🏻 1. Python基礎專欄,基礎知識一網打盡,9.9元買不了吃虧,買不了上當。 Python從入門到精通 😁 2. 畢業設計專欄,畢業季咱們不慌忙,幾百款畢業設計等你選。 ?? 3. Python爬蟲專欄…

spring boot3.0自定義校驗注解:文章狀態校驗示例

文章目錄 Spring Boot 自定義校驗注解:狀態校驗示例一、創建 State 注解步驟:1. 創建自定義注解:2. 實現校驗邏輯: 二、 實現自定義校驗步驟:1. 在實體類中使用自定義校驗注解 State:2. 添加 State 注解: 總…

無侵入式彈窗體驗_探索 Chrome 的 Close Watcher API

1. 引言 在網頁開發中,彈窗(Popup)是一種常見的交互方式,用于提示用戶進行操作、確認信息或展示關鍵內容。然而,傳統的 JavaScript 彈窗方法如 alert()、confirm() 和 prompt() 存在諸多問題,包括阻塞主線程、樣式不可定制等。 為了解決這些問題,Chrome 瀏覽器引入了 …

調出事件查看器界面的4種方法

方法1. 方法2. 方法3. 方法4.

Ubuntu 安裝遠程桌面連接RDP方式

1. 安裝 XFCE4 桌面環境 如果你的 Ubuntu 系統默認使用 GNOME 或其它桌面環境,可以安裝輕量級的 XFCE4: sudo apt update sudo apt install xfce4 xfce4-goodies 說明:xfce4-goodies 包含額外的插件和工具(如面板插件、終端等&a…

LWIP傳輸層協議筆記

傳輸協議簡介 文件/圖片/視頻 都是一堆二進制數據 經過傳輸層來傳輸 這兩種協議有什么區別呢? 傳輸層的TCP/UDP三個步驟 TCP使用傳輸流程 1、三次握手 作用:三次握手就是建立連接的過程 2、傳輸數據 作用:建立連接完成之后&#xff…

數據分析與邏輯思維:六步解決業務難題;參考書籍《數據分析原理:6步解決業務分析難題 (周文全, 黃怡媛, 馬炯雄)》

文章目錄 一、懂業務:業務背景與邏輯前提1.1 明確業務目標與問題定義1.2 培養批判性思維與高于業務視角 二、定指標:構建科學的指標體系2.1 指標拆解與維度分析2.2 典型指標體系案例:用戶與業務視角 三、選方法:匹配業務需求的分析…

開啟WSL的鏡像網絡模式

開啟WSL的鏡像網絡模式 前提 Windows主機系統版本高于Windows 11 22H2。WLS版本>2.0。 可輸入wsl --version查看當前系統wsl版本。 修改設置 圖形界面修改 在開始菜單中搜索:wsl settings,結果如下圖所示: 點擊“打開”&#xff0…

Python爬蟲第20節-使用 Selenium 爬取小米商城空調商品

目錄 前言 一、 本文目標 二、環境準備 2.1 安裝依賴 2.2 配置 ChromeDriver 三、小米商城頁面結構分析 3.1 商品列表結構 3.2 分頁結構 四、Selenium 自動化爬蟲實現 4.1 腳本整體結構 4.2 代碼實現 五、關鍵技術詳解 5.1 Selenium 啟動與配置 5.2 頁面等待與異…

聚類分析的原理、常用算法及其應用

聚類分析的原理、常用算法及其應用 一、聚類分析的基本原理 (一)什么是聚類分析 聚類分析是一種無監督學習方法,其目標是將數據集中的樣本劃分為若干個簇,每個簇包含相似的樣本。聚類分析的核心思想是通過某種相似性度量&#…

Aware和InitializingBean接口以及@Autowired注解失效分析

Aware 接口用于注入一些與容器相關信息,例如: ? a. BeanNameAware 注入 Bean 的名字 ? b. BeanFactoryAware 注入 BeanFactory 容器 ? c. ApplicationContextAware 注入 ApplicationContext 容器 ? d. EmbeddedValueResolverAware 注入 解析器&a…

JDK 安裝與配置

JDK 全稱是 Java SE Development Kit,翻譯成中文就是:Java 標準版開發包,是 Sun 公司(后被 Oracle 公司收購)專門外 Java 開發人員提供的一套用于開發 Java 應用程序的工具包。 JDK 提供了用于編譯和運行 Java 應用程序…

防火墻來回路徑不一致導致的業務異常

案例拓撲: 拓撲描述: 服務器有2塊網卡,內網網卡2.2.2.1/24 網關2.2.254 提供內網用戶訪問; 外網網卡1.1.1.1/24,外網網關1.1.1.254 80端口映射到公網 這個時候服務器有2條默認路由,分布是0.0.0.0 0.0.0.0 1…

Java面試高頻問題(36-37)

三十六、服務網格核心能力與設計模式 服務網格架構分層模型 mermaid graph TB subgraph 數據平面 ASidecar代理 -->攔截流量 BEnvoy B -->協議轉換 CHTTP/gRPC B -->策略執行 D熔斷/限流 end subgraph 控制平面 E配置中心 -->下發策略 Fistiod F -->證書管理 …

redis數據結構-02(INCR、DECR、APPEND)

字符串操作:INCR、DECR、APPEND Redis 字符串不僅僅是簡單的文本,它們還可以表示數字。此功能使我們能夠直接對存儲在 Redis 中的字符串值執行原子的遞增和遞減操作。此外,Redis 還提供了一種附加到現有字符串的方法,從而可以輕松…

Spring MVC 中Model, ModelMap, ModelAndView 之間有什么關系和區別?

在 Spring MVC 中,Model, ModelMap, 和 ModelAndView 都是用來在 Controller 和 View 之間傳遞數據的,但它們在使用方式和功能上有所不同。 它們的核心在于:Spring MVC 需要知道兩件事來渲染視圖:① 數據 (Model) ② 視圖名稱 (V…

配置Hadoop集群-免密登錄

在 Hadoop 集群中配置免密登錄是確保各節點間高效通信的關鍵步驟。以下是基于 SSH 密鑰認證的免密登錄配置方案,支持主節點(NameNode)到所有從節點(DataNode)的無密碼訪問: 1. 環境準備 集群規劃&#xff…

C++類與對象(二):六個默認構造函數(一)

在學C語言時,實現棧和隊列時容易忘記初始化和銷毀,就會造成內存泄漏。而在C的類中我們忘記寫初始化和銷毀函數時,編譯器會自動生成構造函數和析構函數,對應的初始化和在對象生命周期結束時清理資源。那是什么是默認構造函數呢&…

嵌入式培訓之數據結構學習(一)數據結構的基礎概念、線性表

一、基礎概念 1、數據結構:相互之間存在一種或多種特定關系的數據元素的集合。(特定關系有邏輯關系與線性關系) (1)邏輯結構 集合,所有數據在同一個集合中,關系平等(數組&#xff…