丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

0

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

本文作者: AI研習(xí)社-譯站 2019-01-14 10:47
導(dǎo)語(yǔ):今天,我們將創(chuàng)建一個(gè)Deep Q神經(jīng)網(wǎng)絡(luò)。

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

本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :


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

作者 | Thomas Simonini

翻譯 |  斯蒂芬?二狗子

校對(duì) |  醬番梨          整理 | 菠蘿妹

原文鏈接:

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


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

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

本文是Tensorflow深度強(qiáng)化學(xué)習(xí)課程的一部分。點(diǎn)擊這里查看教學(xué)大綱

上一次,我們學(xué)習(xí)了Q-Learning:一種算法,它生成一個(gè)Q表,Agent用它來(lái)查找給定狀態(tài)時(shí)采取的最佳動(dòng)作。

但正如我們所看到的,狀態(tài)空間是大型環(huán)境時(shí),生成和更新Q表可能會(huì)失效。

本文是關(guān)于深度強(qiáng)化學(xué)習(xí)的一系列博客文章的第三部分。有關(guān)更多信息和更多資源,請(qǐng)查看  課程的教學(xué)大綱。

今天,我們將創(chuàng)建一個(gè)Deep Q神經(jīng)網(wǎng)絡(luò)。我們通過(guò)一個(gè)神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn),而不是使用Q表,該神經(jīng)網(wǎng)絡(luò)獲取智能體的狀態(tài)并為該狀態(tài)的每個(gè)動(dòng)作計(jì)算Q值。

多虧了這個(gè)模型,我們將能夠創(chuàng)建一個(gè)學(xué)習(xí)如何玩Doom的智能體  !

我們的DQN智能體

在本文中,您將學(xué)習(xí):

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

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

  • 如何處理時(shí)間限制問(wèn)題

  • 為什么我們使用經(jīng)驗(yàn)回放

  • DQL背后的數(shù)學(xué)是什么?

  • 如何在Tensorflow中實(shí)現(xiàn)它


  為Q-Learning添加“深度”

在  上一篇文章中,我們通過(guò)Q學(xué)習(xí)算法創(chuàng)建了一個(gè)扮演Frozen Lake的智能體。

我們實(shí)現(xiàn)了Q-learning函數(shù)來(lái)創(chuàng)建和更新Q表。根據(jù)到當(dāng)前的狀態(tài),可以將此視為“作弊表”,以幫助我們找到行動(dòng)的最大預(yù)期未來(lái)獎(jiǎng)勵(lì)。這是一個(gè)很好的策略 - 但是,這種方法不可擴(kuò)展。

想象一下我們今天要做的事情。我們將創(chuàng)建一個(gè)學(xué)習(xí)玩Doom的智能體。

Doom是一個(gè)擁有巨大狀態(tài)空間(數(shù)百萬(wàn)不同state)的大環(huán)境。為該環(huán)境創(chuàng)建和更新Q表的效率可想而知。

在這種情況下,最好的想法是創(chuàng)建一個(gè)神經(jīng)網(wǎng)絡(luò) ,這個(gè)網(wǎng)絡(luò)在給定狀態(tài)的情況下  ,將近似每個(gè)動(dòng)作的不同Q值。

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


  Deep Q-Learning是如何工作的?

深度Q學(xué)習(xí)的架構(gòu):

這看起來(lái)很復(fù)雜,但我會(huì)逐步解釋這個(gè)架構(gòu)。

我們的深度Q學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)以四個(gè)圖像幀的堆疊作為輸入。它們通過(guò)其網(wǎng)絡(luò),并在給定狀態(tài)下為每個(gè)可能的動(dòng)作輸出Q值向量。我們需要采用此向量的最大Q值來(lái)找到我們最好的行動(dòng)。

一開始,智能體的表現(xiàn)非常糟糕。但隨著時(shí)間的推移,它開始將 圖像幀(狀態(tài))與最佳動(dòng)作聯(lián)系起來(lái)。


預(yù)處理部分

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

預(yù)處理是重要的一步。我們希望降低狀態(tài)的復(fù)雜性,以減少培訓(xùn)所需的計(jì)算時(shí)間。

首先,我們可以對(duì)每個(gè)state進(jìn)行灰度化。顏色不會(huì)添加重要信息(在我們的例子中,我們只需要找到敵人并殺死他,我們不需要顏色來(lái)找到他)。這是一個(gè)重要的節(jié)省,因?yàn)槲覀儗⑷N顏色通道(RGB)減少到1(灰度)。

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

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


時(shí)間限制的問(wèn)題

Arthur Juliani  在他的文章中對(duì)這個(gè)主題給出了一個(gè)很棒的解釋  。他有一個(gè)聰明的主意:使用  LSTM神經(jīng)網(wǎng)絡(luò)  來(lái)處理。

但是,我認(rèn)為初學(xué)者使用堆疊圖像會(huì)更好。

您可能問(wèn)的第一個(gè)問(wèn)題是我們?yōu)槭裁匆獙D像幀疊加在一起?

我們將幀堆疊在一起,因?yàn)樗兄谖覀兲幚頃r(shí)間限制(temporal limitation)的問(wèn)題。

