国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深度強化學習——DQN算法原理

這篇具有很好參考價值的文章主要介紹了深度強化學習——DQN算法原理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、DQN算法是什么

DQN,即深度Q網(wǎng)絡(Deep Q-network),是指基于深度學習的Q-Learing算法。

回顧一下Q-Learing:強化學習——Q-Learning算法原理
Q-Learing算法維護一個Q-table,使用表格存儲每個狀態(tài)s下采取動作a獲得的獎勵,即狀態(tài)-價值函數(shù)Q(s,a),這種算法存在很大的局限性。在現(xiàn)實中很多情況下,強化學習任務所面臨的狀態(tài)空間是連續(xù)的,存在無窮多個狀態(tài),這種情況就不能再使用表格的方式存儲價值函數(shù)。

為了解決這個問題,我們可以用一個函數(shù)Q(s,a;w)來近似動作-價值Q(s,a),稱為價值函數(shù)近似Value Function Approximation,我們用神經(jīng)網(wǎng)絡來生成這個函數(shù)Q(s,a;w),稱為Q網(wǎng)絡(Deep Q-network),w是神經(jīng)網(wǎng)絡訓練的參數(shù)。

二、DQN訓練過程

神經(jīng)網(wǎng)絡的的輸入是狀態(tài)s,輸出是對所有動作a的打分
dqn,筆記,AI,算法,深度學習
圖源于:Shusen Wang深度強化學習課程

神經(jīng)網(wǎng)絡的訓練是一個最優(yōu)化問題,我們需要表示網(wǎng)絡輸出和標簽值之間的差值,作為損失函數(shù),目標是讓損失函數(shù)最小化,手段是通過反向傳播使用梯度下降的方法來更新神經(jīng)網(wǎng)絡的參數(shù)。

那么Q網(wǎng)絡的標簽值/目標值是什么呢?
就是TD target : y t = r t + γ ? max ? a Q ( s t + 1 , a ; w ) {\color{Red}y_t = r_t + \gamma \cdot \max_aQ(s_{t+1},a;w)} yt?=rt?+γ?maxa?Q(st+1?,a;w)

我們先介紹最原始的DQN算法,后面會加入經(jīng)驗回放、目標函數(shù)等技巧。
具體過程:

1、初始化網(wǎng)絡,輸入狀態(tài) s t s_t st?,輸出 s t s_t st?下所有動作的Q值;

2、利用策略(例如 ε ? g r e d d y \varepsilon-greddy ε?greddy),選擇一個動作 a t a_t at?,把 a t a_t at?輸入到環(huán)境中,獲得新狀態(tài) s t + 1 s_{t+1} st+1? 和 r;

3、計算TD target: y t = r t + γ ? max ? a Q ( s t + 1 , a ; w ) y_t = r_t + \gamma \cdot \max_aQ(s_{t+1},a;w) yt?=rt?+γ?maxa?Q(st+1?,a;w)

4、計算損失函數(shù): L = 1 / 2 [ y t ? Q ( s , a ; w ) ] 2 L = 1/2[y_t - Q(s,a;w)]^2 L=1/2[yt??Q(s,a;w)]2

5、更新Q參數(shù),使得Q( s t s_t st?, a t a_t at?) 盡可能接近 y t y_t yt?,可以把它當做回歸問題,利用梯度下降做更新工作;

6、從以上步驟我們得到一個四元組transition: ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st?,at?,rt?,st+1?),用完之后丟棄掉;

7、輸入新的狀態(tài),重復更新工作

dqn,筆記,AI,算法,深度學習
圖源于:[知乎.張斯俊] https://zhuanlan.zhihu.com/p/110620815

三、經(jīng)驗回放 (Experience Replay)

在理解經(jīng)驗回放之前,先看看原始DQN算法的缺點:
1、用完一個transition: ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st?,at?,rt?,st+1?)就丟棄,會造成對經(jīng)驗的浪費;
2、之前,我們按順序使用transition,前一個transition和后一個transition相關(guān)性很強,這種相關(guān)性對學習Q網(wǎng)絡是有害的。

