AlphaGo戰勝世界第一棋手,一頁核心演算法總結必勝秘訣
下文概括了圍棋藉助人工智慧在 2016 年實現的突破。
圍棋是一個完全信息博弈問題。而完全信息博弈,通常能被簡化為尋找最優值的樹搜索問題。它含有 b 的 d 次方個可能分支,在國際象棋中 b≈35,d≈80;而在圍棋中 b≈250,d≈150。很顯然,對於圍棋,用窮舉法或簡單的尋路演算法(heuristics)是行不通的。但有效的方法是存在的:
從策略(policy) P(a|s) 中取樣 action,降低搜索廣度
通過位置評估降低搜索深度
把策略和值用蒙特卡洛樹搜索(MCTS)結合起來。
通常的步驟是:
用一個 13 層的 CNN,直接從人類棋步中訓練一個監督學習策略網路 Pσ。輸入為 48 x 19 x 19 的圖像(比方說,它的組成棋子顏色 是 3 x 19 x 19),輸出是使用 softmax 層預測的全部落子的概率。精確度是 55.7%。
訓練一個能在運行時快速取樣 action 的快速策略 Pπ。這會用一個基於小型模式特徵的線性 softmax。精確度是 24.2%,但它計算一次落子只用 2 微秒,而不像 Pσ 需要 3 毫秒。
訓練一個增強學習策略網路 Pρ ,通過優化博弈結果來進一步提升監督策略網路。這把策略網路向贏棋優化,而不是優化預測精確度。本質上,Pρ 與 Pσ 的結構是一樣的。它們的權重使用相同值 ρ=σ 初始化。對弈的兩個選手,是當前策略網路 Pρ 和隨機(防止過擬合)選擇的此前的策略網路迭代。
訓練一個價值網路(value network)Vθ,來預測強化學習策略網路自己和自己下棋的贏家。該網路的架構和策略網路類似,但多出一個特徵平面(當前玩家的顏色),並且輸出變成了單一預測(回歸,均方差損失)。根據完整棋局來預測對弈結果,很容易導致過擬合。這是由於連續落子位置之間高度相關,只有一子之差。因此,這裡使用了強化學習策略網路自己與自己對弈新生成的數據。該數據從包含 3000 萬個不同位置的獨立棋局中抽取。
把策略網路、價值網路、快速策略和蒙特卡洛樹搜索結合起來。一個標準的蒙特卡洛樹搜索過程包含四步:選擇、擴展、評估、備份。為了讓大家更容易理解,我們只粗略講了講它如何在模擬中選擇狀態的部分(如對數學感興趣,請到原始論文中找公式)。
狀態分數 = 價值網路輸出 + 快速運行(fast rollout)的策略結果 + 監督學習策略網路輸出
高狀態得分(或者說落子)會被選擇。價值網路輸出和快速運行策略結果是評估函數,在葉子節點進行評估(注意,為了評估快速運行,需要一直到最後一步)。監督學習策略網路輸出是一個當前階段的 action 概率,充作選取分數的獎勵分。該分數會隨訪問次數而退化,以鼓勵探索。注意強化學習策略網路只被用於輔助,來生成價值網路,並沒有直接在蒙特卡洛樹搜索中使用。
到這就結束了,以上就是戰勝了人類的 AlphaGo 演算法!


※一篇文章教你用TensorFlow寫名著
※如何在微服務架構下構建高效的運維管理平台?
TAG:唯物 |
※十分鐘演算法小故事之Adaboost演算法
※AlphaGo遙指通用AI:一個演算法攻陷三大棋類遊戲,成為棋類遊戲終結者
※Equihash演算法礦機 Z9 mini問世,又一個演算法被ASiC攻克!
※AlphaGo演算法再思考
※Google發布Brackets核心演算法更新:這個三月註定是多事之秋!
※Google Medic全面核心演算法更新
※一看就懂的 Alpha-Beta 剪枝演算法詳解
※揭秘Google Brain:專註糾正演算法錯誤/解決AI偏見
※開源啦:連DeepMind也捉急的遊戲,OpenAI給你攻破第一關的高分演算法
※AlphaGo對局李世石兩周年紀:AI程序攻克圍棋的演算法秘密
※攻擊AI模型之DeepFool演算法
※作為一個目標檢測演算法也是要研究balance的!
※Adaboost演算法及python實戰
※python數據結構和演算法「總結」
※分散式唯一id:snowflake演算法思考
※整合全部頂尖目標檢測演算法:FAIR開源Detectron
※生物界「AlphaGo」來了!DeepMind推出蛋白質結構預測演算法,大勝人類傳統模型!
※Facebook Libra背後共識演算法第一作者首次中文平台深度訪談
※又一公鏈採用Tensority演算法
※python實現二分查找演算法/二分排序演算法