21、棋盘游戏中的深度学习与强化学习

棋盘游戏中的深度学习与强化学习

1. MCTS - UCT 算法

在完成一次蒙特卡罗树搜索(MCTS)的展开后,需要根据结果更新统计信息。展开路径(rollout_path)包含了要更新的每个节点的棋盘状态和玩家信息,需要遍历其中的每个条目。游戏结果在 -1 到 1 之间,但 UCB1 算法要求回报在 0 到 1 之间,通过 result * path_side / 2 + 0.5 进行转换。同时,还需根据玩家信息转换结果。

选择最佳移动的代码如下:

move_states = {move: apply_move(board_state, move, side) for move in available_moves(board_state)}
move = max(move_states, key=lambda x: state_results[move_states[x]] / state_samples[move_states[x]])
return state_results[move_states[move]] / state_samples[move_states[move]], move

当完成所需次数的展开后,可根据最佳预期回报从当前状态选择最佳移动。此时无需再使用 UCB1 选择最佳移动,因为这是最终决策,额外的探索没有价值,最佳移动就是具有最佳平均回报的移动。

这就是 MCTS - UCT 算法,它有许多不同的变体,适用于不同的特定情况,但核心逻辑相同。MCTS - UCT 为评估具有巨大搜索空间的游戏(如围棋)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值