經(jīng)驗回放可以克服上面兩個缺點:
1.把序列打散,消除相關(guān)性,使得數(shù)據(jù)滿足獨立同分布,從而減小參數(shù)更新的方差,提高收斂速度。
2.能夠重復使用經(jīng)驗,數(shù)據(jù)利用率高,對于數(shù)據(jù)獲取困難的情況尤其有用。
在進行強化學習的時候,往往最花時間的步驟是與環(huán)境交互,訓練網(wǎng)絡反而是比較快的,因為我們用GPU訓練很快。用回放緩沖區(qū)可以減少與環(huán)境交互的次數(shù),經(jīng)驗不需要統(tǒng)統(tǒng)來自某一個策略,一些由過去的策略所得到的經(jīng)驗可以再回放緩沖區(qū)被使用多次,反復地再利用。

經(jīng)驗回放會構(gòu)建一個回放緩沖區(qū)(replay buffer),存儲n條transition,稱為經(jīng)驗
某一個策略 π \pi π與環(huán)境交互,收集很多條transition,放入回放緩沖區(qū),回放緩沖區(qū)中的經(jīng)驗transition可能來自不同的策略。
回放緩沖區(qū)只有在它裝滿的時候才會吧舊的數(shù)據(jù)丟掉
dqn,筆記,AI,算法,深度學習圖源于:Shusen Wang深度強化學習課程

每次隨機抽出一個batch大小的transition數(shù)據(jù)訓練網(wǎng)絡,算出多個隨機梯度,用梯度的平均更新Q網(wǎng)絡參數(shù)w

對經(jīng)驗回放的改進:
優(yōu)先經(jīng)驗回放 (Prioritized Experience Replay):區(qū)別在于用非均勻抽樣代替均勻抽樣。詳細的這里就不贅述了。

四、目標網(wǎng)絡(Target Network)

為什么要用目標網(wǎng)絡?
我引用https://blog.csdn.net/weixin_46133643/article/details/121845874這篇博客的描述:

我們在訓練網(wǎng)絡的時候,動作價值估計和權(quán)重w有關(guān)。當權(quán)重變化時,動作價值的估計也會發(fā)生變化。在學習的過程中,動作價值試圖追逐一個變化的回報,容易出現(xiàn)不穩(wěn)定的情況。

這部分我在有些書上也看到有類似的描述,雖然直覺上認為這樣訓練的確是不穩(wěn)定的,但是這種不穩(wěn)定的具體表現(xiàn)或者說嚴謹?shù)膬?nèi)部邏輯是怎樣的不太理解。

Shusen Wang課程視頻中對目標網(wǎng)絡這部分講的比較清楚,這里面存在一個高估(Overestimation) 問題

1、自舉(Bootstrapping)

這里引入自舉(Bootstrapping) 概念:
Bootstrapping本意是“解鞋帶”,來自《吹牛大王歷險記》中拔靴自助的典故,是指通過拔鞋帶把自己舉起來。dqn,筆記,AI,算法,深度學習
在強化學習中,自舉是指用后繼的估算值,來更新現(xiàn)在狀態(tài)的估算值。
我們計算的 TD target : y t = r t + γ ? max ? a Q ( s t + 1 , a ; w ) {\color{Red}y_t = r_t + \gamma \cdot \max_aQ(s_{t+1},a;w)} yt?=rt?+γ?maxa?Q(st+1?,a;w)
r t {\color{Red} r_t } rt? 是根據(jù)實際觀測得到的值
max ? a Q ( s t + 1 , a ; w ) {\color{Red}\max_aQ(s_{t+1},a;w)} maxa?Q(st+1?,a;w) 是根據(jù)Q網(wǎng)絡在 s t + 1 s_{t+1} st+1?時做出的估計值
因此 y t y_t yt?有部分是來自Q網(wǎng)絡的估算,而我們用 y t y_t yt?來更新Q網(wǎng)絡本身,所以這屬于自舉。

