自我對弈:與你一同成長的對手
當不存在任何專家對手時,你要如何訓練一位冠軍?在競爭式賽局中,答案是讓智能體與自己對弈。自我對弈訓練讓當前策略對上自己的副本,產生一個永遠恰好和學習者一樣強的對手。這是一種自動課程:當你進步時,你的陪練同步進步,所以挑戰永不瑣碎、也永不絕望。
這正是那些著名遊戲系統背後的引擎。AlphaZero 僅憑規則就精通了西洋棋、將棋與圍棋,做法是把自我對弈與搜尋結合——從隨機落子起步,一路自我拔升到超越人類的水準。同樣的想法,再加上在它之前的 AlphaGo,證明了自我對弈能發現人類專家從未想過的策略。
從當前局面展開的博弈樹,節點由蒙地卡羅樹搜尋選擇與擴展。
循環陷阱,與虛擬對弈
天真的自我對弈有個著名的失敗模式:它會遺忘。如果你永遠只對著最新的自己訓練,你可能會過度擬合於當前的對手,反而輸給你很久以前就打敗過的策略——也就是第二篇提到的剪刀石頭布循環:每個新策略都能反制前一個,卻對某個更舊的策略毫無招架之力。你就這樣一圈圈繞,始終無法收斂到納許均衡。
經典的解方來自賽局理論:虛擬自我對弈(fictitious self-play)。你不是對對手的當前策略做最佳回應,而是對它用過的所有策略之歷史平均做最佳回應。藉由保留整段過去的記憶,別人就無法靠重新挖出某個舊招來剝削你——而且在相當寬鬆的條件下,這種基於平均的動態可被證明會漂向均衡,而非永遠繞著它打轉。
虛擬博弈:每一步都對歷史平均策略做出最佳反應,而平均策略再朝該反應緩慢移動。
從單一對手到一整個族群
把這個想法擴大,就得到族群式訓練(population-based training, PBT):不是一個學習者,而是平行地演化出一整個族群的智能體。成員之間彼此對弈,較弱者定期複製較強者的權重(利用 exploit),同時它們的超參數會被擾動(探索 explore)。族群維持了多樣性,而多樣性正是「只對單一對手訓練」那種脆弱性的解藥。
標誌性的例子是《星海爭霸 II》中的 AlphaStar,它訓練了一個智能體聯賽——主力智能體,外加一些「剝削者(exploiter)」,其任務就是無情地找出並懲罰其他者的弱點。要打贏整個聯賽,就必須對各式各樣的策略都穩健,而不只是對某一種,這逼著策略走向真正通用的技能,而非狹隘的單點剋制。
- 平行運行多個智能體,每個都有自己的超參數。
- 讓它們彼此競爭,並依表現排名。
- 利用:表現差的複製表現強者的權重。
- 探索:擾動複製來的超參數,再繼續訓練。
穩健勝過贏下單場比賽
把這些方法串起來的主線是穩健性。打敗某個特定對手既容易又脆弱;真正的目標是一個能對抗整個可能對手空間都表現良好的策略——而對零和賽局而言,這恰恰就是逼近納許均衡的意義。自我對弈、虛擬對弈與族群,是讓你訓練所用的對手能覆蓋整個空間、且威力逐級遞增的手段。
欠擬合、良好擬合與過擬合曲線,對比脆弱的專門化與穩健的泛化。
這些工具同樣延伸到混合合作—競爭的世界——想想聯賽中的各支隊伍——在那裡智能體必須同時與盟友協調、並在策略上勝過對手。這種合作與競爭的交融,以及它所催生的開放式行為,正是我們下一篇要前往之處。