自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

訓練AI助理實現(xiàn)SumTo100游戲自學習與結果預測

譯文 精選
人工智能
在一款完美的信息類游戲中,如果你所需要的一切都能夠讓每一個玩家在游戲規(guī)則中看到,這不是一件很神奇的事情嗎?

譯者 | 朱先忠

審校 | 重樓

簡介

在一完美的信息游戲中,如果你所需要的一切都能夠讓每玩家在游戲規(guī)則中看到,這不是一件很神奇的事情嗎?

但遺憾的是,對于像我這樣的普通玩家來說,閱讀有關一款新游戲的玩法規(guī)則只是學習玩復雜游戲旅程中的一小部分,大部分時間都花在玩游戲當中,當然最好是與實力相當?shù)?/span>玩家(或者有足夠耐心幫助我們暴露弱點的更好些的玩家)比賽。經(jīng)常輸掉游戲和希望獲勝有時會帶來一定的心理懲罰和獎勵,不過這將引導我們逐漸把游戲玩得更好。

也許,在不久的將來,AI語言模型能夠讀取類似于國際象棋這樣的復雜游戲的規(guī)則,并從一開始就盡可能達到最高水平。與此同時,我提出了一更溫和的挑戰(zhàn)方式——通過自我游戲學習。

本文提供的這個實戰(zhàn)項目中,我們將訓練一個AI助理它能夠通過觀察以前版本的游戲結果來學習玩完美信息的雙人游戲。其中,AI助理負責近似化此游戲狀態(tài)的任何數(shù)值(游戲預期結果)。作為一個額外的挑戰(zhàn),我們的AI助理將不被允許維護狀態(tài)空間的查找表,因為這種方法對于復雜的游戲來說是不可管理的。

求解SumTo100游戲

游戲規(guī)則簡介

我們要討論的游戲是SumTo100。游戲的目標是通過1到10之間的數(shù)字進行加法運算來達到100的總和。以下是此游戲遵循的規(guī)則:

  1. 初始化總和0。
  2. 選擇第一個玩家兩名選手輪流上場。
  3. 當總和小于100時:
  • 玩家選擇一個介于1和10之間的數(shù)字(包括1和10)。所選數(shù)字將添加到總和中,但不超過100。
  • 如果總和小于100,則另一個玩家進行游戲(即,我們回到第3開始處)。
  1. 加上最后一個數(shù)字(達到100)的玩家獲勝。

兩只蝸牛自顧自的樣子作者本人圖片,基于OpenAI推出的第二代圖像生成式人工智能模型DALL-E2制作

我們選擇從這樣一簡單的游戲開始,這樣的做法存在很多優(yōu)點:

  • 狀態(tài)空間只有101個可能的值。
  • 這些狀態(tài)可以繪制在1D網(wǎng)格上。這種特性將使我們能夠將AI助理學習的狀態(tài)值函數(shù)很容易表示為1D條形圖。
  • 最佳策略是已知的:-求和為11n+1,其中n∈{0,1,2,…,9}于是,我們可以很容易地對游戲中最優(yōu)策略的狀態(tài)值進行可視化展示

圖1:SumTo100游戲的最佳狀態(tài)值(作者本人的圖片)圖1:SumTo100游戲的最佳狀態(tài)值(作者本人的圖片)

此圖中,游戲狀態(tài)AI助理完成其回合后的總和。值為1.0意味著,AI助理肯定會贏(或已經(jīng)贏)而值為-1.0意味著AI助理一定會輸(假設對手發(fā)揮最佳);中間值表示估計回報。例如,狀態(tài)值為0.2表示略微正的狀態(tài),而狀態(tài)值為-0.8表示可能的損失。

如果您想代碼進行深入研究,那么執(zhí)行整個訓練過程的腳本就是learn_sumTo100.sh,對應的開源存儲庫地址是https://github.com/sebastiengilbert73/tutorial_learnbyplay。如果感覺不必要,那么請耐心等待,因為接下來我們將對AI助理如何通過自我游戲學習進行詳細的描述。

生成隨機玩家玩的游戲

我們希望我們的AI助理能夠從以前版本的游戲中學習。是,游戲第一次迭代中,由于AI助理還沒有學到任何東西;所以,我們將不得不模擬隨機玩家玩的游戲。在每個回合,玩家都會從游戲管理游戲規(guī)則的類)獲得當前游戲狀態(tài)下的合法動作列表。隨機玩家將從該列表中隨機選擇一移動。

圖2展示了兩個隨機玩家玩游戲的示例:

圖2:隨機玩家玩的游戲示例(作者本人的圖片)圖2:隨機玩家玩的游戲示例(作者本人的圖片)

在這種情況下,第二個玩家通過達到100的總和贏得了游戲。

現(xiàn)在,我們實現(xiàn)一個可以訪問神經(jīng)網(wǎng)絡的AI助理,該神經(jīng)網(wǎng)絡將游戲狀態(tài)(在助理玩過之后)作為輸入,并輸出該游戲的預期回報。對于任何給定的狀態(tài)(在助理進行游戲之前),助理都會獲得有效動作的列表及其相應的候選狀態(tài)(我們只考慮具有確定性轉換的游戲)。

圖3顯示了AI助理、對手(其移動選擇機制未知)和游戲狀態(tài)管理庫之間的互動:

圖3:AI助理、對手和游戲管理庫之間的交互(作者本人的圖片)圖3:AI助理、對手和游戲管理庫之間的交互(作者本人的圖片)

在這種設置中,AI助理依靠其回歸神經(jīng)網(wǎng)絡來預測游戲狀態(tài)的預期回報。神經(jīng)網(wǎng)絡越能預測哪一個候選移動產(chǎn)生最高回報,助理就越能發(fā)揮作用。

我們的隨機玩法列表將為我們提供第一次訓練的數(shù)據(jù)集。以圖2中的示例游戲為例,我們想懲罰玩家1的動作,因為它的動作導致了失敗。最后一個動作產(chǎn)生的狀態(tài)值為-1.0,因為它允許對手獲勝。其他狀態(tài)通過γ?因子得到負值折扣其中,d是相對于助理到達的最后狀態(tài)的距離;γ代表折扣因子,這個數(shù)范轉是[0,1],它表達了游戲進化中的不確定性:我們不想最后一個決策那樣嚴厲地懲罰早期決策。圖4顯示了與玩家1所做決策相關的狀態(tài)值:

圖4:從玩家1的角度來看的狀態(tài)值列表(作者本人的圖片)圖4:從玩家1的角度來看的狀態(tài)值列表(作者本人的圖片)

隨機游戲生成具有目標預期回報的狀態(tài)。例如,達到97的和時將對應值為-1.0的目標預期回報,達到73的和時則對應于值為-γ3的目標預期收益。一半的狀態(tài)從玩家1的角度出發(fā),另一半從玩家2的角度出發(fā)(盡管在SumTo100游戲中這并不重要)。當一場比賽以AI助理獲勝的結果結束時,相應的狀態(tài)會得到類似的折扣正值。

訓練AI代理以便預測比賽的結果

現(xiàn)在,我們準備好了開始訓練所需的一切:一個神經(jīng)網(wǎng)絡(我們將使用兩層感知器)和一個(狀態(tài),預期回報)數(shù)據(jù)對的數(shù)據(jù)集。接下來,讓我們看看預測預期回報的損失是如何演變的:

圖5:損失值隨訓練輪次的變化情況(作者本人的圖片)圖5:損失值隨訓練輪次的變化情況(作者本人的圖片)

我們不應該感到驚訝的是,神經(jīng)網(wǎng)絡對隨機玩家玩游戲的結果沒有表現(xiàn)出太大的預測能力。

那么,神經(jīng)網(wǎng)絡到底學到了什么嗎?

幸運的是,由于狀態(tài)可以表示為0到100之間的1D數(shù)字網(wǎng)格;因此,我們可以繪制第一輪訓練后神經(jīng)網(wǎng)絡的預測回報,并將其與圖1中的最佳狀態(tài)值進行比較:

圖6:在隨機玩家玩的游戲數(shù)據(jù)集上訓練后的預測回報(作者本人的圖片)圖6:在隨機玩家玩的游戲數(shù)據(jù)集上訓練后的預測回報(作者本人的圖片)

上述事實證明,通過隨機游戲的混亂狀態(tài)操作,神經(jīng)網(wǎng)絡學到了兩件事:

  • 如果你能達到100,就去做吧。考慮到這是比賽的目標,知道這一點很好。
  • 如果你達到99,你肯定會輸。事實上,在這種情況下,對手只有一次有效動作,而這一動作會給AI助理帶來損失。至此,神經(jīng)網(wǎng)絡基本上學會了完成游戲。
    為了學會更好地發(fā)揮作用,我們必須通過使用新訓練的神經(jīng)網(wǎng)絡模擬AI助理副本之間的游戲來重建數(shù)據(jù)集。為了避免生成相同的游戲,玩家會隨機玩一點。一種行之有效的方法是使用ε貪婪算法選擇動作,每個玩家的第一個動作使用ε=0.5,然后在游戲的其余部分使用ε=0.1。