我們計算TD target的時候,是最大化Q值的: max ? a Q ( s t + 1 , a ; w ) \max_aQ(s_{t+1},a;w) maxa?Q(st+1?,a;w)
這里的最大化和上面的Bootstrapping過程都會引起高估的問題,利用目標網(wǎng)絡可以一定程度避免自舉,減緩高估問題。具體分析過程這里就不展開敘述了。

2、目標網(wǎng)絡:

Target Network是在2015年論文 Mnih et al.Human-level control through deep reinforcement learning. Nature, 2015 中提出的,地址:https://www.nature.com/articles/nature14236/

我們使用第二個網(wǎng)絡,稱為目標網(wǎng)絡, Q ( s , a ; w ? ) Q(s,a;{\color{Red} w^-}) Q(s,a;w?),網(wǎng)絡結(jié)構(gòu)和原來的網(wǎng)絡 Q ( s , a ; w ) Q(s,a; w) Q(s,a;w)一樣,只是參數(shù)不同 w ? ≠ w w^- \neq w w?=w,原來的網(wǎng)絡稱為評估網(wǎng)絡

兩個網(wǎng)絡的作用不一樣:評估網(wǎng)絡 Q ( s , a ; w ) Q(s,a; w) Q(s,a;w)負責控制智能體,收集經(jīng)驗;目標網(wǎng)絡 Q ( s , a ; w ? ) Q(s,a;{\color{Red} w^-}) Q(s,a;w?)用于計算TD target: y t = r t + γ ? max ? a Q ( s t + 1 , a ; w ? ) {\color{Red}y_t = r_t + \gamma \cdot \max_aQ(s_{t+1},a;w^-)} yt?=rt?+γ?maxa?Q(st+1?,a;w?)

在更新過程中,只更新評估網(wǎng)絡 Q ( s , a ; w ) Q(s,a; w) Q(s,a;w)的權(quán)重w,目標網(wǎng)絡 Q ( s t + 1 , a ; w ? ) Q(s_{t+1},a;w^-) Q(st+1?,a;w?)的權(quán)重 w ? w^- w?保持不變。在更新一定次數(shù)后,再將更新過的評估網(wǎng)絡的權(quán)重復制給目標網(wǎng)絡,進行下一批更新,這樣目標網(wǎng)絡也能得到更新。由于在目標網(wǎng)絡沒有變化的一段時間內(nèi)回報的目標值是相對固定的,因此目標網(wǎng)絡的引入增加了學習的穩(wěn)定性。

dqn,筆記,AI,算法,深度學習
圖源于:博客園.jsfantasy強化學習 7——Deep Q-Learning(DQN)公式推導

五、Double DQN

引入目標網(wǎng)絡可以一定程度減緩高估問題,但是還是有最大化操作,高估問題還是很嚴重,而Double DQN可以更好地緩解高估問題(但也沒有徹底根除高估問題)。

Double DQN做的改進其實很簡單:

我們用原始網(wǎng)絡 Q ( s , a ; w ) Q(s,a; w) Q(s,a;w),選出使Q值最大化的那個動作,記為 a ? {\color{Red}a^*} a?,再用目標網(wǎng)絡使用這個 a ? {\color{Red}a^*} a?計算目標值:
y t = r t + γ ? Q ( s t + 1 , a ? ; w ? ) y_t = r_t + \gamma \cdot Q(s_{t+1},{\color{Red}a^*};w^-) yt?=rt?+γ?Q(st+1?,a?;w?),
由于:
Q ( s t + 1 , a ? ; w ? ) ≤ max ? a Q ( s t + 1 , a ; w ? ) Q(s_{t+1},{\color{Red}a^*};w^-) \leq \max_{\color{Red}a}Q(s_{t+1},{\color{Red}a};w^-) Q(st+1?,a?;w?)maxa?Q(st+1?,a;w?)

