[英]The huge amount of states in q-learning calculation
我通過q-learning實現了3x3 OX游戲(在AI vs AI和AI vs Human上都可以完美運行),但是我無法再前進到4x4 OX游戲,因為它將耗盡我所有的PC內存並崩潰。
這是我當前的問題:大量訪問沖突?
以我的理解,一個3x3 OX游戲共有3(空格,白色,黑色)^ 9 = 19683個可能的狀態。 (相同圖案不同角度仍算)
對於4x4 OX游戲,總狀態為3 ^ 16 = 43,046,721
對於15x15的常規圍棋游戲,總狀態為3 ^ 225〜2.5 x 10 ^ 107
Q1。 我想知道我的計算是否正確。 (對於4x4 OX游戲,我需要3 ^ 16數組嗎?)
Q2。 由於我需要計算每個Q值(針對每個狀態,每個動作),因此我需要大量的數組,這是預期的嗎? 有什么辦法避免呢?
考慮對稱性。 實際可能的配置數量比3x3板上的9 ^ 3小得多。 例如,基本上只有3種不同的配置,且板上只有一個x
。
旋轉
有許多電路板配置都應導致AI做出相同的決定,因為它們在對稱性上相同。 例如:
x - - - - x - - - - - -
- - - - - - - - - - - -
- - - - - - - - x x - -
這些都是相同的配置。 如果單獨對待它們,則會浪費訓練時間。
鏡像
不僅存在旋轉對稱性,而且還可以在不更改實際情況的情況下對板進行鏡像。 以下基本上是相同的:
0 - x x - 0 - - - - - -
- - - - - - - - - - - -
- - - - - - 0 - x x - 0
排除“無法發生”配置
接下來考慮當一名玩家獲勝時游戲結束。 例如,您有3 ^ 3個配置,看起來都像這樣
x 0 ?
x 0 ? // cannot happen
x 0 ?
他們永遠不會出現在正常比賽中。 您不必為它們保留空間,因為它們根本不可能發生。
排除更多“無法發生”
此外,由於玩家輪流交替進行游戲,因此您以9^3
大大高估了配置空間的大小。 例如,您無法達到以下配置:
x x -
x - - // cannot happen
- - -
如何獲得所有需要的配置?
簡而言之,這就是我要解決的問題:
operator<
<
關系可以選擇一個代表對每一組的“相似的”配置(例如,一個是<
比組中的所有其他) 現在,您將獲得所有對稱模配置的列表。 在實際游戲中,您只需要將棋盤轉換為其代表,然后進行移動即可。 如果您記得如何旋轉/鏡像它,則可以在之后轉換回實際配置。
這是蠻力的。 我的數學有點生疏,否則我將嘗試直接獲取代表名單。 但是,對於每種尺寸的電路板,您只需要做一次。
如果您跳過重新發明輪子的方法,那么可以解決以下問題:
該模型是一個卷積神經網絡,它經過Q學習的變體訓練,其輸入為原始像素,其輸出為估計未來回報的價值函數。 我們將我們的方法應用於Arcade學習環境中的七個Atari 2600游戲,而無需調整體系結構或學習算法。
https://arxiv.org/pdf/1312.5602v1.pdf
我們可以用神經網絡表示Q函數,該神經網絡將狀態(四個游戲屏幕)和動作作為輸入並輸出相應的Q值。 或者,我們可以僅將游戲屏幕作為輸入,並輸出每個可能動作的Q值。 這種方法的優勢在於,如果我們要執行Q值更新或選擇具有最高Q值的動作,則只需通過網絡進行一次前向傳遞,即可立即獲得所有動作的所有Q值。
https://neuro.cs.ut.ee/demystifying-deep-reinforcement-learning/
我有一個枚舉方案,但它需要一個整數數組。 如果您可以將整數數組壓縮為單個Q值(然后壓縮),則可能會起作用。
首先是N,表示棋盤上的棋子數。
然后是ceil(N / 2)個項的數組,X個。 每個數字都是從上一個X片段(或板開始)開始的空白有效空間的數量。 重要說明:如果空格將導致游戲結束,則該空格無效。 這是連續5個結束規則可以幫助我們縮小域的地方。
然后是Floor(N / 2)個項目的數組,O個。 邏輯與X數組相同。
因此,對於該板和3條規則:
XX.
X.O
..O
我們有以下數組:
N:5
X:0(從棋盤開始),0(從先前的X開始),0(對X無效,因為X會結束游戲)
O:2(從木板開始,減去前面的所有X),2(從先前的O開始)
那就是數組[5,0,0,0,2,2]。 給定這個數組,我們可以重新創建上面的板。 小數字的發生比大數字的可能性更大。 在具有19x19棋盤的常規游戲中,棋子大部分會組合在一起,因此下一行將有很多零,一,二,並以“大”號分隔。
現在,您必須使用較小的數字比較大的數字出現更多的事實來壓縮該數組。 通用壓縮算法可能會有所幫助,但某些專門的壓縮算法可能會有所幫助。
我對q學習一無所知,但是這里所有這些都要求q值可以具有可變大小。 如果必須將q值的大小保持不變,則該大小必須考慮最差的板,並且該大小可能太大,以至於無法實現首先進行枚舉/壓縮的目的。
我們使用從左到右和從上到下的方法來枚舉片段,但是我們也可以使用一些螺旋方法來產生更好的小到大數字比率。 我們只需要為螺旋中心選擇最佳起點。 但這可能會使算法復雜化,並最終浪費更多的CPU時間。
另外,我們實際上並不需要數組中的第一個數字N。數組的長度提供了此信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.