現(xiàn)在機器人玩游戲的水平甚至已經(jīng)超過了人類,然而對于不同的游戲,一個算法是否全部搞定呢?軟件開發(fā)者Shayaan Jagtap 就以「馬里奧」這款游戲的算法無法適用于另一款游戲「口袋妖怪」為例,來說明這一問題并分析其中的原因。雷鋒網(wǎng) AI 科技評論全文編譯如下。
現(xiàn)在,你很可能已經(jīng)聽說過機器人玩游戲的水平超過人類了吧。這些機器人的一種設計方法是給它們明確地編程,設定一組輸入和一組輸出之間的對應關系;或者也可以讓它們自主學習、進化,它們就可以對同樣的輸入做出不同的反應,以期找到最優(yōu)的對策。
一些聞名遐邇的機器人有:
AlphaZero:它是一個象棋機器人,經(jīng)過 24 個小時的訓練成為了世界最佳棋手。
AlphaGo:它是一個圍棋機器人,因打敗世界級棋手李世石和柯潔而聞名世界。
MarI/O:它是一個超級馬里奧機器人,可以自學快速通過任意馬里奧關卡。
這些游戲是復雜的,想要訓練會玩這些游戲的機器就需要聰明地組合復雜的算法、反復的模擬,以及大量的時間。這里我重點談談 MarI/O,談一下為什么我們不能采用相似的方法去玩轉「口袋妖怪」這款游戲。(如果你不熟悉這款游戲的玩法,點擊這里https://www.youtube.com/watch?v=qv6UVOQ0F44去觀看視頻。)
「馬里奧」和「口袋妖怪」之間存在的三個關鍵差異點,可用來解釋其原因:
第一,目標的數(shù)量
第二,分支乘數(shù)
第三,局部優(yōu)化 VS 全局優(yōu)化
下面,讓我們就這三個因素來比較這兩款游戲吧。
目標的數(shù)量機器學習的方式是通過優(yōu)化某種目標函數(shù)。無論是將(增強學習和遺傳算法中的)反饋函數(shù)或者適應度函數(shù)最大化,還是將(監(jiān)督學習中的)價值函數(shù)最小化,它的目標都是相似的:盡可能獲得最佳成績。
「馬里奧」有一個目標:到達最后的關卡。簡單來說,就是你在死之前到達的地方越遠,你就玩得越棒。這是你唯一的目標函數(shù),并且你的模型能力可以直接用這一數(shù)值來評估。
然而,「口袋妖怪」卻有很多個目標。讓我們嘗試著去確定我們的目標。它是要打敗「四大金剛」?抓住所有的口袋妖怪?訓練一只最強大的隊伍?我們的目標是剛才提到的所有這些,還是一切別的完全不同的東西?僅僅問到這個問題就很奇怪,因為答案可能是它們的個人主觀性組合。
我們不僅僅需要去明確最終的目標,還要明確游戲的進程是什么樣的,因此每一個動作帶來的到底是獎勵還是損失,都要對應到那一刻的許許多多中可能的選擇中的某一種才知道。
這就引導我們進入到下一個論題。
分支乘數(shù)簡單來說,這個分支因子就是你在任意一步,能夠做多少個選擇。在象棋中,平均的分支乘數(shù)是 35;在圍棋中,分支乘數(shù)是 250。對于之后每增加的一步,你有(分支乘數(shù)^步數(shù))個選擇來進行評估。
在「馬里奧」中,你或者向左走、向右走、跳躍,或者啥也不做。機器需要評估的選擇數(shù)量少,而且這個分支乘數(shù)越小,機器人通過計算能夠預測到的未來就越遠。
「口袋妖怪」是一個具有開放性世界的游戲,這意味著你在任一時間,都有大量的選擇。簡單地向上、下、左、右移動,對于計算分支乘數(shù)并不是一個有用的衡量標準。相反地,我們看重下一個有意義的動作。下一個動作是打仗,跟一個非玩家角色(NPC)交談,又或者前往左、右、上下的下一個局部區(qū)域?當你在游戲中前進時,可能面臨的選擇數(shù)量會從多變到非常多。
一個能計算出最佳選擇的機器,要求它考慮到它的短期和長期目標,這又帶我們進入到最后一個論題。
局部優(yōu)化 VS 全局優(yōu)化局部優(yōu)化和全局優(yōu)化可被看作兼有空間和時間上的意義。短期的目標和當前的地理區(qū)域被視為局部的,而長期目標和相對較大的區(qū)域例如城市甚至整個地圖,被視為全局的。
將每一次移動分解成它的構成部分,會是將口袋妖怪問題分解成一個個小問題的方法。優(yōu)化局部以實現(xiàn)從一個區(qū)域的點 A 到點 B 是簡單的,但是決定哪個目的地是最佳的點 B,是一個更難得多的問題。在這里,貪婪算法就失效了,因為局部優(yōu)化的決策步驟并不一定帶來全局最優(yōu)。
「馬里奧」的地圖小,并且是線性的,而「口袋妖怪」的地圖卻是大的、錯綜復雜的以及非線性的。當你追求更高階的目標時,你的優(yōu)先級在變化,并且將全局目標轉變?yōu)閮?yōu)先的局部優(yōu)化問題也不是一個簡單的任務。這不是僅僅依靠我們當前配備的模型就能夠應對的事情。
最后一件事從機器人角度,「口袋妖怪」不僅僅是一個游戲。機器人都是單一任務的專家,而當遇到一個想要對戰(zhàn)的 NPC 時,一個幫助你在地圖中到處移動的機器人將無能為力。對它們而言,這是兩個完全不一樣的任務。
在對戰(zhàn)時,每個回合都有很多個選擇。選擇使用哪個動作,換入哪個口袋妖怪以及什么時候使用不同的道具,都是它要獨立處理的復雜的優(yōu)化問題。經(jīng)過查找,我找到了這篇文章 Gotta Code'em all! Machine Learning in Pokemon(文章地址:https://realworldcoding.io/machine-learning-in-pokemon-db32dcd96f33),文中作者闡述了其建立一個對戰(zhàn)模擬器的過程。它是經(jīng)過深思熟慮的,并且有著難以置信的復雜度,甚至不考慮道具的使用——而這是決定對戰(zhàn)結果的一個關鍵因素。
目前為止,對于打造了在游戲中比我們的表現(xiàn)更好的機器人這一現(xiàn)實,我們應該感到欣慰?,F(xiàn)在,這些游戲雖然涉及到了復雜的數(shù)學,但是其目標是簡單的。隨著 AI 的發(fā)展進步,我們將創(chuàng)造出這樣的機器:它們能完全通過自己對復雜優(yōu)化問題的學習,解決影響力日益增強的現(xiàn)實世界問題。請放心,還有一些事情是機器尚未打敗人類的,其中就包括我們的童年游戲——至少現(xiàn)在是這樣。
質檢
推薦