強化學習4:DQN 算法

看這篇文章之前,建議先了解一下:Q-Learning 算法。

1. 算法介紹

DQN 算法全稱為 Deep Q-Network,即深度Q網絡。它將 Q-Learning 與 Deep Learning 結合在了一起。

1.1 Q-Network

Q-Learning 是使用 Q-table 才存儲決策信息的,那么這就要求 state、action 必須是離散的。但是大部分情況,state 和 action 并不離散,或者不方便例舉出所有的可能性。比如說用來打游戲,這時 Q-Learning 就無法使用。
為了應對 state 和 action 是連續的情況,我們可以使用 Q 函數來替代 Q-table,Q 函數依然可以記為 Q(s,a),這樣對于任意的 state 和 action,只需要通過函數計算我們就可以得到其所對應的 Q-value 了。
但是強化學習可應用的情況可能非常復雜,比如打游戲,我們知道當前的所有敵人的情況 state 和我們下一步想做的操作 action,我們也是沒辦法設想一個合理的函數來作為 Q-value 的。
神經網絡只要構建的足夠大,理論上可以模擬任何函數,那么我們就可以使用神經網絡來充當 Q 函數。w是神經網絡的參數,那么我們的 Q 函數可以記為 Q(s,a;w)。這個網絡也就被成為 Q-Network。
在這里插入圖片描述

1.2 網絡的輸入與輸出

神經網絡的輸入輸出是什么呢?
輸入肯定就是狀態的每一項。輸出可以有兩種選擇。一種是讓網絡輸出當前 state 對應每一種 action 的 Q-value,另一種是直接讓網絡輸出最優 action。
在這里插入圖片描述

兩種各有優劣。對第一種來說,由于我們是替代 Q-table 的,那么如果網絡輸出是 Q-value,我們就可以使用 Q-Learning 或 SARSA 所使用的 Q-value 更新策略來更新網絡。但是這樣我們就需要列舉出所有可行的 action,這樣 action 仍需要是離散的,那么之前所說的使用 Q-Network 的初衷就有一部分沒能得到滿足。相比之下,第二種就允許 action 是連續的,但也就不方便使用 TD 策略來更新網絡。

1.3 參數更新

一般我們可以選擇第一種方式,因為方便設計網絡更新算法。如果我們選擇第一種方式的話,如何更新網絡呢?

  1. 首先需要前向傳播,得到每個可行的 action 對應的 Q-value,獲得一個輸出 a = argmax(Q(s,a;w)),同時我們可以觀察到下一個 s’,并獲得獎勵 r。
  2. 計算 TD Target:y = r + γ max{Q(s’,a’;w)};
  3. 計算損失函數:loss = 1/2[y - Q(s,a;w)]^2。
    這樣我們就得到了損失函數,然后就可以使用梯度下降來更新網絡中的參數w。
    在這里插入圖片描述

2. 優化

2.1 目標網絡

訓練過程中將網絡復制為兩部分 netA 和 netB。每一次訓練過程,使用 netA 去做決策,只更新 netB 的參數。等到一輪訓練完畢后,將 netB 的參數復制給 netA。
稱 netA 為目標網絡(target network),在每一輪訓練過程中,它的參數是固定死的。

2.2 探索

如果一開始,某個 action 得到了正向的獎勵,那么后面就可能會一直采取這個 action。但其實可能別的 action 會比這個要好很多。為了不會陷入局部優化,算法需要具有一定的探索性。
常用的解決方法有兩種:ε 貪心(epsilon greedy)和玻爾茲曼探索(Boltzmann exploration)。ε 貪心更常用。

  • ε 貪心
    其中 ε 為探索率,其值為 0-1 之間。算法會以 ε 的概率選擇隨機 action,以 1-ε 的概率使用 Q-Network 選擇 action。
    在這里插入圖片描述

  • 玻爾茲曼探索
    玻爾茲曼探索策略是基于玻爾茲曼分布(Boltzmann Distribution)的概念。在每一步中,智能體會根據每個動作的價值函數估計值和一個稱為“溫度”的參數 τ 來計算選擇該動作的概率。
    在這里插入圖片描述

    溫度參數 τ 控制了探索和利用之間的平衡:當 τ 較高時,智能體更傾向于探索;當 τ 較低時,智能體更傾向于利用已知信息選擇最優動作。

2.3 經驗回放

