【电影】我想吃掉你的胰脏

动画的解说。。。在B站,YouTube上没有。。。

我只能转一个真人版了
1
分享 2020-05-07

3 个评论

霏艺Faye 图书管理员
https://github.com/Rochester-NRT/RocAlphaGo/tree/develop/AlphaGo

go目錄,實現了env。對我來説,game_state.py 是我唯一感興趣的
models目錄,實現了3個神經網絡,重點啊!
preprocessing目錄,將數據格式化為tensor,重點!
training目錄,backward算法,重點!
ai.py文件,實現了agent。隨便看看吧。。。
mcts.py文件,實現了mcts算法,重點!
util.py文件,sgf 轉換,沒興趣。。。



我的理解:
env = Env::new()
agent = Agent::new()

let move = agent.get_move(env.current_state())
env.do_move(move)
loop:
     move = agent.get_move(env.current_state())
     env.do_move(move)
end loop

let score = env.get_score()
max!(score)


env 就是這個圍棋 也就是 GameState
agent 就是player,自己實現算法來玩游戲
get_move 表示根據當前游戲局面,返回勝率最大的action
將 move 設置到 gamestate,更新 state
重複這個過程
得到state最後的結果,贏或者輸!
重複n次,希望贏的次數最多



明天寫下train,也就是反向過程!


這個是比較原始的的AlphaGO
我自己看的是 AlphaGoZero ...
霏艺Faye 图书管理员
直接從 ai.py 的class MCTSPlayer(object): 的 def get_move(self, state): 開始讀起

move = self.mcts.get_move(state)

mcts.get_move内部實現
    先執行 _playout 函數 _n_playout 【100】遍 ,得到一棵樹Tree
    返回 Tree的 孩子裏 _n_visits 訪問次數 最多的孩子

def _playout(self, state, leaf_depth): 内部實現
    根據 _policy 函數 ,先下 leaf_depth【40】步棋
    得到一顆新樹
    通過_value 函數 ,得到當前的勝率
    通過 _evaluate_rollout 函數 再下 _rollout_limit 【500】步棋,得到勝率
    通過加權平均 ,默認 0.5, 求得新的葉子節點權重
    根據leaf_value 更新 tree 【c_puct = 5】


MCTS重點:
1. expand
2. select
3. update


明天的工作:
講解 MCTS 的上面 3個過程
講解 policy, value , rollout 3個網絡在幹嘛 ,前向過程

後天的工作:
講解 train的代碼,反向過程
中國標題黨解說

要发言请先登录注册

要发言请先登录注册