算法来源文章《Bandit based Monte-Carlo Planning》,06年的ECML。建议想做游戏人机玩家的同学看看。相关的算法还有最大最小算法,alpha-beta算法等,而这些算法普遍存在不收敛,和应对超大搜索空间不足的问题。

1.多臂老虎机

多臂老虎机问题,简单来说,我有很多个老虎机,虽然都是老虎机但它们的中奖率采取的是不同的概率分布,现在我希望在有限次的摇臂过程中,获得最大的收益,我该怎么做呢?
最简单的想法肯定是,我对每一个老虎机都摇N次,根据大数定律,频率最终会等于概率。然后我就一个劲的去摇那个中奖概率最高的老虎机不就行了吗?
想法很好,但是实际上不可能给你那么多机会。那么多臂老虎机,本质上就是,在一个解空间中搜索最优解的过程,我们要找到一组选择序列,这个序列可以让我们收益最大化。

Monte-Carlo Planning

蒙特卡洛的算法有很多,最熟悉的恐怕就是通过正方形内切圆,根据采样去计算π。蒙特卡洛算法有一个特点,就是抽样(或者说搜索)越多,那么我们获得最优解的可能性就越高。
以下就是蒙特卡洛搜索算法的伪代码。

我们可以看到,这种搜索算法本质上就是启发式搜索,一种沿着子节点递归的一个过程。
1.在实际运行中,若子节点非常多的时候,它会采取一种选择策略(均匀采样)从所有可能的actions(因为action非常多,所以不能一一遍历,只能选择部分)中,选出部分candidate actions。
2.在candidate actions中,为了选出能带来最大收益的action,它必须对action进行一个一一评估的过程,即求 R e w a r d ( v i ) Reward(v_i) Reward(vi​)。
3.但是求 R e w a r d ( v i ) Reward(v_i) Reward(vi​),不是仅仅只考虑当前所选择的action,还要考虑选择了这个action之后,当前的state会到一个什么样的新状态,这个新状态又会带给我们多大的未来收益呢?
4.选择一个能够给我们带来未来最大收益即红利(ps:不是当前最大收益)的action,作为我们的最终选择。然后递归1~4的步骤。

首先,如果这里我们选择了当前最大收益的action作为我们下一步的话。这个搜索算法就退化为了贪心的算法,首先贪心的算法很容易早熟,而且不容易求的最优解。而蒙特卡洛法呢,通俗来说,就是我们下棋过程中的一步看三招,启发因子是action未来可以带给我们的最大收益。而伪代码中的depth就可以理解为,这个未来是有多远,depth越深看的越远,但是算法复杂度也指数上升。
这个搜索算法因此完全符合蒙特卡洛性质,通过随机地,递归地选择candidate action,来找到最大红利,来获取近似的最优解

UCT

UCT是一个基于UCB和蒙特卡洛的改进版本的搜索算法。
蒙特卡洛搜索选择下一个臂,存在的问题

  1. 选择下一个臂,只基于当前臂的评估表现,而不考虑之前此臂的表现,和这个臂被拉的次数
  2. 蒙特卡洛搜索,面对臂数特别多的情况下,搜索具有很强的随机性
  3. 蒙特卡洛搜索不使用超参,这意味着我们不能给模型一个先验条件。
    此外还有一点,蒙特卡洛算法在选择candidate actions,是随机挑选的
    挑选的节点服从均匀分布,所以说蒙特卡洛在选择candidate actions集合的时候,具有很强的随机性。而当action非常多的时候,少量的actions中很难找到更优的解。