所以進一步減緩了最大化帶來的高估問題。

dqn,筆記,AI,算法,深度學習圖源于:Shusen Wang深度強化學習課程

六、總結(jié)

偽代碼:

dqn,筆記,AI,算法,深度學習

整體來說,深度Q網(wǎng)絡與Q學習的目標價值以及價值的更新方式都非常相似。主要的不同在于:深度Q網(wǎng)絡將Q學習與深度學習結(jié)合,用深度網(wǎng)絡來近似動作價值函數(shù),而Q學習則是采用表格存儲;深度Q網(wǎng)絡采用經(jīng)驗回放的訓練方式,從歷史數(shù)據(jù)中隨機采樣,而Q學習直接采用下一個狀態(tài)的數(shù)據(jù)進行學習。


參考:
[1] https://www.bilibili.com/video/BV1rv41167yx?p=10&vd_source=a433a250e74c87c3235dea6a203f8a29
[2] 王琦.強化學習教程[M]
[3] https://zhuanlan.zhihu.com/p/110620815
文章圖源于:百度飛槳AlStudio、Shusen Wang深度強化學習課程等*文章來源地址http://www.zghlxwxcb.cn/news/detail-785246.html

到了這里,關(guān)于深度強化學習——DQN算法原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 使用Pytorch實現(xiàn)強化學習——DQN算法

    使用Pytorch實現(xiàn)強化學習——DQN算法

    目錄 一、強化學習的主要構(gòu)成 二、基于python的強化學習框架 三、gym 四、DQN算法 1.DQN算法兩個特點 (1)經(jīng)驗回放 (2)目標網(wǎng)絡 2.DQN算法的流程 五、使用pytorch實現(xiàn)DQN算法 1.replay memory 2.神經(jīng)網(wǎng)絡部分 3.Agent 4.模型訓練函數(shù) 5.訓練模型 6.實驗結(jié)果 六、補充說明 強化學習主要由

    2023年04月20日
    瀏覽(25)
  • 【深度強化學習】(2) Double DQN 模型解析,附Pytorch完整代碼

    【深度強化學習】(2) Double DQN 模型解析,附Pytorch完整代碼

    大家好,今天和大家分享一個深度強化學習算法 DQN 的改進版 Double DQN,并基于 OpenAI 的 gym 環(huán)境庫完成一個小游戲,完整代碼可以從我的 GitHub 中獲得: https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Model DQN 算法的原理是指導機器人不斷與環(huán)境交互,理解最佳的行為方式,最

    2024年02月03日
    瀏覽(34)
  • 深度學習十大算法之深度Q網(wǎng)絡(DQN)

    深度學習十大算法之深度Q網(wǎng)絡(DQN)

    深度Q網(wǎng)絡(DQN)是一種結(jié)合了深度學習和強化學習的算法,它在近年來成為了人工智能領(lǐng)域的一個熱點。DQN首次被引入是在2013年,由DeepMind的研究人員開發(fā)。它標志著深度學習技術(shù)在解決高維度決策問題上的一大突破。 DQN是一種算法,它使用深度神經(jīng)網(wǎng)絡來逼近最優(yōu)的Q函數(shù)

    2024年04月13日
    瀏覽(107)
  • DQN,DDPG,PPO 等強化學習算法在人工智能中的未來發(fā)展方向:從大規(guī)模到小規(guī)模部署

    作者:禪與計算機程序設(shè)計藝術(shù) 隨著近年來人工智能領(lǐng)域的蓬勃發(fā)展,強化學習(Reinforcement Learning, RL)被越來越多的人認可并應用于人工智能領(lǐng)域。如今,RL已經(jīng)可以處理許多復雜的問題,如自動駕駛、機器人控制等。在過去的一段時間里,我一直想和各位分享一下RL在人工

    2024年02月09日
    瀏覽(28)
  • DQN、Double DQN、Dueling DQN、Per DQN、NoisyDQN 學習筆記

    DQN、Double DQN、Dueling DQN、Per DQN、NoisyDQN 學習筆記

    部分內(nèi)容與圖片摘自:JoyRL 、 EasyRL DQN (Deep Q-Network) 說明 DQN通過深度學習技術(shù)處理高維狀態(tài)空間,它的核心是使用深度神經(jīng)網(wǎng)絡來近似Q值函數(shù)。傳統(tǒng)Q-learning依賴于一個查找表(Q表)來存儲每個狀態(tài)-動作對的Q值,但這在高維空間中變得不可行。DQN通過訓練一個神經(jīng)網(wǎng)絡來學

    2024年01月20日
    瀏覽(51)
  • 【機器學習】強化學習(六)-DQN(Deep Q-Learning)訓練月球著陸器示例

    【機器學習】強化學習(六)-DQN(Deep Q-Learning)訓練月球著陸器示例

    概述 Deep Q-Learning(深度 Q 學習)是一種強化學習算法,用于解決決策問題,其中代理(agent)通過學習在不同環(huán)境中采取行動來最大化累積獎勵。Lunar Lander 是一個經(jīng)典的強化學習問題,其中代理的任務是控制一個著陸艙在月球表面著陸,最小化著陸過程中的燃料消耗。 以下

    2024年01月25日
    瀏覽(25)
  • DQN算法概述及基于Pytorch的DQN迷宮實戰(zhàn)代碼

    DQN算法概述及基于Pytorch的DQN迷宮實戰(zhàn)代碼

    Q-Learing 是在一個表格中存儲動作對應的獎勵值,即狀態(tài)-價值函數(shù) Q(s,a) ,這種算法存在很大的局限性。在現(xiàn)實中很多情況下,強化學習任務所面臨的狀態(tài)空間是連續(xù)的,存在無窮多個狀態(tài),這種情況就不能再使用表格的方式存儲價值函數(shù)。 于是,誕生了 DQN 算法,即深度 Q

    2024年02月09日
    瀏覽(19)
  • DQN算法詳解

    DQN算法詳解

    強化學習算法可以分為三大類:value based, policy based 和 actor critic。常見的是以DQN為代表的value based算法,這種算法中只有一個值函數(shù)網(wǎng)絡,沒有policy網(wǎng)絡,以及以DDPG,TRPO為代表的actor-critic算法,這種算法中既有值函數(shù)網(wǎng)絡,又有policy網(wǎng)絡。 說到DQN中有值函數(shù)網(wǎng)絡,這里簡單介

    2024年02月12日
    瀏覽(13)
  • 深度Q網(wǎng)絡:DQN項目實戰(zhàn)CartPole-v0

    摘要: 相比于Q learning,DQN本質(zhì)上是為了適應更為復雜的環(huán)境,并且經(jīng)過不斷的改良迭代,到了Nature DQN(即Volodymyr Mnih發(fā)表的Nature論文)這里才算是基本完善。 本文分享自華為云社區(qū)《強化學習從基礎(chǔ)到進階-案例與實踐[4.1]:深度Q網(wǎng)絡-DQN項目實戰(zhàn)CartPole-v0》,作者: 汀丶 。

    2024年02月10日
    瀏覽(13)
  • 深度強化學習-DDPG算法原理與代碼

    深度強化學習-DDPG算法原理與代碼

    深度強化學習-DDPG算法原理與代碼 引言 1 DDPG算法簡介 2 DDPG算法原理 2.1 經(jīng)驗回放 2.2 目標網(wǎng)絡 2.2.1 算法更新過程 2.2.2 目標網(wǎng)絡的更新 2.2.3 引入目標網(wǎng)絡的目的 2.3 噪聲探索 3 DDPG算法偽代碼 ?4 代碼實現(xiàn) 5 實驗結(jié)果 6 結(jié)論 Deep Deterministic Policy Gradient (DDPG)算法是DeepMind團隊提出的

    2024年02月03日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包