為何遊戲是完美的試驗場
遊戲對強化學習研究者有著致命吸引力,而且並非偶然。強化學習用於遊戲提供俐落的獎勵(分數,或勝負)、無限又便宜的資料(再玩一次就好)、完美的可重現性,以及清楚的人類標竿。一場遊戲就是一個自成一體的馬可夫決策過程(MDP),你可以一夜跑上百萬次。
這讓遊戲成為新點子的壓力測試場:在有人敢把它們用到機器人或電網之前,先在遊戲裡淬鍊。你在別處遇到的許多技術——經驗回放、目標網路、搜尋加學習——都是先在遊戲上鍛造出來的。
可交互的网格世界,Q-learning 智能体通过试错学习动作价值以抵达目标。
從原始像素征服 Atari
宣告深度強化學習到來的突破,是一個網路直接從畫面玩許多 街機學習環境遊戲。一個 深度 Q 網路(Deep Q-Network, DQN)看著數張堆疊的像素影格,學會哪個搖桿動作能最大化未來分數——沒有任何針對特定遊戲的特徵,同一套架構橫跨數十款遊戲。Atari 基準因此成了「達到人類水準」的共用尺規。
卷积网络流水线:图像→卷积→池化→特征→输出。
自我對弈:沒有老師的學習
圍棋、西洋棋這類棋盤遊戲,擁有天文數字般龐大的狀態空間,又沒有明顯的特徵提示。攻破它們的躍進是自我對弈(self-play):代理人對抗自己的複本,因此對手永遠剛好跟自己同等級。它一進步,對手也同步進步——形成一套永遠不會太簡單也不會太難的自動課程(curriculum)。
AlphaZero 把自我對弈與蒙地卡羅樹搜尋(Monte Carlo Tree Search, MCTS)結合起來:一個神經網路提出有希望的著手、並估計誰佔上風,搜尋再用這些猜測往前看。搜尋改良後的結果回過頭成為網路的訓練目標,網路又引導出更好的搜尋——一個良性循環。它只從規則出發、別無其他,就在圍棋、西洋棋與將棋上超越了最強的先前程式。
一棵不断生长的搜索树,将模拟集中在最有希望的着法上。
while training:
game = new_game()
while not game.over():
move = mcts_search(net, game) # look ahead, guided by net
game.play(move)
z = game.outcome() # +1 win / 0 draw / -1 loss
replay.add(states, search_policies, z)
net.train(replay) # learn move-probs and value遊戲能告訴我們什麼、又不能告訴我們什麼
遊戲證明了強化學習能在巨大的決策空間中達到超越人類的水準。但遊戲給你一個完美的模擬器、免費的重置,以及規則直接奉上的獎勵。大多數真實應用一樣奢侈品都沒有——而這正是本軌道接下來要談的鴻溝。
自我對弈與「搜尋加學習」的迴響遠不止於棋盤遊戲:它們驅動著即時戰略遊戲中的代理人,而「靠跟自己對戰來產生資料」這個想法,如今也形塑著大型模型在推理上的訓練方式。遊戲依然是強化學習聲量最大的概念驗證。