中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

備戰(zhàn)世界杯!先用深度學(xué)習(xí)與強(qiáng)化學(xué)習(xí)踢場 FIFA 18

2018-06-13    來源:

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

本文作者是切爾西足球俱樂部粉絲,他寫了一篇英文博客介紹如何使智能體在 FIFA 18 游戲中更加完美地踢任意球。全文共分為兩部分:用神經(jīng)網(wǎng)絡(luò)監(jiān)督式地玩 FIFA 18;用強(qiáng)化學(xué)習(xí) Q 學(xué)習(xí)玩 FIFA 18。

玩 FIFA 游戲的機(jī)制

構(gòu)建能玩 FIFA 游戲的智能體與游戲內(nèi)置的 Bot 是不一樣的,它不能訪問任何內(nèi)部程序信息,只能與人一樣獲得屏幕的輸出信息。游戲窗口截圖就是所有需要饋送到智能體游戲引擎的數(shù)據(jù),智能體會處理這些視覺信息并輸出它希望采取的動作,最后這些動作通過按鍵模擬器傳遞到游戲中。

下面我們提供了一個基本的框架為智能體提供輸入信息,并使其輸出控制游戲。因此,我們要考慮的就是如何學(xué)習(xí)游戲智能體。本文主要介紹了兩種方法,首先是以深度神經(jīng)網(wǎng)絡(luò)和有監(jiān)督的方式構(gòu)建智能體,包括使用卷積神經(jīng)網(wǎng)絡(luò)理解截圖信息和長短期記憶網(wǎng)絡(luò)預(yù)測動作序列。其次,我們將通過深度 Q 學(xué)習(xí)以強(qiáng)化學(xué)習(xí)的方式訓(xùn)練一個強(qiáng)大的智能體。這兩種方式的實(shí)現(xiàn)方法都已經(jīng)開源:

基于深度有監(jiān)督的智能體:https://github.com/ChintanTrivedi/DeepGamingAI_FIFA

基于強(qiáng)化學(xué)習(xí)的智能體:https://github.com/ChintanTrivedi/DeepGamingAI_FIFARL

基于監(jiān)督學(xué)習(xí)的智能體

步驟 1:訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)(CNN)

CNN 因其高度準(zhǔn)確地對圖像進(jìn)行目標(biāo)檢測的能力而出名。再加上有快速計算的 GPU 和高效的網(wǎng)絡(luò)架構(gòu),我們可以構(gòu)建能實(shí)時運(yùn)行的 CNN 模型。

 

 

為了令智能體能理解輸入圖像,我們使用了一個非常緊湊的輕量級卷積網(wǎng)絡(luò),即 MobileNet。該網(wǎng)絡(luò)抽取的特征圖表征了智能體對圖像的高級語義理解,例如理解球員和其它目標(biāo)在圖像中的位置。特征圖隨后會與單次多目標(biāo)檢測器一起檢測球場上的球員、球與球門。

步驟 2:訓(xùn)練長短期記憶網(wǎng)絡(luò)(LSTM)

 

 

現(xiàn)在理解了圖像之后,我們繼續(xù)來決定下一步的行動。然而,我們并不想僅看完一個幀的圖像就采取動作。我們首先需要觀察這些圖像的短序列。這正是 LSTM 發(fā)揮作用的地方,LSTM 就是因其對時序數(shù)據(jù)的優(yōu)越建模能力而出名的。連續(xù)的圖像幀在序列中作為時間步,每個幀使用 CNN 模型來提取特征圖。然后這些特征圖被同時饋送到兩個 LSTM 網(wǎng)絡(luò)。

 

 

第一個 LSTM 執(zhí)行的是決定玩家移動方式的學(xué)習(xí)任務(wù)。因此,這是一個多類別分類模型。第二個 LSTM 得到相同的輸入,并決定采取交叉、過人、傳球還是射門的動作,是另一個多類別分類模型。然后這兩個分類問題的輸出被轉(zhuǎn)換為按鍵動作,來控制游戲中的動作。

這些網(wǎng)絡(luò)已經(jīng)在手動玩游戲并記錄輸入圖像和目標(biāo)按鍵動作而收集的數(shù)據(jù)上訓(xùn)練過了。這是少數(shù)幾個收集標(biāo)記數(shù)據(jù)不會那么枯燥的任務(wù)類型之一。

基于強(qiáng)化學(xué)習(xí)的智能體

在前一部分中,我介紹了一個經(jīng)過訓(xùn)練的人工智能機(jī)器人,它使用監(jiān)督學(xué)習(xí)技術(shù)來玩 FIFA 游戲。通過這種方式,機(jī)器人很快就學(xué)會了傳球和射門等基本動作。然而,收集進(jìn)一步改進(jìn)所需的訓(xùn)練數(shù)據(jù)變得很麻煩,改進(jìn)之路舉步維艱,費(fèi)時費(fèi)力。出于這個原因,我決定改用強(qiáng)化學(xué)習(xí)。

