強化學習(二)——Dueling Network(DQN改進)

與DNQ相比,使用優勢函數(A函數)和狀態價值函數(V)代替之前的Q(動作價值)函數,
最核心公式為 Q ? ( s , a ) = A ? ( s , a ) + V ? ( s ) ? max ? a A ? ( s , a ) Q^*(s,a)=A^*(s,a)+V^*(s)-\max_a A^*(s,a) Q?(s,a)=A?(s,a)+V?(s)?maxa?A?(s,a)

核心公式演變:
基本公式 A ? ( s , a ) = Q ? ( s , a ) ? V ? ( s ) A^*(s,a)=Q^*(s,a)-V^*(s) A?(s,a)=Q?(s,a)?V?(s)
變化公式1 Q ? ( s , a ) = A ? ( s , a ) + V ? ( s ) Q^*(s,a)=A^*(s,a)+V^*(s) Q?(s,a)=A?(s,a)+V?(s)
變化公式2 Q ? ( s , a ) = A ? ( s , a ) + V ? ( s ) ? max ? a A ? ( s , a ) Q^*(s,a)=A^*(s,a)+V^*(s)-\max_a A^*(s,a) Q?(s,a)=A?(s,a)+V?(s)?maxa?A?(s,a)

1 基本概念

  • 動作價值函數: Q π ( s t , a t ) = E [ U t ∣ S t = s t , A t = a t ] Q_\pi (s_t,a_t)=E[U_t|S_t=s_t,A_t=a_t] Qπ?(st?,at?)=E[Ut?St?=st?,At?=at?]

  • 狀態價值函數: V π ( s t ) = E A [ Q π ( s t , A ) ] V_\pi (s_t)=E_A[Q_\pi(s_t,A)] Vπ?(st?)=EA?[Qπ?(st?,A)]

  • 最優動作價值函數: Q ? ( s t , a t ) = m a x π Q π ( s t , a t ) Q^*(s_t,a_t)=max_\pi Q_\pi(s_t,a_t) Q?(st?,at?)=maxπ?Qπ?(st?,at?)

  • 最優狀態價值函數: V ? ( s ) = max ? π V π ( s ) = max ? a Q ? ( s t , a ) V^*(s)=\max_\pi V_\pi (s)=\max_aQ^*(s_t,a) V?(s)=maxπ?Vπ?(s)=maxa?Q?(st?,a)

  • 最優優勢函數; A ? ( s , a ) = Q ? ( s , a ) ? V ? ( s ) A^*(s,a)=Q^*(s,a)-V^*(s) A?(s,a)=Q?(s,a)?V?(s)

2 公式定義及推導

2.1 公式定義

V ? ( s ) = max ? a Q ? ( s t , a ) V^*(s)=\max_aQ^*(s_t,a) V?(s)=maxa?Q?(st?,a)。(公式1)
A ? ( s , a ) = Q ? ( s , a ) ? V ? ( s ) A^*(s,a)=Q^*(s,a)-V^*(s) A?(s,a)=Q?(s,a)?V?(s) (公式2)
Q ? ( s , a ) = A ? ( s , a ) + V ? ( s ) Q^*(s,a)=A^*(s,a)+V^*(s) Q?(s,a)=A?(s,a)+V?(s) (公式3)

