日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dqn在训练过程中loss越来越大_DQN算法实现注意事项及排错方法

發(fā)布時(shí)間:2024/4/11 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dqn在训练过程中loss越来越大_DQN算法实现注意事项及排错方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在學(xué)習(xí)強(qiáng)化學(xué)習(xí)過程中,自己實(shí)現(xiàn)DQN算法時(shí),遇到了比較多的問題,花了好幾天的時(shí)間才得以解決。最后分析總結(jié)一下,避免再走彎路。

有可能開始實(shí)現(xiàn)出來的DQN算法,無論怎么訓(xùn)練總是看不錯(cuò)成果。需要注意的地方比較多,一步一步的來分析:

一、確定算法實(shí)現(xiàn)本身是否正確

算法學(xué)習(xí)的過程一般是:學(xué)習(xí)算法相關(guān)的資料,然后自己動(dòng)手實(shí)現(xiàn)算法來進(jìn)行訓(xùn)練。當(dāng)訓(xùn)練總是失敗時(shí),就去網(wǎng)上找別人對這個(gè)算法的實(shí)現(xiàn),然后對比自己的實(shí)現(xiàn)和別人實(shí)現(xiàn)的差異來糾錯(cuò)。

但這個(gè)時(shí)候比較容易遇到坑,因?yàn)閯e人的實(shí)現(xiàn)可能會(huì)有幾個(gè)問題:

  • 算法僅有一份代碼實(shí)現(xiàn),根本就不能復(fù)現(xiàn)效果和解決問題,有的甚至根本就無法運(yùn)行。
  • 很多算法的實(shí)現(xiàn)是那些正在學(xué)習(xí)算法的人寫的(比如我這種),而不是對算法有很好的理解的人寫的。也就是說,算法的實(shí)現(xiàn)完全就是錯(cuò)的。只是誤打誤撞,恰好訓(xùn)練時(shí)有點(diǎn)效果。
  • 所以,就需要注意下面幾個(gè)方面:

    1、確定算法實(shí)現(xiàn)必須有哪些部分。

    如果確定呢?比如看算法論文的原文,或者看大學(xué)的公開課等。

    DQN算法的實(shí)現(xiàn)中應(yīng)該包含目標(biāo)網(wǎng)絡(luò)(target network)和經(jīng)驗(yàn)回放(Experience Replay)相關(guān)的代碼。因?yàn)檫@是算法論文中有提到的。

    Playing Atari with Deep Reinforcement Learning?arxiv.org

    網(wǎng)絡(luò)上有很多DQN算法的實(shí)現(xiàn),但是有不少的實(shí)現(xiàn)是沒有目標(biāo)網(wǎng)絡(luò)(target network)的,搜到這種文章還是直接跳過吧。

    2、留意算法實(shí)現(xiàn)的細(xì)節(jié)

    在DQN算法中,done參數(shù)是需要使用。網(wǎng)絡(luò)上有不少DQN算法的實(shí)現(xiàn)是沒有使用done參數(shù)進(jìn)行訓(xùn)練的。

    DQN算法

    經(jīng)過實(shí)際的對比測試發(fā)現(xiàn),DQN算法中不使用done參數(shù)有時(shí)甚至將導(dǎo)致算法不能收斂。完整的代碼和數(shù)據(jù)在這里。

    DQN使用done參數(shù)與否(橙色使用done參數(shù),藍(lán)色未使用done參數(shù))

    3、區(qū)分算法本身和算法的變種

    DQN算法有不少的變種,比如:Double-Q Learning,Dueling DQN等。如果你看的是權(quán)威算法的實(shí)現(xiàn),可以肯定算法本身是不會(huì)錯(cuò)的。但是實(shí)現(xiàn)細(xì)節(jié)又和學(xué)習(xí)到的算法原理不同,那么有可能你看到的不是原始算法的實(shí)現(xiàn),而是其變種。

    二、了解不同環(huán)境對訓(xùn)練和算法收斂的影響

    一般我們訓(xùn)練時(shí)使用的環(huán)境是gym,在測試DQN算法時(shí),常用的環(huán)境有兩個(gè):

    1、CartPole

    Gym的CartPole環(huán)境

    立桿子游戲CartPole的特點(diǎn)是:如果算法模型越差,那么每一個(gè)游戲回合(episode)的時(shí)間就會(huì)越短,因?yàn)闂U子倒下了游戲就馬上結(jié)束了。

    2、MountainCar

    Gym的MountainCar環(huán)境

    小車上山游戲MountainCar的特點(diǎn)是:如果算法模型越差,每一個(gè)游戲回合的時(shí)間就會(huì)越長,因?yàn)橛螒蚪Y(jié)束的條件是要么小車上山,要么移動(dòng)了200次。而開始訓(xùn)練算法時(shí),小車是很難上山的,基本上都是移動(dòng)次數(shù)超過限制游戲結(jié)束的。

    當(dāng)實(shí)現(xiàn)完算法需要驗(yàn)證算法的正確性時(shí),結(jié)合上面兩種環(huán)境的特點(diǎn),推薦使用第一種環(huán)境來驗(yàn)證算法。原因如下:

    第一種環(huán)境的特點(diǎn)是模型越差,游戲回合時(shí)間越短。當(dāng)開始訓(xùn)練算法時(shí),訓(xùn)練的速度就會(huì)比較快,如果算法正確收斂,那么會(huì)訓(xùn)練的越來越慢,比較好觀察。

    與之對比的是第二種環(huán)境,模型越差,游戲回合時(shí)間越長。訓(xùn)練開始時(shí),因?yàn)槊總€(gè)回合的時(shí)間都比較長,在不借助其他工具的情況下,難以觀察算法是否在收斂。所以就可能會(huì)出現(xiàn)算法本身是正確且收斂的,但是因?yàn)槊炕睾蠒r(shí)間太長,訓(xùn)練太耗時(shí),所以短時(shí)間內(nèi)看不出趨勢就誤認(rèn)為算法是錯(cuò)誤的。

    三、善用tensorboardX來記錄分析訓(xùn)練過程

    訓(xùn)練過程中的數(shù)據(jù)對觀察算法是否收斂和對比算法或超參數(shù)有很大的幫助。

    1、觀察算法是否收斂

    最直觀的,訓(xùn)練過程獎(jiǎng)勵(lì)(reward)的變化過程直接表明了算法是否收斂。

    在此基礎(chǔ)上,與環(huán)境相關(guān)的數(shù)據(jù),比如游戲每回合的步數(shù)(step)也能反映算法是否收斂,CartPole環(huán)境每回合的步數(shù)應(yīng)該慢慢增長,MountainCar環(huán)境每回合步數(shù)應(yīng)該慢慢減少。

    和算法相關(guān)數(shù)據(jù),比如loss的值,在DQN算法中,loss的值應(yīng)該慢慢減少,直到趨于平穩(wěn)。

    下圖是DQN算法訓(xùn)練MountainCar-v0環(huán)境過程的tensorboardX截圖,完整的代碼和數(shù)據(jù)在這里。

    DQN算法訓(xùn)練MountainCar-v0環(huán)境過程

    2、對比算法或超參數(shù)

    可以對比不同算法或同個(gè)算法不同超參數(shù)值對算法的收斂,有助于直觀的了解算法的性能和收斂的速度等。

    下圖是Deep Q-Learing(橙色線條)算法和Double-Q Learning(藍(lán)色線條)訓(xùn)練MountainCar-v0環(huán)境過程的對比圖,完整的代碼和數(shù)據(jù)在這里。

    Deep Q-Learing(橙色線條)算法和Double-Q Learning(藍(lán)色線條)訓(xùn)練MountainCar-v0環(huán)境過程的對比圖

    總結(jié)

    以上是生活随笔為你收集整理的dqn在训练过程中loss越来越大_DQN算法实现注意事项及排错方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。