大膽猜測AlphaGo為何會下錯棋

大膽猜測AlphaGo為何會下錯棋
Photo Credit: Lee Jin-man / AP Photo / 達志影像

我們想讓你知道的是

AlphaGo沒有逐點逐點追上對手的概念,因此這些變化都被視為無法提升勝率。在「All or nothing」的邏輯下, AlphaGo只會考慮那些「一旦成功就翻盤」的變化。

文︰Isaac Cheung(圍棋業餘2段

先此聲明︰本人非程式/電腦專業,以下只為個人猜測。

在形勢落後時有幾種棋可以選擇︰

  1. 正著/本手︰不急不緩的合理手,無法收窄雙方差距,但能夠在不進一步拉開差距的前提下等待對方主動出錯
  2. 無理手、攪局︰主動製造對方犯錯的機會,對方應對妥當的話差距會進一步擴大,但對方一旦犯錯就有機會翻盤
  3. 緩手︰容許對方進一步拉開差距的棋
  4. 壞著︰自行犯錯,進一步拉開差距

緩手及壞著因為不能提升勝率,所以都會在演算法中被排除。

即使對人類來說本手絕對是合理選擇,但AlphaGo仍然可能將其排除。假設AlphaGo下的正著稱為A,在一些情況下要對付A,對手的正確應法是眾數;假設對手下了一手錯誤應法B,AlphaGo再下一手C回應 ,這時對手仍然有很多選擇能夠挽救B的錯誤,將損失最小化。

所以在AlphaGo的搜索樹中,就會出現大量「對方損失了,但也並非損失了很多」的變化圖。AlphaGo沒有逐點逐點追上對手的概念(對它來說這需要搜索到終盤),因此這些變化都被視為無法提升勝率。在「All or nothing」的邏輯下, AlphaGo只會考慮那些「一旦成功就翻盤」的變化。

正著A所發展出的變化樹大概也有一些變化是對手連續犯錯而導致翻盤的,但這些變化的數量對比起基數十分之小,於是AlphaGo就可能判斷這種連續犯錯是比犯一次初學者級別錯誤的機率更小。

AlphaGo的策略算是「攪局無理手」,在目數差距為零的情況下, AlphaGo 會選90%機會獲利10目的棋,而不是0.1%機會獲利30目的棋。但在目數差距為25目時, AlphaGo就會寧願下注在0.1%翻盤的機會,因為那90%追回10目的機會對於它的演算法來說無法提高勝率。

但 AlphaGo 無法區別高端攪局和低端攪局。高端攪局如第三局李世石在白空強行弄出一個打不贏的劫,在AlphaGo看來可能是有太多妥善應對的變化,而且AlphaGo的MCTS(蒙地卡羅樹搜尋法)也有限,不會算到最後,對於李世石式攪局的選擇它可能會算到一半就用評價網絡(value network)來排除。所以AlphaGo就寧願選擇低端攪局,因為它能夠明確算出獲利的變化,這些利益也容易判斷。

AlphaGo喜歡能定型則先定型、能交換先交換的傾向大概也是來自同一個原因,因為它不能理解一些棋暫時不定型、不交換,在幾十手棋後可能有好處。MCTS不會把每個變化都算得這麼深,於是AlphaGo的評價網絡就無法正確判斷「保留交換」的價值(但人類能夠正確判斷,因為人類不需要確切地算出遙遠未來的全局具體變化來判斷局部一手棋的好壞)。

同樣道理,如果高端攪局成功的棋需要二、三十手以上, MCTS就很可能不會算到攪局成功的變化,而攪局成功前的變化全部都被評價網絡判斷為無助提升勝算,AlphaGo就會排除掉這種棋。

而以上都排除後,AlphaGo就有可能選擇那些「一旦對方犯初學者級別的錯誤,我就能翻盤」的臭棋,因為它判斷這種棋已經是最有機會提升勝率的手段。

本文獲授權轉載,原文見作者Facebook。

責任編輯︰鄭家榆
核稿編輯︰歐嘉俊