自github
機器之心編譯
參與:吳攀
2017 年伊始,再度出山的 AlphaGo 化名 Master 在網絡圍棋平臺上打遍棋界無敵手。你是否也想打造一個自己的 AlphaGo 呢?GitHub 用戶 Brian Lee(brilee)發布了一個效仿 AlphaGo 的極簡圍棋引擎的 Python 實現 MuGo。
MuGo 項目地址:https://github.com/brilee/MuGo
這是 AlphaGo 基本組成部分的一個純 Python 實現。
AlphaGo 邏輯/控制流(logic/control flow)其實并不非常復雜,本項目就是其復現。AlphaGo 的秘密武器是在于其各種神經網絡之中。
就我所知,AlphaGo 在對弈過程中使用了三個神經網絡。
第一個神經網絡是一個速度很慢但很準確的策略網絡(policy network)。這個網絡被訓練用來預測人類的走子(大約 57% 的準確度),它會輸出一個可能走子的列表,并且每一種走子方式都對應了一個概率。這個網絡為蒙特卡洛樹搜索(MCTS)提供了可能的走子起點。這個神經網絡很慢的一大原因是它具有很大的規模,這是因為這個神經網絡的輸入是圍棋棋盤上的各種計算成本高昂的屬性——氣的數量、叫吃、征等等。
第二個神經網絡也是一個策略網絡,它比第一個更小更快,但準確度更低(大約 24%),這個網絡并不使用復雜的屬性作為輸入。一旦到達了當前 MCTS 樹的葉節點(leaf node),這個第二個更快的網絡就會被用來得到一個棋盤局面的可能走子,并且對這個這個最終局面進行評分。
第三個神經網絡是一個價值網絡:它為棋盤輸出一個預期獲勝的范圍,而不會自己下任何棋。
然后,將使用第二個神經網絡的蒙特卡洛得到的結果和使用第三個神經網絡的價值計算結果進行平均,然后這個值被記為該 MCTS 節點的近似結果。
開始
安裝 TensorFlow
開始需要安裝 TensorFlow,并使用 GPU 驅動器(即英偉達顯卡的 CUDA 支持)
獲取用于監督學習的 SGF
接下來需要一個 SGF 文件源。你可以在 https://u-go.net/gamerecords 獲取 15 年時長的高段位對局數據。你也可以從其它來源下載專業比賽的數據庫。
預處理 SGF
第三,對你的 SGF 文件進行預處理。這需要 SGF 文件中的所有局面并提取出每一個局面的特征以及記錄正確的下一步走子。
然后將這些局面分割成塊(chunk)——一塊用于測試,其它的都用于訓練。這個步驟需要一定時間,而且要是你修改了 features.py 文件中的特征提取步驟,你還需要重新預處理。
python main.py preprocess data/kgs-*
注:這句代碼用了通配符,比如說:KGS 目錄可以名為 data/kgs-2006-01、data/kgs-2006-02 等等
監督學習(策略網絡)
使用上面預處理過的 SGF 數據(默認輸出目錄是 ./processed_data/),你可以訓練策略網絡。
python main.py train processed_data/ --save-file=/tmp/
網絡訓練好了之后,當前模型會被保存在 --save-file。你可以通過如下代碼繼續訓練這個網絡:
python main.py train processed_data/ --read-file=/tmp/savedmodel
--save-file=/tmp/savedmodel --epochs=10 --logdir=logs/my_training_run
此外,你也可以使用 TensorBoard 跟蹤你的訓練過程——如果你為每一次運行定義了一個不同的名字(如:logs/my_training_run、logs/my_training_run2),你可以將這些運行彼此重疊起來:
tensorboard --logdir=logs/
與 MuGo 對弈
MuGo 使用了 GTP 協議,你可以通過任何兼容 GTP 的程序來使用它。要調用原始策略網絡,使用如下代碼:
python main.py gtp policy --read-file=/tmp/savedmodel
要調用集成了 MCTS 的策略網絡版本,使用:
python main.py gtp mcts --read-file=/tmp/savedmodel
通過 GTP 下棋的一種方式是使用 gogui-display(它有一個兼容 GTP 的 UI)。你可以在 http://gogui.sourceforge.net/ 下載 gogui 工具套件。參見 http://gogui.sourceforge.net/doc/reference-twogtp.html 了解使用 GTP 的有趣方式。
gogui-twogtp -black 'python main.py gtp policy --read-file=/tmp/savedmodel' -white 'gogui-display' -size 19 -komi 7.5 -verbose -auto
另一種通過 GTP 玩的方式是對抗 GnuGo,同時還能觀看比賽:
BLACK="gnugo --mode gtp"
WHITE="python main.py gtp policy --read-file=/tmp/savedmodel"
TWOGTP="gogui-twogtp -black \"$BLACK\" -white \"$WHITE\" -games 10 \
-size 19 -alternate -sgffile gnugo"
gogui -size 19 -program "$TWOGTP" -computer-both -auto
還有一種玩法是通過 GTP 連接 CGOS(http://yss-aya.com/cgos/ 計算機圍棋在線服務器)。由 boardspace.net 運營的 CGOS 服務器已經關閉了;你需要在 yss-aya.com 接入 CGOS 服務器。
配置好了你的 cgos.config 文件之后,你可以通過 cgosGtp -c cgos.config 連接到 CGOS,以及使用 cgosView yss-aya.com 6819 查看你自己的游戲。
邊不少朋友都有學圍棋的想法,付諸于行動的也有,但真正靠自己學會的卻并不多。
有工作、有家庭的成年人真的很難保證有足夠的時間和精力投入到一份的全新的愛好中,圍棋不像網絡游戲那樣容易上手,身邊也不是那么容易就能找到一起學習的小伙伴,很多人因此斷斷續續學了幾年,依然談不上入門。
成年人的學習能力明顯要比小孩子強,但是同樣的成年人也有自己的致命弱點——浮躁。一般一年級左右的小朋友學習圍棋每周一次課,每天回家自己按要求做完老師布置的作業,按照老師教的按部就班循序漸進的學習,堅持一年左右達到業余一級是沒有問題的。成年人卻完全相反,大多數人是不會沉下心來一點點去學,在了解基礎的規則以后就投入到實戰中去了,而且一去不復返。實戰能夠幫助提高棋藝,但是如果不能在實戰中發現自己的問題,不斷改正與提高,那么時間長了很多毛病就會根深蒂固,很多欠缺的技術技巧也難以掌握提高。
很多朋友學棋的時候會剛學會吃子就立馬注冊圍棋對弈平臺賬戶,然后直接大棋盤開打,這里不建議初學者直接下大棋盤。
理由一:沒有布局基礎,對弈時很迷茫
初學者往往剛學會吃子規則,剛理解氣是什么,吃子是什么,對布局沒有一點概念,甚至可能連死活都不是很明白,這時候去下大棋盤,會很迷茫,根本不知道該怎么走,只會跟著對方落子,兩個人要是都不會,就會從一個角一直下到一整盤。
理由二:花的時間很長,效果卻不好
19路大棋盤有361個點,下完一盤棋需要的時間很長,前面說了對成年人來說時間是很奢侈的,如果花這么長時間能有相應的效果還好,但是現實往往是效果不大。下完棋已經累了,加上步數很多,時間比較長,之前下棋時的想法早已經忘在腦后,即使去復盤也沒多大效果,而且看到一滿盤的棋子,更是沒有一點復盤的想法了,而復盤是發現問題,解決問題,提高自己最好的途徑。
建議初學者一開始下9路的小棋盤,棋盤小,一盤棋花的時間就相對少很多,而且目標很明確,不至于看著棋盤不知所措。在小棋盤里廝殺對提高局部作戰能力,計算能力以及死活水平都有巨大的幫助,在有一定的局部作戰能力和死活基礎以后再開始學習布局是非常好的方法。
有想學圍棋的朋友可以看看我的專欄文章https://learning.snssdk.com/feoffline/toutiao_wallet_bundles/toutiao_learning_wap/online/album_detail.html?content_id=6725345244637823235
也可以私信我免費加入零基礎圍棋學習群,和小伙伴們一起學習圍棋,喜歡的朋友點個關注哦~
址:https://kahoku.news/articles/20240619khn000009.html
原題:一力遼の一碁一會 世界アマ 盤上で國際交流、末永く
摘自:河北新報
作者:一力遼九段
圍棋的一大重要特點是它在世界各地的普及。這一次我將介紹5月18日至22日在東京都千代田區日本棋院舉辦的“第44屆世界業余圍棋錦標賽”的情況。
世界業余圍棋錦標賽始于1979年在日本舉行。最初的參賽國家有15個,逐漸增加,到2000年代已超過60個。近幾年由于疫情影響,參賽國家有所減少,但這次時隔五年在日本舉辦的比賽中,有來自60個國家和地區的選手參賽。
我是本次比賽的裁判長。我的主要工作是宣布比賽開始、確認比賽結果,并在比賽后給各國選手提供技術指導。自2013年在仙臺擔任裁判以來,這是我時隔11年再次參與世界業余圍棋錦標賽的工作。
每個國家的選手各有一人參加,通過八輪比賽的總成績決定排名。60名參賽者的水平從職業水準到業余水平,除了圍棋盛行的東亞國家,歐洲的代表也經常排名前列。
今年多米尼加共和國和吉爾吉斯斯坦是首次參賽。十年前在多米尼加共和國、四年前在吉爾吉斯斯坦幾乎沒有人下圍棋,但由于人工智能(AI)的影響,圍棋在這些國家快速普及。
吉爾吉斯斯坦的代表是一名14歲的少年,他非常熱心地詢問學習方法以及在日本學習圍棋的地方。他在兩年內達到了接近初段的水平,進步速度之快和對進一步成長的渴望讓我印象深刻。他這次只贏了兩場比賽,但我期待他在未來的表現。
冠軍爭奪戰在日本業余第一人大關稔、四次奪得世界業余圍棋錦標賽冠軍的中國選手白寶祥和上屆冠軍韓國的金正善之間展開。最終三人都以7勝1敗并列,通過對手分差異決定名次,中國、韓國和日本分別位居前三。
雖然大關稔未能奪冠,但他是唯一擊敗白寶祥的選手,展現了實力。
這次烏克蘭也時隔三年再次參賽。雖然當前國際形勢不穩定,但我希望棋盤上的交流能長久持續下去。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。