這部分我將簡要介紹什么是強(qiáng)化學(xué)習(xí),以及如何將它應(yīng)用到這個游戲中。實(shí)現(xiàn)這一點(diǎn)的一大挑戰(zhàn)是,我們無法訪問游戲的代碼,所以只能利用我們在游戲屏幕上所看到的內(nèi)容。因此,我無法在整個游戲中對智能體進(jìn)行訓(xùn)練,但可以在練習(xí)模式下找到一種應(yīng)對方案來讓智能體玩轉(zhuǎn)技能游戲。在本教程中,我將嘗試教機(jī)器人在 30 碼處踢任意球,你也可以通過修改讓它玩其他的技能游戲。讓我們先了解強(qiáng)化學(xué)習(xí)技術(shù),以及如何制定適合這項(xiàng)技術(shù)的任意球問題解決方案。

強(qiáng)化學(xué)習(xí)(以及深度 Q 學(xué)習(xí))是什么?

與監(jiān)督學(xué)習(xí)相反,強(qiáng)化學(xué)習(xí)不需要手動標(biāo)注訓(xùn)練數(shù)據(jù)。而是與環(huán)境互動,觀察互動的結(jié)果。多次重復(fù)這個過程,獲得積極和消極經(jīng)驗(yàn)作為訓(xùn)練數(shù)據(jù)。因此,我們通過實(shí)驗(yàn)而不是模仿來學(xué)習(xí)。

假設(shè)我們的環(huán)境處于一個特定的狀態(tài) s,當(dāng)采取動作 a 時,它會變?yōu)闋顟B(tài) s'。對于這個特定的動作,你在環(huán)境中觀察到的即時獎勵是 r。這個動作之后的任何一組動作都有自己的即時獎勵,直到你因?yàn)榉e極或消極經(jīng)驗(yàn)而停止互動。這些叫做未來獎勵。因此,對于當(dāng)前狀態(tài) s,我們將嘗試從所有可能的動作中估計哪一個動作將帶來最大的即時 + 未來獎勵,表示為 Q(s,a),即 Q 函數(shù)。由此得到 Q(s,a) = r + γ * Q(s', a'),表示在 s 狀態(tài)下采取動作 a 的預(yù)期最終獎勵。由于預(yù)測未來具有不確定性,因此此處引入折扣因子 γ,我們更傾向于相信現(xiàn)在而不是未來。

 

圖源:http://people.csail.mit.edu/hongzi/content/publications/DeepRM-HotNets16.pdf深度 Q 學(xué)習(xí)是一種特殊的強(qiáng)化學(xué)習(xí)技術(shù),Q 函數(shù)是通過深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的。給定環(huán)境的狀態(tài)作為這個網(wǎng)絡(luò)的圖像輸入,它試圖預(yù)測所有可能動作的預(yù)期最終獎勵,像回歸問題一樣。選擇具有最大預(yù)測 Q 值的動作作為我們在環(huán)境中要采取的動作。該技術(shù)因此得名「深度 Q 學(xué)習(xí)」。

 

將 FIFA 任意球定位為 Q 學(xué)習(xí)問題

狀態(tài):通過 MobileNet CNN 處理的游戲截圖,給出了 128 維的扁平特征圖。

動作:四種可能的動作,分別是 shoot_low、shoot_high、move_left、move_right.

獎勵:如果按下射門,比賽成績增加 200 分以上,我們就進(jìn)了一個球,r=+1。如果球沒進(jìn),比分保持不變,r=-1。最后,對于與向左或向右移動相關(guān)的動作,r=0。

策略:兩層密集網(wǎng)絡(luò),以特征圖為輸入,預(yù)測所有 4 個動作的最終獎勵。

 

智能體與游戲環(huán)境交互的強(qiáng)化學(xué)習(xí)過程。Q 學(xué)習(xí)模型是這一過程的核心,負(fù)責(zé)預(yù)測智能體可能采取的所有動作的未來獎勵。該模型在整個過程中不斷得到訓(xùn)練和更新。注意:如果我們在 FIFA 的開球模式中有一個和練習(xí)模式中一樣的性能表(performance meter),那么我們可能就可以將整個游戲作為 Q 學(xué)習(xí)問題,而不僅僅局限于任意球。或者我們需要訪問我們沒有的游戲內(nèi)部代碼。不管怎樣,我們應(yīng)該充分利用現(xiàn)有的資源。

 

代碼實(shí)現(xiàn)

我們將使用 Tensorflow (Keras) 等深度學(xué)習(xí)工具在 Python 中完成實(shí)現(xiàn)過程。

GitHub 地址:https://github.com/ChintanTrivedi/DeepGamingAI_FIFARL

下面我將介紹代碼的四個要點(diǎn),以幫助大家理解教程,此處一些代碼行出于簡潔目的被刪除了。不過運(yùn)行代碼時需要使用完整代碼。

1. 與游戲環(huán)境交互

我們沒有現(xiàn)成的 API 來訪問代碼。所以,我們自己制作 API!我們將使用游戲的截圖來觀察狀態(tài),利用模擬按鍵在游戲環(huán)境中采取動作,利用光學(xué)字符識別(OCR)來讀取游戲中的獎勵。我們的 FIFA 類別中有三種主要的方法:observe(), act(), _get_reward();另外還有一種方法是 _over(),檢查任意球是否發(fā)出。

 

 

