0
本文作者: AI研習(xí)社-譯站 | 2019-06-24 16:35 |
本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :
Deep Reinforcement Learning using Unity ml-agents
作者 | Jo?o Ramos
翻譯 | 通夜 編輯 | 王立魚
原文鏈接:
https://towardsdatascience.com/deep-reinforcement-learning-using-unity-ml-agents-8af8d407dd5a
大家好 !
最近,我和我的兩個同事佩德羅·昆塔斯和佩德羅·卡爾代拉做了一些實驗,使用的是Unity的ml -agents,我認為這是一個偉大的時刻,我希望與社區(qū)分享我們的結(jié)果,并向你展示如何擴展你的強化學(xué)習(xí)知識。
如果你不知道Unity ml-agents是什么,讓我給你一個簡單的介紹。Unity ml-agents是一個“用游戲和模擬環(huán)境來訓(xùn)練智能體的開源Unity插件,”。在我看來,這是一個可以對開始學(xué)習(xí)深度學(xué)習(xí)和強化學(xué)習(xí)來說很好的框架,因為它可以看到正在發(fā)生的事情,而不僅僅是在終端上看到數(shù)字和字母。
在開始展示我們的小項目之前,讓我先展示一下框架已經(jīng)創(chuàng)建的一些場景。
好了,現(xiàn)在您已經(jīng)了解了這個工具的功能和外觀,讓我們來討論一下這個項目!
我們使用了Unity ml-agents創(chuàng)建的一個智能體。它基本上是一只蜘蛛,但只有四條腿。然后我們?yōu)檫@只小“蜘蛛”創(chuàng)造了一個移動平臺來讓它四處移動。
那只是Unity的搭建,讓我們談?wù)剰娀瘜W(xué)習(xí)吧!一開始,和往常一樣,蜘蛛(agent)只知道它在平臺上的位置和方向。因為我們的目標(biāo)是讓兩只蜘蛛互相爭斗(不告訴它們該做什么),所以他必須設(shè)法教它們。這時強化學(xué)習(xí)就開始起作用了。我假設(shè)在讀這篇文章的你知道強化學(xué)習(xí)背后的基本理論。如果你是新手,這里有一個初學(xué)者指南:
https://skymind.ai/wiki/deep-reinforcement-learning
所以,就像任何一個普通的“愚蠢的智能體”一樣,我們必須“教”它。我們通過當(dāng)他們有好的行為時給予好的獎勵,當(dāng)他們有壞的行為時給予壞的獎勵來教我們的智能體。經(jīng)過反復(fù)試驗,智能體們終于學(xué)會了如何站立和行走!基本上,每次他們的身體接觸到地面,我們都會給他們不好的獎勵。因為如果它們的身體在地上,這意味著它們的四條腿不在地上,或者它們的腿沒有產(chǎn)生足夠的力。(他們應(yīng)該站起來)。通過給壞的獎勵,我們告訴他們這些行為不好,他們應(yīng)該避免。
讓我們概括一下到目前為止我們所做的:
-我們使用ml-agents創(chuàng)建了一個Unity環(huán)境。
-我們教我們的蜘蛛站起來,平衡它的腳來走路。
下一步是教他們打架!為了改變蜘蛛的行為使它們能夠戰(zhàn)斗,我們必須改變它們的獎勵。所以,如果其中一只蜘蛛離開了平臺,或者被尸體碰在地上,它將會得到一個非常糟糕的獎勵。
另外,如果當(dāng)它們做了我們想讓它們做的,而我們沒有給它們一個好的獎勵,它們就不會繼續(xù)重復(fù)那些行為。所以當(dāng)一只蜘蛛面對另一只蜘蛛時,我們給了它們很好的獎勵,當(dāng)蜘蛛朝著另一只蜘蛛的方向前進時,我們給了它們更好的獎勵。這使得兩只蜘蛛朝著另一只蜘蛛的方向前進,在某個時候,其中一只蜘蛛會把另一只蜘蛛扔出平臺。(這只是一個簡單的例子來證明我的觀點)
此外,他們自己也學(xué)會了用拳頭把對方打在地上就能贏。所以在同一時刻,他們開始“摔跤”。這是一個非常有趣的觀察。
此外,我們還用一個移動平臺測試了我們的智能體,以創(chuàng)建一個更困難的環(huán)境:
如果你想復(fù)制我的結(jié)果,這里有更多關(guān)于我的可觀察向量和獎勵函數(shù)的信息:
agent關(guān)于自身的信息:
- agent關(guān)于其關(guān)節(jié)的信息
- agent在平臺上的向上和向前向量
- agent在平臺上的位置
關(guān)于對手的信息:
-對手身體的向上和向前的矢量
-對手在平臺上的位置
智能體不能站起來應(yīng)該受到懲罰,使得對手摔倒應(yīng)該得到獎勵,這是智能體的主要目標(biāo)。
智能體從平臺上摔下來應(yīng)該受到懲罰,但不應(yīng)該得到獎勵。我們希望智能體們學(xué)習(xí)的戰(zhàn)斗方法,不包括以特定的方式擊潰平臺來讓對手稍微早一點倒下。
智能體應(yīng)該因為去推對手而得到獎勵,應(yīng)該因為抽離或讓自己被推而受到懲罰。這獎勵了一種積極的戰(zhàn)斗風(fēng)格,懲罰了更多的逃避風(fēng)格,包括逃跑。
基于前面的幾點,我們創(chuàng)建了如下的獎勵:
如果代理在地板上:-1.0分
如果對手在地上:1.0分。
如果代理不在平臺上:-1.0分
0.003*(標(biāo)準(zhǔn)化的速度*(對手位置-智能體位置)) +0.001*(前進的標(biāo)準(zhǔn)化矢量*(對手位置-智能體位置))
最后,我們嘗試更進一步,使用類人機器人作為智能體。難度呈指數(shù)級增長,因為蜘蛛有8個關(guān)節(jié),而類人機器人有12個。這增加了可能的組合動作的總數(shù)。所以,我們最終并沒有得到驚人的結(jié)果,但這看起來很有趣:
總之,Unity ml-agents允許您非常容易地構(gòu)建一些有趣的東西。我認為這是開始學(xué)習(xí)這門學(xué)科的好方法。請隨時與我分享你的問題和結(jié)果! 雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
作為這個方向的下一個項目,我想為無人機模擬和自動駕駛創(chuàng)造一個環(huán)境。如果你有什么想法,請聯(lián)系我!
謝謝!
想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻?
點擊【使用Unity ml-agent進行深度強化學(xué)習(xí)】即可訪問!
今日課程推薦:深度理解強化學(xué)習(xí)
【課程亮點】
系統(tǒng)化講解強化學(xué)習(xí)體系,算法原理+數(shù)學(xué)推導(dǎo)+實戰(zhàn)代碼示例
頂會論文作者講解,豐富項目經(jīng)驗
手把手教你強化學(xué)習(xí)
共10章節(jié),約30課時,每周三定時更新。
課程鏈接:https://ai.yanxishe.com/page/domesticCourse/73
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。