與越來越好的玩家一起重復訓練循環(huán)

既然兩名玩家現(xiàn)在都知道他們必須達到100,那么達到90到99之間的總和應該受到懲罰,因為對手會抓住機會贏得比賽。這種現(xiàn)象在第二輪訓練后的預測狀態(tài)值中是可見的:

圖7:兩輪訓練后的預測狀態(tài)值:從90到99的總和顯示的值接近-1(作者本人的圖片)圖7:兩輪訓練后的預測狀態(tài)值:從90到99的總和顯示的值接近-1(作者本人的圖片)

我們看到正在出現(xiàn)一種規(guī)律:第一輪訓練通知神經(jīng)網(wǎng)絡關于最后一個動作;第二輪訓練通知倒數(shù)第二個動作,等等。我們需要重復游戲生成和預測訓練的循環(huán),至少與游戲中的動作一樣多的次數(shù)

以下圖片顯示了25輪訓練后預測狀態(tài)值的演變情形

圖8:訓練過程中學習到的狀態(tài)值的瞬時截圖(作者本人的圖片)圖8:訓練過程中學習到的狀態(tài)值的瞬時截圖(作者本人的圖片)

當我們從游戲的結束走向開始時,預測回報的包絡線指標值呈指數(shù)衰減。這是個問題嗎?

造成這種現(xiàn)象的因素有兩個:

  • 當我們遠離比賽結束時,γ直接降低了目標的預期回報。
  • ε貪婪算法在玩家動作中注入了隨機性,使結果更難預測。有動機預測接近零的值,以防止出現(xiàn)極高損失的情況。然而,隨機性是可取的,因為我們不希望神經(jīng)網(wǎng)絡學習單一的游戲。我們希望神經(jīng)網(wǎng)絡能夠見證AI助理和對手的失誤和意想不到的好動作。

實際情況中,這應該不是一個問題,因為在任何情況下,我們都會比較給定狀態(tài)下的有效動作的值,這些動作具有可比的規(guī)模,至少在SumTo100游戲中是這樣。當我們選擇使用貪婪法移動時,數(shù)值的規(guī)模并不重要。

結論

本文中我們成功實現(xiàn)了對自己的挑戰(zhàn)——開發(fā)了一個AI助理,它可以學習掌握一個涉及兩個玩家的完美信息游戲,并能夠實現(xiàn)在給定一個動作的情況下,從一個狀態(tài)到下一個狀態(tài)的確定性轉換。實現(xiàn)過程中,不允許使用任何手動編碼的策略或戰(zhàn)術——一切都必須通過自我游戲來學習。

我們可以通過運行AI助理的多輪參賽副本來解決SumTo100的簡單游戲,并訓練一個回歸神經(jīng)網(wǎng)絡來預測生成游戲的預期回報。

最后,通過此項實驗所得的收獲為我們研究更復雜的游戲好了準備,但這將是我的下一篇文章的主要內容!

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。

原文標題:Training an Agent to Master a Simple Game Through Self-Play,作者:Sébastien Gilbert


責任編輯:華軒 來源: 51CTO
相關推薦

2020-02-28 17:43:04

威脅檢測FortiAIFortinet

2020-10-06 16:28:49

AI

2021-04-09 18:10:12

潮數(shù)

2021-04-14 09:47:20

潮數(shù)

2019-08-29 11:10:34

深度學習神經(jīng)架構人工智能

2010-08-16 12:35:19

認知網(wǎng)絡路由

2017-11-23 14:49:51

深度學習NBA數(shù)據(jù)

2023-09-11 10:55:59

人工智能機器學習

2020-05-03 13:52:27

深度學習開源人工智能

2024-03-25 11:37:40

機器學習人工智能進化算法

2023-11-29 08:00:00

人工智能機器學習

2020-07-14 08:34:07

AI機器學習預測股價

2021-04-09 14:49:02

人工智能機器學習

2019-03-08 08:00:00

AI語音助理Mycroft

2018-11-07 09:00:00

機器學習模型Amazon Sage

2018-03-27 22:35:35

百度

2023-09-03 14:17:56

深度學習人工智能

2022-12-28 10:50:34

AI訓練深度學習

2017-01-22 15:43:47

數(shù)據(jù)架構演進

2023-12-05 13:24:00

AI數(shù)據(jù)
點贊
收藏

51CTO技術棧公眾號