UCT的改进之处:

  1. 选择下一个臂:
    I t = arg ⁡ max ⁡ i ∈ { 1 , . . . , k } { X ˉ i , T i ( t − 1 ) + c t − 1 , T i ( t − 1 ) } I_t = \mathop{\arg\max_{i\in\{1,...,k\}}}\{{\bar{X}_{i,T_i(t-1)} + c_{t-1,T_i(t-1)}}\} It​=argi∈{1,...,k}max​{Xˉi,Ti​(t−1)​+ct−1,Ti​(t−1)​}
    这里 X ˉ i , T i ( t − 1 ) \bar{X}_{i,T_i(t-1)} Xˉi,Ti​(t−1)​是过去i这个臂带来的平均红利,如此我们可以参考此臂之前的表现,而不是当前此臂的带来红利。除此之外,我们只需要选一个臂,而不是以前的candidate actions集合。这在应对大规模搜索的时候,非常有效。
  2. c t , s = 2 C p ln ⁡ t s c_{t,s}=2C_p\sqrt{\frac{\ln t}{s}} ct,s​=2Cp​slnt​ ​
    这里 C p C_p Cp​是一个超参,可以是我们在exploitexplore之间进行调整,如果设为0,此算法直接退化为一个贪心算法,贪心度量为过去平均表现最好的臂,如此会很快收敛,而且也找不到更优解。其次 t t t和 s s s分别代表,臂i被选中的次数,和一共选臂的总数。即臂i在过去被选中的次数越多 c t , s c_{t,s} ct,s​越小。
    P ( X i s ˉ ≥ μ i + c t , s ) ≤ t − 4 \mathbb{\Rho}(\bar{X_{is}}\ge\mu_i+c_{t,s})\le t^{-4} P(Xis​ˉ​≥μi​+ct,s​)≤t−4
    P ( X i s ˉ ≤ μ i + c t , s ) ≥ t − 4 \mathbb{\Rho}(\bar{X_{is}}\le\mu_i+c_{t,s})\ge t^{-4} P(Xis​ˉ​≤μi​+ct,s​)≥t−4
    至此我们可以看到 X ˉ i , T i ( t − 1 ) + c t − 1 , T i ( t − 1 ) \bar{X}_{i,T_i(t-1)} + c_{t-1,T_i(t-1)} Xˉi,Ti​(t−1)​+ct−1,Ti​(t−1)​计算的就是一个 X ˉ \bar{X} Xˉ的最大上限区间。如若臂i在过去被选中的次数多,则我们对 X ˉ \bar{X} Xˉ比较确信,所以置信区间窄,所以最大置信度区间上限相对小。如若臂i在过去被选中的次数少,则我们对 X ˉ \bar{X} Xˉ不确信,所以置信区间宽,所以最大置信度区间上限相对大,更容易选中。所以UCT算法给予过去表现不好的臂,一定几率翻身的机会。
  3. UCT 改进之后的特点:
    1. 综合考虑了过去的拉臂带来的影响。比如,过去拉臂次数多且收益多的臂,置信度上限区间会很大,很容易被再次选中。
    2. 通过Cp超参数,可以调整模型在“探索”和“采用”之间的平衡,避免模型早熟。
    3. 比起蒙特卡洛搜索算法,只用搜一个节点的子空间,不用再搜索其它节点的子空间,搜索效率上获得了很大的提高。
      UCT 实验结果:
      UCT可以在更快的迭代次数内收敛到目标错误率,而MMMC,和MC不能收敛。

