深度強化學習課程文件

自我博弈:在對抗性遊戲中訓練競爭性智慧體的經典技術

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

自我博弈:在對抗性遊戲中訓練競爭性智慧體的經典技術

既然我們已經學習了多智慧體的基礎知識,我們就可以深入研究了。正如引言中提到的,我們將使用 SoccerTwos(一個 2 對 2 遊戲)在對抗性遊戲中訓練智慧體

SoccerTwos
此環境由Unity MLAgents 團隊建立。

什麼是自我博弈?

在對抗性遊戲中正確訓練智慧體可能相當複雜

一方面,我們需要找到如何獲得一個訓練有素的對手來對抗你的訓練智慧體。另一方面,如果你找到了一個訓練得非常好的對手,當對手太強時,你的智慧體將如何改進其策略?

想象一個剛開始學習踢足球的孩子。對抗一個非常好的足球運動員將是徒勞的,因為太難贏球,或者至少偶爾能拿到球。所以孩子會持續輸球,沒有時間學習一個好的策略。

最好的解決方案是擁有一個與智慧體水平相同的對手,並且隨著智慧體自身水平的提升而提升其水平。因為如果對手太強,我們將一無所獲;如果對手太弱,我們將過度學習對更強對手無用的行為。

這個解決方案被稱為自我博弈。在自我博弈中,智慧體使用自身的先前副本(其策略)作為對手。透過這種方式,智慧體將與水平相同的智慧體對戰(有挑戰性但不過分),有機會逐步改進其策略,然後隨著自身變得更好而更新其對手。這是一種引導對手並逐步增加對手複雜性的方法。

這與人類在競爭中學習的方式相同

  • 我們開始與水平相似的對手進行訓練
  • 然後我們從中學到東西,當我們掌握了一些技能後,我們可以與更強的對手進行比賽。

我們透過自我博弈也這樣做

  • 我們從我們智慧體的一個副本作為對手開始,這樣,這個對手的水平就相似了。
  • 我們從中學習,當我們掌握了一些技能後,我們用我們訓練策略的最新副本更新我們的對手

自我博弈背後的理論並不是新事物。它早在五十年代就被阿瑟·塞繆爾的跳棋玩家系統和 1995 年傑拉爾德·泰薩羅的 TD-Gammon 使用。如果你想了解更多關於自我博弈的歷史,請檢視安德魯·科恩的這篇非常好的部落格文章

MLAgents 中的自我博弈

自我博弈已整合到 MLAgents 庫中,由我們即將研究的多個超引數管理。但正如文件中所解釋的,主要關注點是最終策略的技能水平和泛化能力與學習穩定性之間的權衡

對抗一組緩慢變化或不變的、多樣性低的對手會導致更穩定的訓練。但如果變化過慢,則存在過擬合的風險。

所以我們需要控制

  • 我們多久更換一次對手,透過swap_stepsteam_change引數。
  • 儲存的對手數量,透過window引數。window值越大,意味著智慧體的對手池將包含更多樣化的行為,因為它將包含來自訓練早期階段的策略。
  • 與當前自身對戰與從池中抽取的對手對戰的機率,透過play_against_latest_model_ratio引數。play_against_latest_model_ratio值越大,表明智慧體將更頻繁地與當前對手對戰。
  • 在儲存新對手之前,訓練的步數,透過save_steps引數。save_steps值越大,將產生一組涵蓋更廣泛技能水平和可能不同遊戲風格的對手,因為策略會獲得更多訓練。

要了解這些超引數的更多詳細資訊,你絕對需要檢視文件的這一部分

評估智慧體的 ELO 分數

什麼是 ELO 分數?

在對抗性遊戲中,跟蹤累積獎勵並不總是一個衡量學習進度的有意義指標:因為這個指標只取決於對手的技能。

相反,我們使用ELO 評分系統(以阿爾帕德·埃洛命名),它計算零和遊戲中給定人群中兩個玩家之間的相對技能水平

在零和遊戲中:一個智慧體獲勝,另一個智慧體失敗。它是一種數學表示,在這種情況下,每個參與者的效用增益或損失正好與另一個參與者的效用增益或損失相平衡。我們稱之為零和遊戲,因為效用之和等於零。

這個 ELO(從一個特定的分數開始:通常是 1200)最初可能會下降,但應該在訓練過程中逐步增加。

Elo 系統是根據對其他玩家的損失和平局推斷出來的。這意味著玩家的評分取決於他們對手的評分以及對他們取得的結果。

Elo 定義了一個 Elo 分數,表示玩家在零和遊戲中的相對技能。我們說相對是因為它取決於對手的表現。

核心思想是將玩家的表現視為一個正態分佈的隨機變數。

兩個玩家之間的評分差異是比賽結果的預測指標。如果玩家獲勝,但獲勝的機率很高,那麼它只會從對手那裡贏得少量分數,因為這意味著它比對手強大得多。

每場比賽之後

  • 獲勝的玩家從失敗的玩家那裡獲得積分。
  • 積分的數量由兩名玩家評分的差異決定(因此是相對的)。
    • 如果高評分玩家獲勝 → 從低評分玩家那裡獲得少量積分。
    • 如果低評分玩家獲勝 → 從高評分玩家那裡獲得大量積分。
    • 如果是平局 → 低評分玩家從高評分玩家那裡獲得少量積分。

因此,如果 A 和 B 的評分為 Ra 和 Rb,那麼預期分數由以下公式給出

ELO Score

然後,在比賽結束時,我們需要更新玩家的實際 Elo 分數。我們使用與玩家表現過高或過低成比例的線性調整。

我們還定義了每場比賽的最大調整評級:K 值。

  • 大師級 K=16。
  • 較弱的玩家 K=32。

如果玩家 A 有 Ea 分數,但獲得 Sa 分數,那麼玩家的評分將使用以下公式更新

ELO Score

示例

如果我們舉一個例子:

玩家 A 的評分為 2600

玩家 B 的評分為 2300

  • 我們首先計算預期分數EA=11+10(23002600)/400=0.849E_{A} = \frac{1}{1+10^{(2300-2600)/400}} = 0.849 EB=11+10(26002300)/400=0.151E_{B} = \frac{1}{1+10^{(2600-2300)/400}} = 0.151

  • 如果組織者確定 K=16 且 A 獲勝,則新評分為ELOA=2600+16(10.849)=2602ELO_A = 2600 + 16*(1-0.849) = 2602 ELOB=2300+16(00.151)=2298ELO_B = 2300 + 16*(0-0.151) = 2298

  • 如果組織者確定 K=16 且 B 獲勝,則新評分為ELOA=2600+16(00.849)=2586ELO_A = 2600 + 16*(0-0.849) = 2586 ELOB=2300+16(10.151)=2314ELO_B = 2300 + 16 *(1-0.151) = 2314

優點

使用 ELO 分數有多個優點

  • 積分始終平衡(當出現意外結果時,會交換更多積分,但總和始終相同)。
  • 這是一個自我修正系統,因為如果一個玩家贏了一個弱玩家,他們只會贏得少量積分。
  • 適用於團隊遊戲:我們計算每個團隊的平均值並將其用於 Elo。

缺點

  • ELO 不考慮團隊中每個人的個體貢獻
  • 評分通縮:良好的評分需要長期保持技能才能維持相同的評分
  • 無法比較歷史評分.
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.