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