2. 收集訓(xùn)練數(shù)據(jù)

在整個訓(xùn)練過程中,我們要儲存所有的經(jīng)驗(yàn)和觀察到的獎勵,并以此作為 Q 學(xué)習(xí)模型的訓(xùn)練數(shù)據(jù)。所以,對于我們采取的每一個動作,我們都要將經(jīng)驗(yàn) 與 game_over 標(biāo)志一起存儲。我們的模型將嘗試學(xué)習(xí)的目標(biāo)標(biāo)簽是每個動作的最終獎勵,這是該回歸問題的實(shí)數(shù)。

 

 

3. 訓(xùn)練過程

現(xiàn)在我們可以與游戲互動,并將互動儲存在記憶中。我們開始訓(xùn)練 Q 學(xué)習(xí)模型。為此,我們將在「探索」(exploration,在游戲中隨機(jī)采取動作)和「利用」(exploitation,采取模型預(yù)測的動作)之間取得平衡。這樣我們就可以通過試錯來獲得不同的游戲體驗(yàn)。參數(shù) epsilon 正是用于此目的,它是平衡 exploration 和 exploitation 的指數(shù)遞減因子。開始的時候,我們什么都不知道,想進(jìn)行更多探索,但是隨著 epoch 的增加,我們學(xué)到的越來越多,于是我們想多利用,少探索。因此參數(shù)epsilon 的值衰減。

在本教程中,由于時間和性能的限制,模型訓(xùn)練只進(jìn)行了 1000 個 epoch,但以后我想至少訓(xùn)練 5000 個 epoch。

 

 

4. 模型定義和訓(xùn)練過程的啟動

Q 學(xué)習(xí)過程的核心是具有 ReLU 激活函數(shù)的兩層密集 / 全連接網(wǎng)絡(luò)。它將 128 維的特征圖作為輸入狀態(tài),為每個可能的動作輸出 4 個 Q 值。具有最大預(yù)測 Q 值的動作是根據(jù)給定狀態(tài)的網(wǎng)絡(luò)策略所要采取的期望動作。

 

 

這是執(zhí)行此代碼的起點(diǎn),但你必須確保 FIFA 18 游戲在第二個顯示器上以窗口模式運(yùn)行,并在技能游戲下加載任意球練習(xí)模式:射擊菜單。確保游戲控件與你在 FIFA.py 腳本中硬編碼的鍵同步。

結(jié)果

盡管該智能體并未掌握所有種類的任意球,但它在某些場景中學(xué)習(xí)效果很好。它幾乎總能在沒有筑人墻的時候成功射門,但是在人墻出現(xiàn)時射門會有些困難。此外,由于它在訓(xùn)練過程中并未頻繁遇到「不直面球門」等情況,因此在這些情況下它的行為比較愚蠢。但是,隨著訓(xùn)練 epoch 的增加,研究者注意到該行為呈下降趨勢。

 

上圖顯示在 1000 個 epoch 中每次嘗試的任意球平均數(shù)。因此,例如 epoch 700 的值為 0.45 意味著(平均)45% 的嘗試需要罰球。如上圖所示,在訓(xùn)練 1000 個 epoch 后,平均射門得分率從 30% 上升到 50%。這意味著當(dāng)前機(jī)器人在一半數(shù)量的任意球嘗試中成功得分(而人類的平均得分率是 75-80%)。不過 FIFA 的比賽并不具備那么強(qiáng)的確定性,使得學(xué)習(xí)過程變得困難。

 

 

更多結(jié)果查看:https://www.youtube.com/c/DeepGamingAI

結(jié)論

總體而言,我認(rèn)為雖然該智能體未能達(dá)到人類水平,但結(jié)果也是相當(dāng)令人滿意的。從監(jiān)督式學(xué)習(xí)轉(zhuǎn)向強(qiáng)化學(xué)習(xí)有助于減少收集訓(xùn)練數(shù)據(jù)的麻煩。如果有足夠的時間去探索,它在學(xué)習(xí)如何玩簡單游戲等問題上會表現(xiàn)得非常好。然而,強(qiáng)化學(xué)習(xí)的設(shè)定在遇到陌生情況時似乎會失敗,這使我認(rèn)為將它表述為不能推斷信息的回歸問題和監(jiān)督學(xué)習(xí)中的分類問題是一樣的。也許二者結(jié)合可以解決兩種方法的弱點(diǎn)。到時候我們或許就會看到為游戲構(gòu)建人工智能的最佳結(jié)果。

原文鏈接:https://towardsdatascience.com/building-a-deep-neural-network-to-play-fifa-18-dce54d45e675

https://towardsdatascience.com/using-deep-q-learning-in-fifa-18-to-perfect-the-art-of-free-kicks-f2e4e979ee66

標(biāo)簽: https 代碼 腳本 網(wǎng)絡(luò) 選擇

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:常用測試集帶來過擬合?你真的能控制自己不根據(jù)測試集調(diào)參嗎

下一篇:Facebook承認(rèn)向華為等中國公司提供數(shù)據(jù)訪問服務(wù),涉嫌違反美國國家安全法令