天天看點

alphago了解

**

alphago了解

**

1alphago總體架構

對于圍棋,核心需要解決兩個問題:

1)下一手最佳下在哪裡?–》政策網絡回答

2)下完一步棋後勝率是多少?-》價值網絡回答

AlphaGo首先通過人類高手棋譜,得到初步的政策網絡;在通過政策網絡,得到價值網絡;最後通過不斷的自我對弈,通過政策改善價值,通過價值調整政策,棋力不斷增強

AlphaGo zero則通過更精心的設計架構和自我對弈學習細節,去除了學習人類棋譜的過程,直接從0開始不斷循環進步,進而達到更強的棋力

2政策網絡

2.1原理

其解決的是下一步下在哪裡的問題,最簡單的想法考慮通過大量人類高手棋譜進行訓練,從學習的棋譜中總結更高層次的規律,之後在通過不斷的自我對弈強化學習,使得對于任何局面,政策網絡都能給出不錯的選點。

我們也是這樣做的,但機器眼中是什麼樣子呢,或者說政策網應該設計成什麼樣子呢?以v13為例,它現将棋盤編碼成48張1919張圖像,然後通過多層卷積層,輸出至softmax來預測棋盤361(1919)個點下棋的機率

2.2了解

卷積其實可以類比實體中的偏光鏡,其可以反映出物體某一特定規律的情況(特征)。對于普通圖像,卷積層可能分别代表圖像的空間位置,顔色,紋理等,圖像經過卷積層對應的卷積核矩陣便可以得到相關特征;對于圍棋來說,卷積層可能分别代表本方棋子,對方棋子,一口氣,兩口氣等,圖像經過卷積層對應的卷

積核矩陣可以算出其對應分數,進而得到各點機率

2.3弱點

學習的棋譜數量有限,是以會有未見過的局面;同時,有時會知其然而不知其是以然,隻學到了表面。因為高手棋譜往往不會考慮征子,而是做更長遠的謀劃,人類便可能利用這個漏洞,讓機器誤以為勝率很高,但突然征子使其勝率陡然直下。初級辦法是考慮手動加入規則,但更進階的辦法是通過自我對弈,如新版alphago zero就幾乎不會出現這樣失誤,因為見過局面太多了

3價值網絡

3.1快速走子估值

其實更為關鍵的一個問題是價值網需要回答的下完一步棋勝率多少?如果隻是通過人類棋譜學習總結出政策,那麼機器最高境界也隻能是無限接近與人類水準而無法超越,但現實不是這樣,像最新的alphago zero甚至不需要人類棋譜,從0開始循環進步,是以單純依靠政策網是不夠的。

但如何回答下完一步棋之後的勝率呢?一種很自然的想法是既然看不懂局勢,那麼憑借電腦超強算力不妨将棋局走到底,看最終的勝負情況,但圍棋數量級是10^170,目前電腦不可能窮盡所有情況進行預測,那能否考慮隻對某一局面走到底一次呢?即快速走子估值,具體而言就是通過一個走子極快但棋力極弱的政策,把搜尋樹種某個局面快速走到底一次,記下最後的勝負情況。

很顯然這個估值存在非常大的噪音(随機性),估值很不準确,但走多次會減慢速度,在有限時間更不利于棋力,除非局面逐漸明朗或棋局接近尾聲,才會逐漸準确。但更多時候需要走幾百步,同時還有一個緻命問題,電腦不容易了解什麼叫走到底,是以電腦幾乎會走到将棋盤填滿才判斷勝負,實際對局甚至填子自殺。

3.2蒙特卡洛數搜尋

在alphago出現前,mcts就是采用快速走子方法,盡管其使用如此粗略的估值方法,在配合多種技巧,也可以是電腦棋力達到業餘水準。那它是怎麼做的呢?

3.2.1極大極小值搜尋

先不考慮下棋勝率如何獲得,已經知道勝率分布如下,我想獲得最高勝率該選哪個?從結果來看0.6最大,選右邊,但是當對方會的話,會讓你隻能選0.42,而假如選左邊,大勝率則有0.48;即真實勝率隻有0.48.

對于圍棋而言,其為零和遊戲,假設為黑棋,在搜尋樹中,每當黑棋走時,選機率最大的,當白棋走時,選機率最小的,即極大極小值搜尋

alphago了解

3.2.2mcts

但直接将極大極小值搜尋運用在圍棋中,會遇到兩個問題:1棋盤情況太多,搜尋樹太大;2除非将搜尋樹走到底,否者很難評估勝率;那mcts如何解決的呢?

它可以給出一個局面評估(不一定準),但部分解決了第二個問題

搜尋樹會更好的集中在更值得搜尋的區域(也不一定準),綜合了深度優先與廣度優先

具體流程:

alphago了解

我們将不斷重複一個過程(很多萬次):

1)選擇。從根節點往下走,每次都選一個“最值得看的子節點”(見3.2.3),直到來到一個“存在未擴充的子節點”的節點,如圖中的 3/3 節點。什麼叫做“存在未擴充的子節點”,其實就是指這個局面存在未走過的後續着法。

2)擴充,我們給這個節點加上一個 0/0 子節點,對應之前所說的“未擴充的子節點”,就是還沒有試過的一個着法。

3)模拟。從上面這個沒有試過的着法開始,用快速走子政策走到底,得到一個勝負結果。按照普遍的觀點,快速走子政策适合選擇一個棋力很弱但走子很快的政策。

4)回溯。把模拟的結果加到它的所有父節點上。

3.2.3節點選擇