上限置信度区间算法(UCT)相关推荐

  1. 威尔逊置信区间 php,排序之威尔逊区间算法

    威尔逊排序算法在实际运用中,使用的比较多,目前像贴吧.知乎的评论等排序等都用到此算法,自己在实践中用的比较多的地方就是对酒店排序,下面就介绍本公众号的第一篇文章! 威尔逊区间迄今为止,这个系列都在讨论 ...

  2. STL区间成员函数及区间算法总结

    STL区间成员函数及区间算法总结 在这里总结下可替代循环的区间成员函数和区间算法: 相比单元素遍历操作,使用区间成员函数的优势在于: 1)更少的函数调用 2)更少的元素移动 3)更少的内存分配 在区间 ...

  3. 求解多变量非线性全局最优解_约束条件下多变量非线性函数的区间算法.doc

    约束条件下多变量非线性函数的区间算法.doc 一种求解约束条件下多变量非线性函数所有全局最优解的区间算法李爽,许才军,王新洲(武汉大学测绘学院,湖北,武汉,430079)摘要研究和实践中经常会遇到附有 ...

  4. 基于Python根据置信度区间计算植被覆盖度

    "把别人的经验变成自己的,他的本事就大了" 1 简述 大概九天前,我发了篇记录,大致是讲用Python计算Landsat8遥感生态指数RSEI,也就是下篇 "基于Pyth ...

  5. 置信度和置信度区间理解

    置信度区间 相当于 样本的误差范围. 置信度 就是 真实平均值 落在置信度区间的概率. http://www.360doc.com/content/18/0317/16/15033922_737796 ...

  6. 置信度传播算法(Belief Propagation)

    基础知识 条件概率(Conditional Probability) 相互独立时,p(A | B) = p(A) 贝叶斯规则 贝叶斯网络(Bayesian Network)定了一个独立的结构:一个节点 ...

  7. 求解多变量非线性全局最优解_一种求解约束条件下多变量非线性函数所有全局最优解的区间算法...

    收稿日期: 20021120 基金项目: 国家自然科学基金项目(49904001) ;高等学校骨干教师资助计划资助(2123) 作者简介: 李 爽(19712) ,女 ,博士生 ,现从事大地测量地球物 ...

  8. mysql区间算法_「五大常用算法」一文图解分治算法和思想

    前言 分治算法(divide and conquer)是五大常用算法(分治算法.动态规划算法.贪心算法.回溯法.分治界限法)之一,很多人在平时学习中可能只是知道分治算法,但是可能并没有系统的学习分治算 ...

  9. Stereo Matching文献笔记之(六):浅谈置信度传播算法(Belief-Propagation)在立体匹配中的应用~

    这是我一个纠结过的问题,曾经反反复复的看相关的知识,Belief-Propagation是一个伴随着"马尔科夫随机场"提出的优化算法,我对优化算法情有独钟,一直觉得搞定了各种优化, ...

最新文章

  1. 网络服务器开发总结(转:http://my.oschina.net/u/181613/blog/596022)
  2. 如何降低SQL语句复杂度
  3. 聚集索引和非聚集索引的区别_武汉无疫情小区居民可在小区内非聚集性个人活动...
  4. 高级Linux程序设计第五章:进程间通信
  5. LeetCode 85. 最大矩形(DP/单调递增栈,难)
  6. HDU5688 Problem D【字符串排序+MAP】
  7. plsql日期转换错ORA-01830
  8. 复杂数组类型的深拷贝
  9. Linux深度系统卡在开机界面,deepin开机卡死在logo页面解决方案
  10. 计算机房设计规范2008,GB50174-2008 电子计算机机房设计规范
  11. 未来五年你永远不会忘记的最佳GameCube仿真器
  12. java调试报告_java,生成测试报告.docx
  13. 重磅!各省市考研网上确认(现场确认)时间一览
  14. SO SOIC TSOP TSSOP 封装
  15. linux下用户名怎么修改密码,LINUX用户名密码忘记怎么修改用户密码
  16. 洛谷 P1645 序列 贪心
  17. freemaker导出excel文件使用Excel打不开
  18. 【现代简约风格装修案例】诠释不一样的简单 !
  19. 浏览器兼容性笔记(转)
  20. JRE JDK是什么?

热门文章

  1. 清华史上最酷炫女生节福利来袭!女神,与我同乘无人车可好?
  2. H5 中div标签及其属性
  3. PhotoShop算法原理解析系列 - 风格化---》查找边缘
  4. UART UVM验证平台平台搭建总结
  5. MybatisPlus 之 插件
  6. 学习笔记(21):第一章: 路由与模板-Web前端技术与框架
  7. 将计算机与局域网互连学,局域网互连
  8. 怎么把文本内容转换成语音?教你两招快速搞定
  9. Linux防火墙策略阻止漏扫
  10. 多看一眼多进步,python入门到放弃