成人av在线资源一区,亚洲av日韩av一区,欧美丰满熟妇乱XXXXX图片,狠狠做五月深爱婷婷伊人,桔子av一区二区三区,四虎国产精品永久在线网址,国产尤物精品人妻在线,中文字幕av一区二区三区欲色
    您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
    此為臨時鏈接,僅用于文章預覽,將在時失效
    人工智能 正文
    發私信給AI研習社-譯站
    發送

    0

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    本文作者: AI研習社-譯站 2019-01-14 10:47
    導語:今天,我們將創建一個Deep Q神經網絡。

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    本文為 AI 研習社編譯的技術博客,原標題 :


    An introduction to Deep Q-Learning: let’s play Doom

    作者 | Thomas Simonini

    翻譯 |  斯蒂芬?二狗子

    校對 |  醬番梨          整理 | 菠蘿妹

    原文鏈接:

    https://medium.freecodecamp.org/an-introduction-to-deep-q-learning-lets-play-doom-54d02d8017d8


    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分)

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    本文是Tensorflow深度強化學習課程的一部分。點擊這里查看教學大綱

    上一次,我們學習了Q-Learning:一種算法,它生成一個Q表,Agent用它來查找給定狀態時采取的最佳動作。

    但正如我們所看到的,狀態空間是大型環境時,生成和更新Q表可能會失效。

    本文是關于深度強化學習的一系列博客文章的第三部分。有關更多信息和更多資源,請查看  課程的教學大綱。

    今天,我們將創建一個Deep Q神經網絡。我們通過一個神經網絡實現,而不是使用Q表,該神經網絡獲取智能體的狀態并為該狀態的每個動作計算Q值。

    多虧了這個模型,我們將能夠創建一個學習如何玩Doom的智能體  !

    我們的DQN智能體

    在本文中,您將學習:

    • 什么是Deep Q-Learning(DQL)?

    • 使用DQL的最佳策略是什么?

    • 如何處理時間限制問題

    • 為什么我們使用經驗回放

    • DQL背后的數學是什么?

    • 如何在Tensorflow中實現它


      為Q-Learning添加“深度”

    在  上一篇文章中,我們通過Q學習算法創建了一個扮演Frozen Lake的智能體。

    我們實現了Q-learning函數來創建和更新Q表。根據到當前的狀態,可以將此視為“作弊表”,以幫助我們找到行動的最大預期未來獎勵。這是一個很好的策略 - 但是,這種方法不可擴展。

    想象一下我們今天要做的事情。我們將創建一個學習玩Doom的智能體。

    Doom是一個擁有巨大狀態空間(數百萬不同state)的大環境。為該環境創建和更新Q表的效率可想而知。

    在這種情況下,最好的想法是創建一個神經網絡 ,這個網絡在給定狀態的情況下  ,將近似每個動作的不同Q值。

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)


      Deep Q-Learning是如何工作的?

    深度Q學習的架構:

    這看起來很復雜,但我會逐步解釋這個架構。

    我們的深度Q學習神經網絡以四個圖像幀的堆疊作為輸入。它們通過其網絡,并在給定狀態下為每個可能的動作輸出Q值向量。我們需要采用此向量的最大Q值來找到我們最好的行動。

    一開始,智能體的表現非常糟糕。但隨著時間的推移,它開始將 圖像幀(狀態)與最佳動作聯系起來。


    預處理部分

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    預處理是重要的一步。我們希望降低狀態的復雜性,以減少培訓所需的計算時間。

    首先,我們可以對每個state進行灰度化。顏色不會添加重要信息(在我們的例子中,我們只需要找到敵人并殺死他,我們不需要顏色來找到他)。這是一個重要的節省,因為我們將三種顏色通道(RGB)減少到1(灰度)。

    然后,我們裁剪圖像。在我們的例子中,看到屋頂并不是真的有用。

    然后我們減小每幀圖的大小,并將四個子幀疊加在一起。


    時間限制的問題

    Arthur Juliani  在他的文章中對這個主題給出了一個很棒的解釋  。他有一個聰明的主意:使用  LSTM神經網絡  來處理。

    但是,我認為初學者使用堆疊圖像會更好。

    您可能問的第一個問題是我們為什么要將圖像幀疊加在一起?

    我們將幀堆疊在一起,因為它有助于我們處理時間限制(temporal limitation)的問題。

    讓我們舉一個例子,在 Pong 游戲中。當你看到這個圖片時:

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    你能告訴我球在哪里嗎?

    不能,因為一幀圖片不足以產生運動感!

    但是,如果我再添加三個幀怎么辦?在這里你可以看到球向右移動。

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    這對我們的Doom智能體來說是一樣的。如果我們一次只給他一幀圖片,它就不知道該如何行動了。如果不能確定物體移動的位置和速度,它怎么能做出正確的決定呢?


    使用卷積網絡

    幀由三個卷積層處理。這些圖層允許您利用圖像中的空間關系。但是,因為幀堆疊在一起,您可以利用這些幀的一些空間屬性。

    如果你不熟悉卷積,請仔細閱讀  Adam Geitgey 的 文章  。

    每個卷積層將使用 ELU 作為激活函數。ELU已被證明是卷積層的較好 激活函數。

    我們設定一個具有ELU激活函數的完全連接層和一個輸出層(具有線性激活函數的完全連接層),其輸出為每個動作的Q值估計。


    經驗回放:更有效地利用觀察到的體驗

    經驗回放將幫助我們處理兩件事:

    • 避免忘記以前的經歷。

    • 減少經驗之間的相關性。

    我將解釋這兩個概念。

    這部分和插圖的靈感來自Udacity的Deep Learning Foundations Nanodegree的Deep Q Learning章節中的重要解釋  。


    避免忘記以前的經歷

    我們有一個很大的問題:權重的可變性,因為行動和狀態之間存在高度相關性。

    請記住在第一篇文章(強化學習簡介)中,我們談到了強化學習過程:

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    在每個時間步,得到一個元組(state, action, reward, new_state)。從(這個元組)中學習,然后扔掉這個經驗。

    問題是將智能體與環境相互作用的得到序列樣本輸入到神經網絡進行訓練過程中。 神經網絡往往會忘記以前的經歷,因為它的參數會被新的經驗覆蓋。

    例如,當前超級瑪麗的的第一關,然后是第二關(這個環境是完全不同的),我們的智能體就會忘記如何在第一關中進行行動。

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    通過學習如何在水中玩,我們的智能體會忘記如何在第一關發揮

    因此,通過多次學習,可以更有效地利用以前的經驗。

    我們的解決方案:創建一個“replay buffer”存盤。在智能體與環境交互時存儲經驗元組,然后我們用小批量元組數據a small batch of tuple來訓練神經網絡。

     “replay buffer”可以看成一個文件夾,其中每個工作表都是經驗元組。通過智能體與環境交互來產生。然后你拿其中的一些隨機表來訓練神經網絡

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    這可以防止網絡只學習智能體當前的經驗。


    減少經驗之間的相關性

    我們還有另一個問題 - 我們知道每個行動都會影響下一個狀態。行動過程得到了一個序列的經驗元組,這些元組可能會高度相關。

    如果按序列順序訓練網絡,這種相關性會影響我們的智能體。

    通過在replay buffer隨機抽取,我們可以打破這種相關性。可以防止動作值發生振蕩或發散。

    通過一個例子來理解它會更容易。假設我們玩第一人稱射擊游戲,怪物不斷出現左邊或右邊。智能體的目標是射擊怪物。它有兩個槍和兩個動作:向左射擊或向右射擊。

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    該表表示Q值近似值

    我們學習有序的經驗。假設我們知道如果我們射擊怪物,下一個怪物來自同一方向的概率是70%。在我們的例子中,這是我們的經驗元組之間的相關性。

    開始訓練吧。智能體看到了右邊的怪物,并用右槍射擊它。這是對的!

    然后下一個怪物也來自右邊(概率為70%),智能體將使用右槍射擊。再次命中,這很好!

    等等......

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    紅槍是采取的行動

    問題是,這種方法增加了在整個狀態空間使用右槍的權重值。

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    我們可以看到怪物在左邊并用右槍射擊的Q值是正的(即使它不合理)

    如果網絡沒有看到很多左邊的例子(因為只有30%可能來自左邊), 智能體 只會選擇右邊而不管怪物來自哪里。這根本不合理。

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    即使怪物出現在左側,我們的經紀人也會用右槍射擊

    我們有兩個并行的策略來處理這個問題。

    首先,在與環境交互的時必須停止學習。我們應該嘗試探索不同的東西并隨意玩一下來探索狀態空間。我們可以將這些經驗保存在replay buffer中。

    然后,可以回放這些經歷并從中學習。之后,繼續玩返回更新值函數。

    因此,我們將有一套更好的樣本。通過這些示例能夠概括游戲的真實模式,以任何順序回放。

    這有助于避免被固定在狀態空間的一個區域上。這可以防止反復強化相同的動作。

    這種方法可以看作是監督學習的一種形式。

    我們將在以后的文章中看到我們也可以使用“優先級經驗回放”。這讓我們可以更頻繁地向神經網絡呈現罕見或“重要”的元組。

      我們的深度Q-Learning算法

    首先是一點點數學:

    記得,我們使用Bellman方程更新給定狀態和動作的Q值:

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    在我們的例子中,更新的神經網絡權重以減少錯誤。

    時序差分誤差(或TD誤差)是通過Q_target(來自下一個狀態的最大可能值)和Q_value(我們當前預測的Q值)之間的差來計算的。

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    Initialize Doom Environment E
    Initialize replay Memory M with capacity N (= finite capacity)
    Initialize the DQN weights w
    for episode in max_episode:
       s = Environment state
       for steps in max_steps:
            Choose action a from state s using epsilon greedy.
            Take action a, get r (reward) and s' (next state)
            Store experience tuple <s, a, r, s'
    > in M
            s = s' (state = new_state)
           
            Get random minibatch of exp tuples from M
            Set Q_target = reward(s,a) +  γmaxQ(s'
    )
            Update w =  α(Q_target - Q_value) *  ?w Q_value


    此算法中有兩個過程:

    • 我們對執行操作的環境進行采樣,并將觀察存儲在回放內存中的經驗元組。

    • 選擇小批量的元組隨機梯度下降(batch SGD)進行學習。


      讓我們實現我們的Deep Q神經網絡

    我們制作了一個視頻,用Tensorflow實現了一個深度Q學習agent,學習玩Atari Space Invaders???。

    使用 Tensorflow 和Space Invaders進行深度Q學習 - (教程)

    現在我們知道它是如何工作的,我們將逐步實現我們的Deep Q神經網絡。代碼的每個步驟和每個部分都直接在下面鏈接的Jupyter筆記本中解釋。

    您可以在Deep Reinforcement Learning Course repo 中訪問它:

    https://gist.github.com/simoninithomas/7611db5d8a6f3edde269e18b97fa4d0c#file-deep-q-learning-with-doom-ipynb

    就這樣!您剛剛創建了一個學習玩Doom的智能體。真棒!

    不要忘記自己實現代碼的每個部分。嘗試修改我給你的代碼非常重要。嘗試添加epochs,更改架構architecture,,添加固定的Q值,更改學習率,使用更難的環境(例如Health Gathering)......等等。玩得開心!

    在下一篇文章中,我將討論Deep Q-learning的最新改進:

    • Fixed Q-values

    • Prioritized Experience Replay

    • Double DQN

    • Dueling Networks

    但是下次我們將通過訓練一個扮演毀滅戰士的智能體來研究策略梯度,將通過收集“health”來嘗試在惡劣的環境中生存。


    想要繼續查看該篇文章相關鏈接和參考文獻?

    長按鏈接點擊打開或點擊底部【深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分】:

    https://ai.yanxishe.com/page/TextTranslation/1395


    AI研習社每日更新精彩內容,觀看更多精彩內容:雷鋒網雷鋒網雷鋒網

    用PyTorch來做物體檢測和追蹤

    用 Python 做機器學習不得不收藏的重要庫

    初學者怎樣使用Keras進行遷移學習

    一文帶你讀懂 WaveNet:谷歌助手的聲音合成器

    等你來譯:

    強化學習:通往基于情感的行為系統 

    如何用Keras來構建LSTM模型,并且調參 

    高級DQNs:利用深度強化學習玩吃豆人游戲

    用于深度強化學習的結構化控制網絡 (ICML 論文講解)


    雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知

    深度強化學習從入門到大師:以Doom為例一文帶你讀懂深度Q學習(第三部分 - 上)

    分享:
    相關文章

    知情人士

    AI研習社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學習知識的門檻。(原雷鋒字幕組)
    當月熱門文章
    最新文章
    請填寫申請人資料
    姓名
    電話
    郵箱
    微信號
    作品鏈接
    個人簡介
    為了您的賬戶安全,請驗證郵箱
    您的郵箱還未驗證,完成可獲20積分喲!
    請驗證您的郵箱
    立即驗證
    完善賬號信息
    您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
    立即設置 以后再說