快速走子:如果輪到黑棋走,就選對于黑棋有利的;如果輪到白棋走,就選對于黑棋最不利的。但不能太貪心,不能每次都隻選擇“最有利的/最不利的”,因為這會意味着搜尋樹的廣度不夠,容易忽略實際更好的選擇。

alphago了解

其中 x 是節點的目前勝率估計(要考慮目前是黑棋走還是白棋走!),N 是節點的通路次數。C 是一個常數。C 越大就越偏向于廣度搜尋,C 越小就越偏向于深度搜尋。

或許這裡會産生疑問,我們不是之前訓練了一個政策網絡嗎,為什麼不用其來控制節點選擇,而是直接快速走子呢?

其中一個這在alphago出現前,還沒有出現神經網,其次更為關鍵的是雖然政策網絡棋力遠遠更高,選點更準确,但是運作速度遠遠更慢,同時會大大減少電腦搜尋的局面數,最終在相同的時間,估值的準确度反而降低

3.3價值網絡

價值網絡直接學會每個局面對應的最終勝負情況,如同人類棋手一般,電腦無需把棋局走到底,隻需看一眼,就能判斷局勢優劣。其目标是提供估值函數,而完美的估值函數,即指某個局面在雙方完美下完的後續變化後的結果。但這個估值函數怎麼得到?alphago做法是通過自我對弈将後續變化下完,然後用棋局的結果訓練價值網絡

對于舊版alphago會将價值網絡和快速走子綜合考慮,而在alphago zero通過多任務學習和更深的殘差網絡,價值網絡精度更高,而快速走子的随機性反而可能導緻棋力下降,故隻用價值網絡

4訓練過程

4.1原版alphago:政策梯度方法

1:初步訓練:通過人類高手棋譜,獲得政策網絡

2:強化訓練:通過政策梯度方法,增強政策網絡

3:訓練價值網絡:使用自我對弈生成的棋譜局面和最終結果完成訓練,難點在于需生成大量自我對弈棋譜,對運算資源需求很高

4.2新版alphago:蒙特卡洛數搜尋學習

1:使用mcts進行自我對弈

Mcts在不同的落子位置的停留時間不同,其機率與時間有個函數關系,通常來說,時間越長,棋力越強,但局面不夠多樣性,時間越短,落子越随機,棋力越差,選取适當參數,在棋力與多樣性遭到平衡,有利于訓練

alphago了解

2:将自我對弈棋局用于訓練政策網絡和價值網絡

alphago了解

3訓練後得到更強的網絡,生成更高品質的自我對弈棋譜,重複這一過程,棋力越來越強

5深化了解

5.1從搜尋樹角度看政策網絡與價值網絡

從搜尋樹角度看圍棋,其難點在于搜尋樹極廣,極深,且局面極難評估。Alpahgo的秘訣并不是暴力搜尋,而是使用深度卷積網模拟人類的直覺,将搜尋樹大大縮減

政策網絡:負責減少搜尋廣度,每一層隻需搜尋少量節點;

價值網絡:負責減少搜尋深度,無需将棋局下到底即可得出對于局勢判斷

5.2如果政策網絡與價值網絡所給結果不一緻

回到開始的問題,政策網與價值網分别解決的是什麼問題?

政策網絡:下一步最佳的下的位置;價值網絡:最後的勝率

對于政策網絡結果其實是将搜尋集中在最有希望的位置,即通常來說政策網選的位置勝率最大,這樣mcts就可以避免過多的搜尋,但是,根據mcts原理,它仍有希望有時去通路這些點,以防看漏,隻是可能性很低,而價值網才是決定勝率,當局面錯綜複雜,政策網與價值網估值可能出現問題,但mcts可以保證長時間後收斂到最優解,即給alphago足夠長時間,他最終會察覺到自己問題

5.3強化學習在 AlphaGo 中究竟是怎麼用的?

如果我赢了棋,就說明這次我選擇的政策是正确的。是以可以對于這次所經曆的每一個局面,都加強選擇這局的走法的機率。

如果我輸了棋,就說明這次我選擇的政策是錯誤的。是以可以對于這次所經曆的每一個局面,都減少選擇這局的走法的機率。

但是這裡好像有問題。這是不是太傻了?也許白棋并不是敗在開局,而是敗在中盤的某一步?也許黑棋并不是真的這次走對了政策,而是白棋看漏了一步或者說白棋如果走對是可以赢的?

以上說的很正确。但是,反過來想,如果黑棋的走法可以讓白棋後面打勺的機率增加,那也不錯啊。另一方面,如果白棋發現自己目前的政策容易進入自己不容易掌握的局面,那麼盡管确實可能有完美的招數隐藏在裡面,那白棋也不妨一開始就去避免這種局面吧。而且,勝和負的影響可以互相抵消,是以在經過大量對局後,這個過程是比較穩定的。比如說如果某個開局的後續勝率經統計是50%,那它就不會被改變;但如果不是50%,這種改變就有一定道理。這個過程,有點像人類棋手的“找到适合自己的棋風”的過程。毫無疑問,現在的 AlphaGo 已經找到了十分适合自己的棋風,它确實是會揚長避短的。

但是它的問題是有可能陷入局部的最優,即對付自己有效,不代表對付其他人有效,是以 AlphaGo 論文中會建立一個對手池(包括整個進化過程中形成的所有政策),保證新政策盡量對于不同對手都有效。在這個基礎上,可以做各種各樣的改進,例如配合未來的價值網絡,更清楚地看到自己的敗着在哪裡,而不是傻傻地把所有機率都同樣修改,如reinforce算法:當價值網絡判斷目前局勢很差,那麼後續着法就不能成為失敗。

繼續閱讀