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