如何利用 Python 打造一款簡易版 AlphaGo
台中產後月子中心
創業項目頻道上線 你有項目來A5招商吧
2017 年伊始,再度出山的 AlphaGo 化名 Master 在網絡圍棋平臺上打遍棋界無敵手。你是否也想打造一個自己的 AlphaGo 呢?GitHub 用戶 Brian Lee(brilee)發佈瞭一個效仿 AlphaGo 的極簡圍棋引擎的 Python 實現 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 文件中的特征提取步驟,你還需要重新預處理。
pythonmain.pypreprocessdata/kgs-*
註:這句代碼用瞭通配符,比如說:KGS 目錄可以名為 data/kgs-2006-01、data/kgs-2006-02 等等
監督學習(策略網絡)
使用上面預處理過的 SGF 數據(默認輸出目錄是 ./processed_data/),你可以訓練策略網絡。
pythonmain.pytrainprocessed_data/--save-file=/tmp/
網絡訓練好瞭之後,當前模型會被保存在 --save-file。你可以通過如下代碼繼續訓練台中月子中心介紹這個網絡:
pythonmain.pytrainprocessed_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 的程序來使用它。要調用原始策略網絡,使用如下代碼:
pythonmain.pygtppolicy--read-file=/tmp/savedmodel
要調用集成瞭 MCTS 的策略網絡版本,使用:
pythonmain.pygtpmcts--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'pythonmain.pygtppolicy--read-file=/tmp/savedmodel'-white'gogui-display'-size19-komi7.5-verbose-auto
另一種通過 GTP 玩的方式是對抗 GnuGo,同時還能觀看比賽:
BLACK="gnugo--modegtp"WHITE="pythonmain.pygtppolicy--read-file=/tmp/savedmodel"TWOGTP="gogui-twogtp-black\"$BLACK\"-white\"$WHITE\"-games10\-size19-alternate-sgffilegnugo"gogui-size19-program"$TWOGTP"-co台中坐月子中心費用mputer-both-auto
還有一種玩法是通過 GTP 連接 CGOS(http://yss-aya.com/cgos/ 計算機圍棋在線服務器)。由 boardspace.net 運營的 CGOS 服務器已經關閉瞭;你需要在 yss-aya.com 接入 CGOS 服務器。
配置好瞭你的 cgos.config 文件之後,你可以通過 cgosGtp -c cgos.config 連接到 CGOS,以及使用 cgos台中月子中心評價View yss-aya.com 6819 查看你自己的遊戲。
MuGo 項目地址:https://github.com/brilee/MuGo
台中產後月子中心
創業項目頻道上線 你有項目來A5招商吧
2017 年伊始,再度出山的 AlphaGo 化名 Master 在網絡圍棋平臺上打遍棋界無敵手。你是否也想打造一個自己的 AlphaGo 呢?GitHub 用戶 Brian Lee(brilee)發佈瞭一個效仿 AlphaGo 的極簡圍棋引擎的 Python 實現 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 文件中的特征提取步驟,你還需要重新預處理。
pythonmain.pypreprocessdata/kgs-*
註:這句代碼用瞭通配符,比如說:KGS 目錄可以名為 data/kgs-2006-01、data/kgs-2006-02 等等
監督學習(策略網絡)
使用上面預處理過的 SGF 數據(默認輸出目錄是 ./processed_data/),你可以訓練策略網絡。
pythonmain.pytrainprocessed_data/--save-file=/tmp/
網絡訓練好瞭之後,當前模型會被保存在 --save-file。你可以通過如下代碼繼續訓練台中月子中心介紹這個網絡:
pythonmain.pytrainprocessed_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 的程序來使用它。要調用原始策略網絡,使用如下代碼:
pythonmain.pygtppolicy--read-file=/tmp/savedmodel
要調用集成瞭 MCTS 的策略網絡版本,使用:
pythonmain.pygtpmcts--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'pythonmain.pygtppolicy--read-file=/tmp/savedmodel'-white'gogui-display'-size19-komi7.5-verbose-auto
另一種通過 GTP 玩的方式是對抗 GnuGo,同時還能觀看比賽:
BLACK="gnugo--modegtp"WHITE="pythonmain.pygtppolicy--read-file=/tmp/savedmodel"TWOGTP="gogui-twogtp-black\"$BLACK\"-white\"$WHITE\"-games10\-size19-alternate-sgffilegnugo"gogui-size19-program"$TWOGTP"-co台中坐月子中心費用mputer-both-auto
還有一種玩法是通過 GTP 連接 CGOS(http://yss-aya.com/cgos/ 計算機圍棋在線服務器)。由 boardspace.net 運營的 CGOS 服務器已經關閉瞭;你需要在 yss-aya.com 接入 CGOS 服務器。
配置好瞭你的 cgos.config 文件之後,你可以通過 cgosGtp -c cgos.config 連接到 CGOS,以及使用 cgos台中月子中心評價View yss-aya.com 6819 查看你自己的遊戲。
MuGo 項目地址:https://github.com/brilee/MuGo
AUGI SPORTS|重機車靴|重機車靴推薦|重機專用車靴|重機防摔鞋|重機防摔鞋推薦|重機防摔鞋
AUGI SPORTS|augisports|racing boots|urban boots|motorcycle boots
文章標籤
全站熱搜