有一種特別的遊戲吸引了很多人的注意。這款名為“打磚塊”的遊戲是20世紀70年代最早出現的電子遊戲之一:由玩家控製“球板”,將“球”彈到由彩色“磚塊”組成的牆上。每當球碰到磚塊的時候,磚塊就會被摧毀,玩家的目的是摧毀整麵磚牆。圖18顯示了程序在學習玩打磚塊的早期階段(在它玩了大約100次遊戲之後),在這個階段,它經常漏球。
圖18 程序學習玩打磚塊遊戲的早期階段
深度思維的雅達利遊戲程序在學習打磚塊的初期漏接了球,球在這裏用一個豎直的小矩形表示,水平的平板狀矩形表示玩家的接球板。
但是經過幾百輪的訓練以後,程序就成了這個遊戲的專家:它再也沒有漏接過一個球。然後發生了一件不同尋常的事情:程序了解到,最有效率得高分的方式是在磚牆的一側“鑽”一個洞,讓球打進去,這樣球就會在磚牆和頂部屏障之間快速反彈,迅速消滅磚塊,而玩家可以不用額外操作什麽(見圖19)。深度思維公司的工程師並沒有預料到這種行為:它是由程序自主學習的。這個遊戲的視頻很容易在網上找到:我在自己的講座中用過十幾次。每次我給觀眾播放這段視頻時,都能聽見驚訝的抽氣聲,因為觀眾明白程序在遊戲中學到了什麽。
圖19 程序經過訓練後玩打磚塊遊戲
最終,程序學會了怎麽迅速取得高分,即讓球在磚牆一側“鑽”一個洞,這樣球就會在磚牆上快速反彈。沒有人教程序這麽做,這種行為讓程序開發者都大吃一驚。
我得反複強調一點:深度思維的程序員並沒有編寫一個程序來玩雅達利遊戲:這並不難。他們所做的是寫一個程序,讓它學習如何比人類更會玩全部49個雅達利遊戲中的29個。程序接收到的唯一輸入就是屏上顯示的東西,以及分數。