当前位置:首页 » 操作系统 » uct算法

uct算法

发布时间: 2023-07-04 03:45:14

Ⅰ uct算法和蒙特卡洛算法的区别

他们有类似之处,但差别也不校 蒙特卡洛算法是数值计算方法,原理是利用随机数来解决计算问题。与它对应的是确定性算法。也就是说该种算法属于随机算法,得到的解是近似解。 而遗传算法、粒子群、模拟退火虽然也是随机近似算法,但这三种都是仿...

Ⅱ |阿尔法核心技术

一、 AlphaGo的两大核心技术
MCTS(Monte Carlo Tree Search)
MCTS之于围棋就像Alpha-Beta搜索之于象棋,是核心的算法,而比赛时的搜索速度至关重要。就像深蓝当年战胜时,超级计算机的运算速度是制胜的关键因素之一。

MCTS的4个步骤:Selection,Expansion,Evaluation(rollout)和Backup
MCTS的并行搜索:
(1) Leaf Parallelisation

简单的是Leaf Parallelisation,一个叶子用多个线程进行多次Simulation,完全不改变之前的算法,把原来的一次
Simulation的统计量用多次来代替,这样理论上应该准确不少。但这种并行的问题是需要等待最慢的那个结束才能更新统计量;而且搜索的路径数没有增
多。
(2) Root Parallelisation
多个线程各自搜索各自的UCT树,最后投票
(3) Tree Parallelisation
这是真正的并行搜索,用多个线程同时搜索UCT树。当然统计量的更新需要考虑多线程的问题,比如要加锁。

外一个问题就是多个线程很可能同时走一样的路径(因为大家都选择目前看起来Promising的孩子),一种方法就是临时的修改
virtual loss,比如线程1在搜索孩子a,那么就给它的Q(v)减一个很大的数,这样其它线程就不太可能选择它了。当然线程1搜索完了之后要记
得改回来。
《A Lock-free Multithreaded Monte-Carlo Tree Search Algorithm》使用了一种lock-free的算法,这种方法比加锁的方法要快很多,AlphaGo也用了这个方法。
Segal
研究了为什么多机的MCTS算法很难,并且实验得出结论使用virtual loss的多线程版本能比较完美的scale到64个线程(当然这是单机一个
进程的多线程程序)。AlphaGo的Rollout是用CPU集群来加速的,但是其它的三个步骤是在一台机器完成的,这个就是最大的瓶颈。

Ⅲ 求UCT算法伪代码【类c或者纯汉语或者纯英语】,详细明白就可以,谢谢~~

MoGo计算机围棋程序使用的UCT算法的伪代码
function playOneSequence(rootNode)
node[0] := rootNode; i := 0;
do
node[i+1] := descendByUCB1(node[i]);
i := i+1;
while node[i] is not first visited;
createNode(node[i]);
node[i].value := getValueByMC(node[i]);
updateValue(node,-node[i].value);
end function;
摘自徐心和教授的<计算机围棋博弈的最新发展>

uct的文章去google学术搜索搜国外的,围棋(Go)方向的有很多

热点内容
配置试剂的瓶子如何灭菌 发布:2025-03-19 11:07:16 浏览:599
c语言编译生成文件 发布:2025-03-19 11:06:00 浏览:890
androidlistview列表 发布:2025-03-19 10:58:23 浏览:611
解压费是什么合同 发布:2025-03-19 10:53:32 浏览:39
java经典程序100例 发布:2025-03-19 10:52:46 浏览:524
php保留小数点后两位 发布:2025-03-19 10:47:47 浏览:428
c语言long是什么意思 发布:2025-03-19 10:47:10 浏览:899
离散数学编程 发布:2025-03-19 10:46:23 浏览:456
轿车买哪个配置的 发布:2025-03-19 10:46:22 浏览:844
linux打包目录 发布:2025-03-19 10:39:02 浏览:208