【电影】我想吃掉你的胰脏
动画的解说。。。在B站,YouTube上没有。。。
我只能转一个真人版了
我只能转一个真人版了
3 个评论
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 ...
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 ...
直接從 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的代碼,反向過程
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的代碼,反向過程
中國標題黨解說