經驗回放(Experience Replay)是一種用于存儲和回放過去經驗(即狀態轉換)的策略。
該策略需要創建一個經驗池(Experience Replay Buffer),通常是一個循環隊列或固定大小的列表。每當 agent 選擇一個 action 并與環境進行交互時,就會生成一個新的經驗(或稱為轉換),該經驗包含當前state、所選 action、獲得的 reward 以及下一個state。這個經驗會被存儲到經驗池中。當經驗池中的經驗數量達到一定的閾值時,算法每次訓練會從經驗池中隨機抽取一批經驗作為訓練數據。
好處:

  • 打破數據相關性:在強化學習中,相鄰狀態之間通常存在高度相關性。直接使用連續的經驗進行訓練可能會導致模型對最近的經驗產生過度擬合,從而降低其泛化能力。通過經驗回放,算法可以從歷史經驗中隨機抽取數據進行訓練,從而打破數據之間的相關性,提高模型的泛化能力。
  • 提高數據利用效率:在強化學習中,數據的收集往往是非常昂貴的。通過經驗回放,算法可以反復利用存儲在經驗池中的歷史經驗進行訓練,從而提高數據的利用效率。
  • 提高訓練穩定性:由于經驗回放可以打破數據之間的相關性并提高數據利用效率,因此它可以使DQN的訓練過程更加穩定。此外,通過隨機抽取經驗進行訓練,算法可以更好地應對非平穩分布的問題,因為歷史經驗中可能包含不同分布的數據。

2.4 總結

在這里插入圖片描述

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

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

相關文章

AI推文神器,繪唐ai,文刻創作出品,sdmj二合一虹貓

AI推文神器,繪唐ai,文刻創作出品,sdmj二合一虹貓 https://qvfbz6lhqnd.feishu.cn/wiki/CcaewIWnSiAFgokOwLycwi0Encfhttps://qvfbz6lhqnd.feishu.cn/wiki/CcaewIWnSiAFgokOwLycwi0Encf AI推文神器是一種基于人工智能技術的工具,旨在幫助用戶快速生成優質的推文。它通過分…

iPhone“已刪除”照片被恢復,蘋果到底有沒有后門?

繼微軟本周推出的Windows“回憶”功能引發隱私焦慮,遭馬斯克和安全大咖們猛烈抨擊后,蘋果iPhone手機近日也曝出了類似的“記憶門”。 刪除十幾年的iPhone照片被恢復 近日,有蘋果手機用戶更新了蘋果上周發布的iOS 17.5系統后,意外…

妙解設計模式之策略模式

目錄 策略模式的概念生活中的例子編程中的例子 軟件工程中的實際應用數據排序文件壓縮支付方式圖形繪制 策略模式的概念 策略模式(Strategy Pattern)是一種行為型設計模式,它定義了一系列算法,把它們一個個封裝起來,并…

Android Graphics模塊中的各種State和重要類普法

Android Graphics模塊中的各種State和重要類普法 引言 尼瑪,這Android Graphics圖形棧蛋疼啊,更新太快了。機會是每年一個版本,前進的膠布不能停啊,繼續干。這邊博客,我們的核心是理一理Android Graphics中各種State狀…

2024最新版本激活Typora,1.8.10.0版本可用

?實測可用日期為:2024-05-28 目前最新版本 1.8.10.0 也是可以實現激活的 注:免修改注冊表、不用修改時間,更不需要破解補丁 01、下載&安裝 Typora 文件 從官網下載最新版本的 Typora,并安裝 或者阿里云盤: htt…

Pytorch深度學習實踐筆記12(b站劉二大人)

🎬個人簡介:一個全棧工程師的升級之路! 📋個人專欄:pytorch深度學習 🎀CSDN主頁 發狂的小花 🌄人生秘訣:學習的本質就是極致重復! 《PyTorch深度學習實踐》完結合集_嗶哩嗶哩_bilibi…

數據集008:吸煙、抽煙檢測數據集(含數據集下載鏈接)

數據集簡介 兩個數據集 一個是783張圖片對應的xml文件 一個是2482張圖片對應的xml文件 如下圖所示: 部分代碼: # 測試數據讀取 def test_data_loader(datadir, batch_size 10, test_image_size608, modetest):"""加載測試用的圖片…

大學生選擇算法向還是嵌入式向?

