Deepmind的Alpha Zero是如何把各種棋類規則融入神經網路的?

圍棋 象棋 將棋


AlphaZero神經網路的輸入輸出編碼、MCTS和終止運用了棋類的規則。

AlphaZero神經網路既然是下棋的,那麼它的輸出特徵就應該是落子輸入特徵則是棋盤的狀態

我們先考慮輸出特徵,也就是落子。然後,我們先考慮圍棋,因為圍棋的規則最簡單。

圍棋的棋盤的大小是19x19(這個棋盤大小其實也是一條規則,因為不能在棋盤之外落子)。理論上說,我們可以把下一子落在19x19=361個點中的任意一點。

是嗎?仔細想想。雖然圍棋不允許在棋盤之外落子,但是圍棋有不落子的情形,也就是pass。因此,實際上,一共有19x19+1=362種情形。那麼,對於AlphaZero來說,落子就是在這362種情形上的概率分布

當然,不是所有地方都可以落子的。對於不能落子的地方(規則不允許),AlphaZero將其概率賦值為0就可以了。

國際象棋和將棋的原理是一樣的,只不過因為這兩種棋具有不同類型的棋子,因此稍微複雜一點。

國際象棋的「落子」可以分成兩步:

  1. 選擇要移動的棋子
  2. 移動選定的棋子

國際象棋的棋盤大小是8x8,所以第一步選取棋子就有8x8種情形,這和圍棋類似。

第二步移動比較複雜。考慮國際象棋中的後,後可以向8個方向移動,最多可以移動7格,那就是7x8=56種。類似地,騎士的移動有8種情形。再加上兵升變為騎士、主教、城堡的9種情形(其他升變歸入後的移動),總共有8x8x(56+8+9)=4672情形。

AlphaZero將國際象棋的「落子」編碼為在4672個平面上的概率分布。和圍棋一樣,規則禁止的情形,相應的概率賦值為0。

同理,將棋是9x9x139=11529個平面上的概率分布。詳見原論文中的表格(即下表):

接著我們考慮輸入特徵。類似輸出特徵,輸入特徵我們也是用平面表示。

對於某一時刻t的棋盤,我們可以用一個大小為NxN(等於棋盤大小,比如國際象棋就是8x8)的平面M表示。M平面由兩個二元特徵平面的集合組成,二元分別代表某個位置存在我方的棋子和不存在我方的棋子,同一集合內,一個平面代表一種棋子的類型,兩個集合分別代表我方的棋子和敵方的棋子。

那麼,到目前為止的棋盤的狀態,就可以用NxNxMT(T表示時刻序列,或者說,棋局的的步)表示。

當然,實際上,我們還需要一些輸入特徵來代表一些全局的狀態,比如,雙方棋子的顏色,到目前為止雙方下了多少步了,在同一位置反覆落子(國際象棋中反覆3次判平局,將棋是4次),等等。因此,我們將上面的式子修正一下,NxNx(MT+L),這正是原論文中的式子。

具體到每種棋類的輸入特徵,可以看原論文中的表格(即下表):

除了輸入輸出特徵編碼以外,MCTS過程中也運用了棋類的規則,包括「落子」後對棋盤產生的影響,判定棋局是否分出勝負,「落子」會不會導致棋局結束,等等。

最後,棋局不可能永遠進行下去。國際象棋和將棋有步數限制,超過後自動判平局,圍棋有Tromp-Taylor規則。AlphaZero也編碼了這些規則,一旦滿足條件,會終止網路。


推薦閱讀:

NIPS 2016有什麼值得關注的呢?
為什麼CNTK知名度和普及率不如Tensorflow、Theano、caffe、Torch?
faster rcnn中rpn的anchor,sliding windows,proposals?
目標檢測SSD相對於YOLO與faster-RCNN做了哪些改進?效果如何呢?
mxnet的並行計算為什麼這麼牛,是什麼原理?

TAG:深度學習DeepLearning | AlphaGo | GoogleDeepMind |