讓我們舉一個(gè)例子,在 Pong 游戲中。當(dāng)你看到這個(gè)圖片時(shí):

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

你能告訴我球在哪里嗎?

不能,因?yàn)橐粠瑘D片不足以產(chǎn)生運(yùn)動(dòng)感!

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

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

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


使用卷積網(wǎng)絡(luò)

幀由三個(gè)卷積層處理。這些圖層允許您利用圖像中的空間關(guān)系。但是,因?yàn)閹询B在一起,您可以利用這些幀的一些空間屬性。

如果你不熟悉卷積,請(qǐng)仔細(xì)閱讀  Adam Geitgey 的 文章  。

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

我們?cè)O(shè)定一個(gè)具有ELU激活函數(shù)的完全連接層和一個(gè)輸出層(具有線性激活函數(shù)的完全連接層),其輸出為每個(gè)動(dòng)作的Q值估計(jì)。


經(jīng)驗(yàn)回放:更有效地利用觀察到的體驗(yàn)

經(jīng)驗(yàn)回放將幫助我們處理兩件事:

  • 避免忘記以前的經(jīng)歷。

  • 減少經(jīng)驗(yàn)之間的相關(guān)性。

我將解釋這兩個(gè)概念。

這部分和插圖的靈感來(lái)自Udacity的Deep Learning Foundations Nanodegree的Deep Q Learning章節(jié)中的重要解釋  。


避免忘記以前的經(jīng)歷

我們有一個(gè)很大的問(wèn)題:權(quán)重的可變性,因?yàn)樾袆?dòng)和狀態(tài)之間存在高度相關(guān)性。

請(qǐng)記住在第一篇文章(強(qiáng)化學(xué)習(xí)簡(jiǎn)介)中,我們談到了強(qiáng)化學(xué)習(xí)過(guò)程:

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

在每個(gè)時(shí)間步,得到一個(gè)元組(state, action, reward, new_state)。從(這個(gè)元組)中學(xué)習(xí),然后扔掉這個(gè)經(jīng)驗(yàn)。

問(wèn)題是將智能體與環(huán)境相互作用的得到序列樣本輸入到神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練過(guò)程中。 神經(jīng)網(wǎng)絡(luò)往往會(huì)忘記以前的經(jīng)歷,因?yàn)樗膮?shù)會(huì)被新的經(jīng)驗(yàn)覆蓋。

例如,當(dāng)前超級(jí)瑪麗的的第一關(guān),然后是第二關(guān)(這個(gè)環(huán)境是完全不同的),我們的智能體就會(huì)忘記如何在第一關(guān)中進(jìn)行行動(dòng)。

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

通過(guò)學(xué)習(xí)如何在水中玩,我們的智能體會(huì)忘記如何在第一關(guān)發(fā)揮

因此,通過(guò)多次學(xué)習(xí),可以更有效地利用以前的經(jīng)驗(yàn)。

我們的解決方案:創(chuàng)建一個(gè)“replay buffer”存盤。在智能體與環(huán)境交互時(shí)存儲(chǔ)經(jīng)驗(yàn)元組,然后我們用小批量元組數(shù)據(jù)a small batch of tuple來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò)。

 “replay buffer”可以看成一個(gè)文件夾,其中每個(gè)工作表都是經(jīng)驗(yàn)元組。通過(guò)智能體與環(huán)境交互來(lái)產(chǎn)生。然后你拿其中的一些隨機(jī)表來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò)

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

這可以防止網(wǎng)絡(luò)只學(xué)習(xí)智能體當(dāng)前的經(jīng)驗(yàn)。


減少經(jīng)驗(yàn)之間的相關(guān)性

我們還有另一個(gè)問(wèn)題 - 我們知道每個(gè)行動(dòng)都會(huì)影響下一個(gè)狀態(tài)。行動(dòng)過(guò)程得到了一個(gè)序列的經(jīng)驗(yàn)元組,這些元組可能會(huì)高度相關(guān)。

如果按序列順序訓(xùn)練網(wǎng)絡(luò),這種相關(guān)性會(huì)影響我們的智能體。

通過(guò)在replay buffer隨機(jī)抽取,我們可以打破這種相關(guān)性。可以防止動(dòng)作值發(fā)生振蕩或發(fā)散。

通過(guò)一個(gè)例子來(lái)理解它會(huì)更容易。假設(shè)我們玩第一人稱射擊游戲,怪物不斷出現(xiàn)左邊或右邊。智能體的目標(biāo)是射擊怪物。它有兩個(gè)槍和兩個(gè)動(dòng)作:向左射擊或向右射擊。

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

該表表示Q值近似值

我們學(xué)習(xí)有序的經(jīng)驗(yàn)。假設(shè)我們知道如果我們射擊怪物,下一個(gè)怪物來(lái)自同一方向的概率是70%。在我們的例子中,這是我們的經(jīng)驗(yàn)元組之間的相關(guān)性。

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

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

等等......

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

紅槍是采取的行動(dòng)