在開始前剛好我有一些資料,是我根據網友給的問題精心整理了一份「嵌入式的資料從專業入門到高級教程」, 點個關注在評論區回復“888”之后私信回復“888”,全部無償共享給大家!!! 由于嵌入式的薪資待遇和…

品牌建設不迷路:系統化方法讓品牌成長更高效

很多創始人才創業過程中都會發現: 企業越大,遇到的系統性的底層品牌問題就會越多,品牌的系統化建設底層根基如果不穩,后續的增長也會搖搖欲墜。 所以在當今競爭激烈的市場環境中,品牌的成功不僅僅依靠一個響亮的名字…

Spring Boot注解(Annotation)

在Spring Boot中,注解(Annotation)是一種元數據形式,它可以在代碼中提供信息,這些信息可以在運行時或編譯時被處理。Spring Boot使用注解來實現依賴注入、事務管理、配置等功能。 以下是Spring Boot中注解的執行機制的…

【Linux】Linux的權限_1

文章目錄 三、權限1. shell外殼2. Linux的用戶3. Linux權限管理文件訪問者的分類文件類型和訪問權限 未完待續 三、權限 1. shell外殼 為什么要使用shell外殼 由于用戶不擅長直接與操作系統直接接觸和操作系統的易用程度、安全性考慮,用戶不能直接訪問操作系統。 什…

文件IO(一)

文件IO(一) 文件IO文件的分類在文件IO下,文件分類按存儲的內容分按照操作分 標準IO和文件IO的區別系統調用和庫函數的區別 文件IO 把程序暫存在內存的數據,存儲到本地外存上 文件的分類 在Linux系統下,文件共分為7類…

AI答題項目,無門檻答題一小時收益30+

朋友們,今天我想和大家探討一個令人興奮的副業機遇。你是否曾感覺到日常工作的枯燥乏味,而又渴望找到一種輕松的賺錢方式來增加你的收入?今天我將和你分享的這個項目正是你所期待的。 項目的核心是利用AI技術來回答網上付費用戶的問題&…

重生之我要精通JAVA--第六周筆記

File 路徑 相對路徑 路徑1:“a.txt” 路徑2:“abc\\a.txt” 絕對路徑 路徑1:“c:\\a.txt” 路徑2:“c:\\abc\\a.txt” File對象就表示一個路徑,可以是文件的路徑、也可以是文件夾的路徑這個路徑可以是存在的&…

linux線程,線程控制與線程相關概念

線程概念 線程這個詞或多或少大家都聽過,今天我們正式的來談一下線程; 在我一開始的概念中線程就是進程的一部分,一個進程中有很多個線程,這個想法基本是正確的,但細節部分呢我們需要細細講解一下; 什么…

“揭秘:為什么羊駝Ollama成為計算機運行大型語言模型的最佳拍檔?“

最近,AIM 評測了在計算機上本地運行大語言模型(LLM)的最佳工具,Ollama 脫穎而出,成為最高效的解決方案,提供了無與倫比的靈活性。Ollama 是 Jeffrey Morgan 開發的一款開源工具,它正在徹底改變愛…

我被恐嚇了,對方揚言要壓測我的網站

大家好我是聰,昨天真是水逆,在技術群里交流問題,竟然被人身攻擊了!罵的話太難聽具體就不加討論了,人身攻擊我可以接受,我接受不了他竟然說要刷我接口!!!!這下…

啟用標準大頁后內存使用率下降了

未啟用前 [rootol819c ~]# free -htotal used free shared buff/cache available Mem: 9.3Gi 984Mi 379Mi 1.5Gi 8.0Gi 6.8Gi Swap: 15Gi 3.0Mi 15Gi [rootol819c ~]# free -htotal …

【NumPy】掌握NumPy的histogram函數:數據直方圖的生成與應用詳解

🧑 博主簡介:阿里巴巴嵌入式技術專家,深耕嵌入式人工智能領域,具備多年的嵌入式硬件產品研發管理經驗。 📒 博客介紹:分享嵌入式開發領域的相關知識、經驗、思考和感悟,歡迎關注。提供嵌入式方向…

速度百倍提升,高性能 Python 編譯器 Codon 火了

引言 在當下的編程世界里,Python由于其易用性和強大的庫支持在數據科學、人工智能和網頁開發等多個領域占據著舉足輕重的地位。然而,Python的執行速度往往成為開發者的一大痛點。 針對 這一問題,Codon項目正試圖提供一個高效的解決方案。Codo…