翻译Deep Learning and the Game of Go(3)第2章:围棋是一个机器学习难题(规则部分就不翻了)
本章涵蓋
- 為什么游戲是AI的好項目?
- 為什么圍棋是深度學習的難題?
- 圍棋的規則是什么?
- 您可以通過機器學習解決游戲的哪些方面?
2.1 為什么要用游戲?
游戲是AI研究中最喜歡的主題,而不僅僅是因為它們很有趣。它們還簡化了現實生活中的某些復雜性,因此您可以專注于正在研究的算法。
想象一下,您在Twitter或Facebook上看到一條評論:類似“呃,我忘記了我的雨傘。”您很快就會得出結論,您的朋友被雨淋了。但是該信息未包含在句子中的任何位置,那么您是如何得出這個結論的?首先,您應用了有關雨傘用途的常識。其次,您運用了有關人們煩惱地做出的評論的社交知識:在陽光明媚的晴天說“我忘記了雨傘”會很奇怪。
作為人類,我們在閱讀句子時會毫不費力地考慮所有這些情況,但對于計算機而言,這并不是那么容易。現代的深度學習技術可以有效地處理您提供的信息。但是,您查找所有相關信息并將其提供給計算機的能力有限,而游戲回避了這個問題。它們發生在人工的宇宙中,在規則中已經闡明了您做出決定所需的所有信息。
游戲特別適合強化學習。回想一下,強化學習需要反復運行你的程序,并評估它完成任務的程度。想象一下你在用強化學習來訓練機器人在建筑物周圍移動。在對控制系統進行微調之前,你需要冒著機器人從樓梯上掉下來或撞翻你的家具的危險。另一種選擇是一個讓計算機可以操作的模擬環境,這樣可以排除一個未經訓練的機器人在現實世界中運行的風險,但是這樣會產生新的問題。首先,你必須投資開發一個詳細的計算機模擬環境,這是非常重要的。第二,你的模擬總是不完全準確的。
另一方面,在游戲中,你所需要做的就是讓你的AI運行起來。如果它在學習的時候輸了幾十萬場比賽,那又怎么樣?在強化學習中,游戲對于嚴瑾的研究非常重要。許多前沿算法首先在Atari視頻游戲(如Breakout)上得到了運用。
要清楚的是,你可以成功地將強化學習應用于解決物理世界中的問題。許多研究人員和工程師都這樣做了。但是從游戲一開始,就解決了創造一個真實的訓練環境的問題,并讓你專注于強化的機制和原則。
在這一章中,我們介紹了圍棋游戲的規則。然后,我們將會介紹高水平的,引入深度學習棋盤游戲AI的結構。最后,在整個開發過程中,我們將介紹如何評估您的游戲AI發展進步的效果。
2.2-2.4都是圍棋規則,我就不翻了
2.5 我們能夠教給機器什么?
不管你是在編程做圍棋還是井字棋都沒關系,大多數棋盤游戲AI都有著相似的整體結構。在本節中,我們提供了該結構的高級概述和AI需要解決的特定問題。依賴于游戲,最好的解決方案可能涉及游戲特定的邏輯或機器學習,又或者兩者兼而有之。
2.5.1 布局階段選擇落子
在圍棋的布局階段,很難評估一個特定的落子,因為游戲的剩余部分有大量的變化。國際象棋和圍棋AI都經常使用一本布局書:從人類專業棋手對局中獲得的關于布局方面的數據庫。為了要構建這種AI,您需要從水平很高的玩家的對弈中去收集對局記錄,然后再去分析對局記錄,尋找常見的盤面。在任何常見的盤面下,如果對下一個落子有強烈的共識-----比如說,一到兩個落子占了后續落子的80%,那么你就應該把這些落子添加到布局書中,這樣機器人就可以在下棋時去查閱這些書。如果任何早期的局面在布局書中有出現,那么AI就會尋找到人類專業棋手的落子。 在國際象棋和跳棋中,隨著游戲的進行,棋子會從棋盤上移走,同時這些AI包含了類似的游戲結束的數據庫:當棋盤上只剩下幾塊時,就可以預先計算所有的變化,但這種技術不適用于圍棋,因為它從開始到結束一直是往棋盤上填子。 2.5.2 搜索棋盤狀態 棋盤游戲AI背后的核心思想是樹搜索。可以想想人類是如何玩一個戰略游戲的。首先,我們考慮下一輪可能采取的行動,然后我們就要考慮一下我們的對手可能會如何回應,然后再計劃我們將如何回應,等等。我們需要盡可能地去讀出一個變化去判斷結果是否好,接著我們回溯去看看其他的變化是否更好。 這緊密地描述了樹搜索算法是如何在游戲AI中使用的。當然,人類只能在頭腦中立即得到一些變化,而電腦可以在沒有問題的情況下運行數百萬。人類用直覺來彌補他們缺乏原始計算能力的缺陷,經驗豐富的圍棋高手在思考一些難局上的發揮令人驚嘆 最終,擁有高超的原始計算能力的AI在國際象棋中取得勝利。但是,在圍棋領域,AI卻有一個有趣的轉變,要能與頂尖人類玩家競爭,得把人類的直覺帶到計算機上 2.5.3 減少考慮的落子數目 在游戲的樹搜索中,一個回合可能走的落子點是分支因子。 在國際象棋中,平均分支因子大約是30。在對局開始時,每個玩家都有20個合法的移動選項;隨著棋局的進行,數字會逐漸增加。在這個尺度上,對于每個可能的落子點去找出接下來4到5步的變化是可以做到的。一個國際象棋引擎將讀出遠比這更深的變化。 相比之下,圍棋中的分支因子是巨大的。在比賽的第一步,就有361個合法落子點,隨著棋局的進行,數量會緩慢減少,其平均分支因子約為250。往下探索緊緊四步就需要評估近40億個位置,因此縮小可能性的數量是至關重要的。表2.1比較了國際象棋和圍棋的棋子幾步后的可能落子點數目 在圍棋中,基于規則去選擇落子的方法在對弈中表現一般,因為要寫出可靠地識別棋盤最重要區域的規則是極其困難的。但是深度學習完全適合解決這個問題,你可以應用監督學習去訓練一臺計算機來模仿一個人類圍棋玩家。 你可以使用一個擁有人類高手對局記錄的龐大數據集,其中在線游戲服務器就是一個很好的資源,在你的電腦上可以復盤所有的對局,并從中提取每個棋盤盤面和接下來的落子,這就是你的訓練集。當用一個合適的深度神經網絡,就可以更好地預測人類的移動,其精度超過50%。你可以創建一個只預測人類落子的AI,而這種AI就已經可以是一個不能輕視的對手。但是當你把落子預測算法和樹搜索結合起來時,AI就能展現出真正的實力:其預測的落子會給你一個排好的分支列表讓你去搜索。 2.5.4.對游戲狀態的評估 分支因子會限制一個AI往前探測的深度。如果你能得到通向游戲結束的所有可能途徑序列,那么你就會知道誰會贏,而這樣就很容易決定這是否是一個好的序列。但對于任何比井字棋更復雜的游戲都不適用:可能的變化數量太多了。在某些時候,你必須要停下來去選擇一個你已經搜索過但并未搜索完全的序列。這樣做之后,你會給最終的棋局盤面打一個分數。在你所分析的所有變化中,你將會選擇有最佳終局得分的位置進行落子。需要指出的是如何計算分數實現盤面評估將是一個棘手的問題。 在國際象棋AI中,盤面評估是基于邏輯的,而這對棋手來說是有意義的。你可以開始于像這樣的簡單規則:如果你吃了我的棋子,我就可以吃掉你的車,那將對我有好處的。頂級的國際象棋引擎的邏輯遠不止于此,還會考慮到棋盤上的棋子在哪里結束以及什么棋子將會阻礙移動的規則。 在圍棋中,盤面評估可能比落子選擇更加困難。圍棋游戲的目標是能夠占領更多的地盤,但令人驚訝的是地盤幾乎難以計數:地盤邊界往往十分模糊,直到快結束時,點目起不到多大作用;有時一直到游戲結束時可能只有幾次點目。這是人類高超直覺的另一個體現。 深度學習在這里也會有重大突破。適合落子選擇的神經網絡也可以被訓練來評估棋盤盤面。而不是訓練一個神經網絡來預測下一步會是什么或者去預測誰會贏。你可以設計網絡將其預測表示成概率,這樣就給了您一個分數去評估當前的棋盤盤面。2.6.如何衡量你的圍棋AI的棋力
當你的圍棋AI開始運行時,你自然會想要知道它到底有多強。大多數圍棋玩家都熟悉傳統的日本等級系統,所以你想利用這種系統去衡量你的機器人的棋力,而衡量它水平的唯一方法就是通過與其他對手對弈;你可以以此為目的與其他圍棋AI或人類玩家對弈。 2.6.1.傳統圍棋等級 圍棋玩家一般使用傳統的日本等級制度,玩家中的初學者為級,高水平的為段。段,又分為業余段位和職業段位。最強的級是1級,數字越大越弱,而段則是數字越大越強。對于業余棋手來說,傳統上,段位最高的是7段。業余棋手可以從他們的區域圍棋協會中獲得等級,同時在線服務器也將為它們的在線玩家評級。表2.2顯示了等級的排列業余等級是根據兩位棋手之間的棋力差所需的讓子數來計算的。例如,如果愛麗絲2級,鮑勃5級,愛麗絲通常會給鮑勃讓三子,使他們有平等的機會獲勝。
專業級別就有點不同:它們更像是頭銜。一個地區的圍棋協將頂尖棋手進行排名,而這排名都是基于主要賽事的結果,并且這種排名終身持有的。業余水平和職業水平是不可直接比較的,但你可以假設任何一個有職業排名的職業棋手水平至少能達到業余7段的水平,而頂級職業選手明顯比這種水平強。
2.6.2? 衡量你的圍棋AI
估計你的圍棋AI的一個簡單的方法就是與已知棋力的圍棋AI相對抗。如GNUGo和Pachi那樣的開源圍棋引擎,就提供了很好的基準。GNU Go在5級左右的水平,而Pachi在1段左右。所以,如果你讓你的圍棋與GNUGo對抗100次,它如果贏得了大約50場比賽,你可以得出結論,你的圍棋AI的水平也在5級左右。
為了獲得更精確的等級,您可以讓您的AI在帶有評級系統的公共Go服務器上對弈,幾十場比賽之后應該就可以得到一個合理的估計。
2.7 總結
- 游戲是人工智能研究的一個熱門課題,因為它們具有已知規則
- 如今最強的圍棋人工智能依靠的是機器學習而不是游戲特有的知識。部分原因是圍棋具有大量可能的變化,而基于規則的圍棋AI并不強大。
- 你可以在圍棋中應用深度學習的兩個地方是落子選擇和盤面評估。
- 落子選擇需要縮小在特定的棋盤盤面需要考慮的落子可能性數目。沒有好的落子選擇,你的圍棋AI將有非常多的分支要去搜索。
- 盤面評估是估計哪方領先多少的問題。沒有好的盤面評估,你的圍棋AI將沒有能力選擇一個好的變化。
- 你可以通過對抗已知棋力的可用AI來測你的AI棋力,如GNUGo或Pachi
總結
以上是生活随笔為你收集整理的翻译Deep Learning and the Game of Go(3)第2章:围棋是一个机器学习难题(规则部分就不翻了)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有道围棋 AI:智能匹配儿童棋力的良师益
- 下一篇: ubuntu 桌面菜单栏和任务栏程序标题