2.2 公式推導 max ? a A ? ( s , a = 0 \max_a A^*(s,a=0 maxa?A?(s,a=0

max ? a A ? ( s , a ) = m a x a Q ? ( s , a ) ? m a x a V ? ( s ) = m a x a Q ? ( s , a ) ? V ? ( s ) = m a x a Q ? ( s , a ) ? m a x a Q ? ( s , a ) = 0 \max_a A^*(s,a)=max_aQ^*(s,a)-max_aV^*(s)\\ =max_aQ^*(s,a)-V^*(s)\\ =max_aQ^*(s,a)-max_aQ^*(s,a)\\ =0 amax?A?(s,a)=maxa?Q?(s,a)?maxa?V?(s)=maxa?Q?(s,a)?V?(s)=maxa?Q?(s,a)?maxa?Q?(s,a)=0
可得 max ? a A ? ( s , a ) = 0 \max_a A^*(s,a)=0 maxa?A?(s,a)=0

2.3 核心公式3優化

公式3 右邊減掉為0的 max ? a A ? ( s , a ) \max_a A^*(s,a) maxa?A?(s,a) 等式依然成立
Q ? ( s , a ) = A ? ( s , a ) + V ? ( s ) Q^*(s,a)=A^*(s,a)+V^*(s) Q?(s,a)=A?(s,a)+V?(s)
Q ? ( s , a ) = A ? ( s , a ) + V ? ( s ) ? max ? a A ? ( s , a ) Q^*(s,a)=A^*(s,a)+V^*(s)-\max_a A^*(s,a) Q?(s,a)=A?(s,a)+V?(s)?maxa?A?(s,a)

2.2 使用神經網絡代替A和V函數

Q ? ( s , a , w A , w V ) = A ? ( s , a , w A ) + V ? ( s , w V ) ? max ? a A ? ( s , a , w A ) Q^*(s,a,w^A,w^V)=A^*(s,a,w^A)+V^*(s,w^V)-\max_a A^*(s,a,w^A) Q?(s,a,wA,wV)=A?(s,a,wA)+V?(s,wV)?maxa?A?(s,a,wA)

3 公式為什么要加 max ? a A ? ( s , a , w A ) \max_a A^*(s,a,w^A) maxa?A?(s,a,wA)

主要是為了克服神經網絡一致性問題,防止網絡波動, max ? a A ? ( s , a , w A ) \max_a A^*(s,a,w^A) maxa?A?(s,a,wA)起到了約束作用。
比如;
1 沒有約束項,A網絡增加10,V網絡減少10,Q值不變
2 增加約束項,A網絡增加10,V網絡減少10,則Q值增大10,因為對A網絡取最大值時增加了10。同理A網絡減少10,V網絡增加10,則Q網絡減少了10.

解釋:約束V網絡向A網絡最大負值靠近,約束V網絡和A網絡。

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

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

相關文章

高效利用內存資源之動態內存管理詳解

目錄 一、為什么存在動態內存分配 二、動態內存函數的介紹 2.1malloc 2.2free 2.3calloc 2.4realloc 三、常見的動態內存錯誤 3.1對NULL指針的解引用操作 3.2對動態開辟空間的越界訪問 3.3對非動態開辟內存使用free釋放 3.4使用free釋放一塊動態開辟內存的一部分 3.…

Spring Boot 3 集成 Druid 連接池詳解

在現代的Java應用中,使用一個高效可靠的數據源是至關重要的。Druid連接池作為一款強大的數據庫連接池,提供了豐富的監控和管理功能,成為很多Java項目的首選。本文將詳細介紹如何在Spring Boot 3項目中配置數據源,集成Druid連接池&…

【ACM獨立出版、確定的ISBN號】第三屆密碼學、網絡安全和通信技術國際會議(CNSCT 2024)

第三屆密碼學、網絡安全和通信技術國際會議(CNSCT 2024) 2024 3rd International Conference on Cryptography, Network Security and Communication Technology 隨著互聯網和網絡應用的不斷發展,網絡安全在計算機科學中的地位越來越重要&…

Android Kotlin 泛型:強大的類型抽象和重用利器

一、什么是泛型? 泛型是一種參數化類型的機制,它允許我們在定義類、接口和方法時使用類型參數,從而實現代碼的重用和類型安全。通過使用泛型,我們可以將類型作為參數傳遞給類或方法,在不同的場景中實現靈活的類型適配…

精選:免費且高效的郵件營銷軟件推薦

好用的郵件營銷軟件可以幫助企業獲取客戶、維系客戶關系。對于有想做郵件營銷想法,但是想先試試的企業來講,免費版郵件營銷軟件就是個不錯的選擇。當然,免費的郵件郵件營銷軟件雖然在價格上有極大的優勢,但是功能上會有各種限制。…

Java生態系統最受歡迎的工具類使用指南 ?

???? 博主貓頭虎(????)帶您 Go to New World??? ?? 博客首頁——????貓頭虎的博客?? ?? 《面試題大全專欄》 ?? 文章圖文并茂??生動形象??簡單易學!歡迎大家來踩踩~?? ?? 《IDEA開發秘籍專欄》 ?? 學會IDEA常用操作,工作效率翻倍~?? ?…

【小白專用】MySQL查詢數據庫所有表名及表結構其注釋

一、先了解下INFORMATION_SCHEMA 1、在MySQL中,把INFORMATION_SCHEMA看作是一個數據庫,確切說是信息數據庫。其中保存著關于MySQL服務器所維護的所有其他數據庫的信息。如數據庫名,數據庫的表,表欄的數據類型與訪問權 限等。在INF…

網絡安全——SSH密碼攻擊實驗

一、實驗目的要求: 二、實驗設備與環境: 三、實驗原理: 四、實驗步驟:? 五、實驗現象、結果記錄及整理: 六、分析討論與思考題解答: 一、實驗目的要求: 1、了解SSH密碼攻擊、FTP密碼攻擊…

【BEV感知 EA-LSS 方案】Edge-aware Lift-splat-shot

前言 本文分享LSS方案的改進方案——EA-LSS,它解決了“深度跳變”問題,提出了一個新框架Edge-aware Lift-splat-shot 。 適用于“多視圖轉BEV”,可以代替原來的LSS模塊,并有效地提高了檢測精度,而推理時間的增加很少。 在nuScenes測試集上驗證,純相機模型或多模態模型…

Jmeter 請求簽名api接口-BeanShell

Jmeter 請求簽名api接口-BeanShell 項目簽名說明編譯擴展jar包jmeter 使用 BeanShell 調用jar包中的簽名方法 項目簽名說明 有簽名算法的api接口本地不好測試,使用BeanShell 擴展jar 包對參數進行簽名,接口簽名算法使用 sha512Hex 算法。簽名的說明如下…

Mybatis是如何進行分頁的?

程序員的公眾號:源1024,獲取更多資料,無加密無套路! 最近整理了一份大廠面試資料《史上最全大廠面試題》,Springboot、微服務、算法、數據結構、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、數據庫等等 …

Django系列之Celery異步框架+RabbitMQ使用

在Django項目中,如何集成使用Celery框架來完成一些異步任務以及定時任務呢? 1. 安裝 pip install celery # celery框架 pip install django-celery-beat # celery定時任務使用 pip install django-celery-results # celery存儲結果使用2. Django集成…

gin投票系統3

對應視頻v1版本 1.優化登陸接口 將同步改為異步 原login前端代碼&#xff1a; <!doctype html> <html lang"en"> <head><meta charset"utf-8"><title>香香編程-投票項目</title> </head> <body> <m…

開關量防抖濾波器(梯形圖和SCL源代碼)

模擬量防抖超限報警功能塊請查看下面文章鏈接: https://rxxw-control.blog.csdn.net/article/details/133969425https://rxxw-control.blog.csdn.net/article/details/133969425 1、開關量防抖濾波器 2、防抖濾波 3、梯形圖代碼

useMemo和useCallback

useMemo和useCallback是React中的兩個優化性能的鉤子&#xff08;Hooks&#xff09;。它們都可以用來緩存計算結果&#xff0c;避免在每次渲染時都重新執行耗時的操作。然而&#xff0c;它們的主要區別在于緩存的內容和使用場景。 useMemo useMemo用于緩存那些計算成本較高的值…

2.Feign使用、上下文隔離及源碼閱讀

目錄 概述使用配置pom.xmlfeign 接口編寫controller 測試降級處理pom.xmlapplication.yml代碼 Feign如何初始化及調用源碼閱讀初始化調用 feign的上下文隔離機制源碼 結束 概述 閱讀此文&#xff0c;可以知曉 feign 使用、上下文隔離及源碼閱讀。源碼涉及兩方面&#xff1a;fe…

課后作業7.3.1:構造一個自己的小操作系統

構造一個自己的 mini 操作系統 任務描述 請實現如下功能&#xff1a; 1.寫一個命令解釋器程序 mysh.c &#xff0c;其功能是接收用戶輸入的命令并給出反饋。要求該程序既支持內部命令 cd、sync、exit &#xff1b;也支持外部命令&#xff0c;即可以接收 cat、ls 等命令&#x…

數據結構與算法-Rust 版讀書筆記-2線性數據結構-雙端隊列

數據結構與算法-Rust 版讀書筆記-2線性數據結構-雙端隊列 1、雙端隊列 deque又稱為雙端隊列&#xff0c;雙端隊列是與隊列類似的項的有序集合。deque有兩個端部&#xff1a;首端和尾端。deque不同于隊列的地方就在于項的添加和刪除是不受限制的&#xff0c;既可以從首尾兩端添…

vue3封裝接口

在src下面創建一個文件夾任意名稱 我拿這個名字舉例子了apiService 相當于創建一個新的文件 // 封裝接口 // apiService.js import axios from axios;// 接口前綴 const API_BASE_URL 前綴;接口后綴export const registerUser async (fileData) > {try {const response …

數據分析 | 頻率編碼和標簽編碼 | Python代碼

數據集見GitHub鏈接&#xff1a;https://github.com/ChuanTaoLai/Frequency-Encoding-And-Label-Encoding 標簽編碼&#xff1a; import pandas as pd from sklearn.preprocessing import LabelEncoderdata1 pd.read_excel(rD:\0文獻整理\網絡入侵檢測\KDD99\KDDTrain.xlsx) …