狂攬4k star,AI通過強化學習玩寶可夢,兩萬場后成功拿下
是不是說起「口袋妖怪」,你就不困了?
「口袋妖怪」是「寶可夢」的非官方譯名。從 1996 年至今,它可以被分為數個世代,成為很多玩家心中的經典之作。游戲畫風簡單,但是身為策略游戲,其中包含的角色、屬性、戰術、體系等讓這個游戲入門容易精通難。
如果訓練 AI 來玩寶可夢,你覺得它的實力如何?
推特用戶 @computerender 用強化學習訓練 AI 玩起了寶可夢。他也通過視頻記錄了這一過程,不僅生動地展示了訓練過程,還詳盡地介紹了其中的方法。
- 項目地址:https://github.com/PWhiddy/PokemonRedExperiments
- 視頻地址:https://www.youtube.com/watch?v=DcYLT37ImBY
當你打開視頻,就能觀看兩萬場 AI 玩的《寶可夢?紅》。一開始,AI 沒有任何的知識和經驗,只能夠隨機按下按鈕。但在五年的模擬游戲時間里,它在經歷中習得了更多能力。最終,AI 能夠抓住寶可夢,進化它們,并擊敗了健身房的領導者。
那么這是怎么做到的呢?
最基礎的目標是讓 AI 去探索地圖。作者所使用的方法是在 AI 到達新位置時給予獎勵。
作者記錄 AI 在玩游戲時看到的每個屏幕并將當前屏幕與記錄中的所有屏幕進行比較,看看是否有接近的匹配。如果沒有找到匹配,這意味著 AI 發現了一些新東西。在此情況下,作者將給它一個獎勵,并將新屏幕添加到記錄中。獨特屏幕帶來的獎勵可以鼓勵它繼續尋找游戲的新部分。
經過幾次迭代之后,AI 能更快的走出初始房間。但在這過程中,作者發現了隨著探索越來越多,AI 卻會被「困」在某處。這是因為該場景中有草、水、隨意走動的 NPC,這會更容易觸發新場景產生。作者通過改變畫面差異的像素閾值來進行改進。
除此之外,AI 還遇到了戰斗畫面大致相同,無法得到獎勵而逃離的行為。但是不戰斗,就無法前進。最后,作者通過增加額外獎勵來保持 AI 的前進。
戰斗畫面相似性較高
增加額外關卡獎勵
當然,AI 在這個過程中遇到的問題遠多于此。
當寶可夢戰斗的時間很長,其默認行動被耗盡時,它似乎會卡住,在多次訓練迭代之后,才有了實質性的改進。作者發現,在看到一只鴿子第一次參與進來后,它終于知道當一個移動耗盡時該做什么,并能夠切換到另一個替代移動。
就當一切順利時,作者發現了一個關鍵問題。AI 會直接投入戰斗,即使是那些它無法獲勝的戰斗。并且,它從不去寶可夢中心治療,這意味著當它輸了,它會一直回到游戲的開始。
作者試圖使用輸掉戰斗就減去獎勵來改進,但是沒有效果。當 AI 即將失敗時,它沒有避免艱難的戰斗,而是拒絕按下按鈕繼續無限期地拖延。這在技術上滿足了目標,但不是作者想要的。
作者在細致地觀察后發現,在一些罕見的情況下會造成巨大的獎勵減扣。一直以來,AI 都會在一場游戲中扣除比預期多 10 倍的獎勵。作者在回顧時發現,AI 寶可夢中心,在角落里的電腦前徘徊。登錄并漫無目的地按了一會兒按鈕后,它將一只寶可夢存入了系統,隨即大量獎勵就流失了。這是因為獎勵是根據寶可夢的等級總和分配的。因此,存入一只 13 級的寶可夢就會立即損失 13 分。這會發出強烈的負面信號,給 AI 造成類似創傷的體驗。AI 不像人類那樣有情感,但一個具有極端獎勵價值的事件仍會對它的行為產生持久的影響。在這種情況下,僅僅失去一次寶可夢就足以讓 AI 對整個寶可夢中心形成負面聯想,從而在今后的游戲中完全避開它。為了解決這個問題,作者再次修改獎勵函數,只有當等級增加時才給予獎勵。這似乎解決了問題。重新啟動訓練后,AI 開始訪問寶可夢中心。
當它到達了寶可夢中心內的月亮山入口。在這里,一個男人會以 500 元的價格賣給你一條魔法鯉魚。魔法鯉魚在短期內一點幫助都沒有,所以你可能會認為 AI 不會對此感興趣。然而,購買它是獲得 5 級的超級簡單方法。所以 AI 每次都買。在所有的游戲中,它總共購買了超過 10000 個魔法碳水化合物。
作者將 AI 行為與人類類比
作者還分析了 AI 的行動路線,它似乎更喜歡在地圖的幾乎所有邊緣逆時針行走。這意味著,當站在右邊的邊緣時,它更喜歡往上走,藍色顯示的就是這種情況。當上方有邊緣時,它喜歡往左走,顯示為粉紅色。當左邊有邊緣時,它喜歡向下走,用橙色表示。而當下面有一條邊時,它更喜歡向右走,顯示為綠色。
作者在視頻中表明,機器學習的基本挑戰是在不明確告訴程序如何做的情況下讓它做一些事情。這意味著,如果你的模型沒有按照你預期的方式運行,你必須弄清楚如何通過學習算法或在線訓練數據間接地改進它。強化學習增加了一層間接性。在此基礎上,輸入模型的訓練數據不再是靜止的、受你控制的,而是模型在早期時間點行為的產物。這種反饋循環會導致無法預測的突發行為。
在沒有機構規模的資源時,作者建議你可以這么做:
- 將問題簡化,以避免工具、資源的限制。
- 接下來,在合理的時間和成本內迭代實驗的設置非常重要。
- 然后需要仔細考慮 AI 如何與環境交互以及獎勵函數如何設計。在視頻中,作者對他所用到的獎勵函數已經有所介紹,但是受制于篇幅,并沒有介紹全部。它使用到了至關重要的七個函數,實際上還有更多的并沒有測試或是最終使用。
- 通過可視化的方法了解 AI 的行為。
作者說道,在未來還可能應用遷移學習的方法。即在一個大型的廣泛數據集上預先訓練一個模型,然后可以非常有效地利用它來完成新任務。在過去,這已經給計算機視覺和自然語言處理領域帶來了革命性的變化。在將其應用于 RL 方面,已經有一些有趣的早期工作,但尚未真正落地。這是由于這些類型的任務缺乏大型的多樣化數據集。
在視頻最后,作者還介紹了項目的更多操作細節。
更多詳細內容,請觀看原視頻。