問(wèn)題是,這種方法增加了在整個(gè)狀態(tài)空間使用右槍的權(quán)重值。

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

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

如果網(wǎng)絡(luò)沒(méi)有看到很多左邊的例子(因?yàn)橹挥?0%可能來(lái)自左邊), 智能體 只會(huì)選擇右邊而不管怪物來(lái)自哪里。這根本不合理。

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

即使怪物出現(xiàn)在左側(cè),我們的經(jīng)紀(jì)人也會(huì)用右槍射擊

我們有兩個(gè)并行的策略來(lái)處理這個(gè)問(wèn)題。

首先,在與環(huán)境交互的時(shí)必須停止學(xué)習(xí)。我們應(yīng)該嘗試探索不同的東西并隨意玩一下來(lái)探索狀態(tài)空間。我們可以將這些經(jīng)驗(yàn)保存在replay buffer中。

然后,可以回放這些經(jīng)歷并從中學(xué)習(xí)。之后,繼續(xù)玩返回更新值函數(shù)。

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

這有助于避免被固定在狀態(tài)空間的一個(gè)區(qū)域上。這可以防止反復(fù)強(qiáng)化相同的動(dòng)作。

這種方法可以看作是監(jiān)督學(xué)習(xí)的一種形式。

我們將在以后的文章中看到我們也可以使用“優(yōu)先級(jí)經(jīng)驗(yàn)回放”。這讓我們可以更頻繁地向神經(jīng)網(wǎng)絡(luò)呈現(xiàn)罕見或“重要”的元組。

  我們的深度Q-Learning算法

首先是一點(diǎn)點(diǎn)數(shù)學(xué):

記得,我們使用Bellman方程更新給定狀態(tài)和動(dòng)作的Q值:

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

在我們的例子中,更新的神經(jīng)網(wǎng)絡(luò)權(quán)重以減少錯(cuò)誤。

時(shí)序差分誤差(或TD誤差)是通過(guò)Q_target(來(lái)自下一個(gè)狀態(tài)的最大可能值)和Q_value(我們當(dāng)前預(yù)測(cè)的Q值)之間的差來(lái)計(jì)算的。

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

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


此算法中有兩個(gè)過(guò)程:

  • 我們對(duì)執(zhí)行操作的環(huán)境進(jìn)行采樣,并將觀察存儲(chǔ)在回放內(nèi)存中的經(jīng)驗(yàn)元組。

  • 選擇小批量的元組隨機(jī)梯度下降(batch SGD)進(jìn)行學(xué)習(xí)。


  讓我們實(shí)現(xiàn)我們的Deep Q神經(jīng)網(wǎng)絡(luò)

我們制作了一個(gè)視頻,用Tensorflow實(shí)現(xiàn)了一個(gè)深度Q學(xué)習(xí)agent,學(xué)習(xí)玩Atari Space Invaders???。

使用 Tensorflow 和Space Invaders進(jìn)行深度Q學(xué)習(xí) - (教程)

現(xiàn)在我們知道它是如何工作的,我們將逐步實(shí)現(xiàn)我們的Deep Q神經(jīng)網(wǎng)絡(luò)。代碼的每個(gè)步驟和每個(gè)部分都直接在下面鏈接的Jupyter筆記本中解釋。

您可以在Deep Reinforcement Learning Course repo 中訪問(wèn)它:

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

就這樣!您剛剛創(chuàng)建了一個(gè)學(xué)習(xí)玩Doom的智能體。真棒!

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

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

  • Fixed Q-values

  • Prioritized Experience Replay

  • Double DQN

  • Dueling Networks

但是下次我們將通過(guò)訓(xùn)練一個(gè)扮演毀滅戰(zhàn)士的智能體來(lái)研究策略梯度,將通過(guò)收集“health”來(lái)嘗試在惡劣的環(huán)境中生存。


想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻(xiàn)?

長(zhǎng)按鏈接點(diǎn)擊打開或點(diǎn)擊底部【深度強(qiáng)化學(xué)習(xí)從入門到大師:以Doom為例一文帶你讀懂深度Q學(xué)習(xí)(第三部分】:

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


AI研習(xí)社每日更新精彩內(nèi)容,觀看更多精彩內(nèi)容:雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)

用PyTorch來(lái)做物體檢測(cè)和追蹤

用 Python 做機(jī)器學(xué)習(xí)不得不收藏的重要庫(kù)

初學(xué)者怎樣使用Keras進(jìn)行遷移學(xué)習(xí)

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

等你來(lái)譯:

強(qiáng)化學(xué)習(xí):通往基于情感的行為系統(tǒng) 

如何用Keras來(lái)構(gòu)建LSTM模型,并且調(diào)參 

高級(jí)DQNs:利用深度強(qiáng)化學(xué)習(xí)玩吃豆人游戲

用于深度強(qiáng)化學(xué)習(xí)的結(jié)構(gòu)化控制網(wǎng)絡(luò) (ICML 論文講解)


雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

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

分享:
相關(guān)文章

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識(shí),讓語(yǔ)言不再成為學(xué)習(xí)知識(shí)的門檻。(原雷鋒字幕組)
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)