首页 > 其他分享 >The Second Type of Uncertainty in Monte Carlo Tree Search

The Second Type of Uncertainty in Monte Carlo Tree Search

时间:2023-04-20 23:22:22浏览次数:34  
标签:Monte 子树 访问 Uncertainty value 次数 uncertainty Type MCTS


发表时间:2020
文章要点:MCTS里通常通过计算访问次数来做探索,这个被称作count-derived uncertainty。这篇文章提出了第二种uncertainty,这种uncertainty来源于子树的大小,一个直觉的想法就是,如果一个动作对应下的子树小,那就不用探索那么多次,反之如果子树大,那就应该多探索探索。作者提出了MCTS-T和MCTS-T+算法,在树里添加度量子树大小的估计(estimate of the size of the subtree below an action),在稀疏回报的场景以及有loop的场景下取得了很好的效果。
具体的,作者定义每个状态的uncertainty \(\sigma_{\tau}(s) \in [0,1]\),其中1表示这个状态下的子树完全没探索过,0表征这个子树已经被探索完全了。所以在初始化的时候,只有终结状态被设置为0,其他状态都被设置为1

然后更新的公式也是通过计算访问次数然后根据backup的uncertainty来算平均值

然后select的公式就变成

这个uncertainty以乘积的形式放到exploration那一项上。
另外一个需要注意的问题是,如果一个很大的子树的value都很差,但是因为uncertainty很大,那么访问次数就会很多,这样就会导致value更新不准,所以value的更新不能依据这个访问次数去做。作者的做法是依然保留一个和原版MCTS一样的访问次数的计算,就是如果新的select公式选择的动作和原版MCTS选择的动作一样,就算一次访问次数

然后用这个访问次数去更新value

另外一个需要解决的问题是Loops,也就是说在一次搜索中,search可能在几个动作之间来回横条,这就导致这个树变的平衡了,但是其实都是在相同几个状态之间来回跳,其实相当于没用

作者的做法也很直接,就是在一次搜索中,如果在后面的节点遇到了之前相同的状态,就把这个地方的uncertainty设置为0,那么就会避免相同状态反复横跳了。如果状态空间太大,还可以设置阈值来做近似的判断

而且注意这个方式是MCTS的扩展,如果没到terminal状态,所有的select,backup就和MCTS完全一样。
总结:很有意思的想法,感觉是不是可以试试结合到神经网络上面去。另外,目前做的还是确定性转移的情形。
疑问:如果有随机转移,会不会错误block掉很多loops?
另外如果一个游戏就是反复横跳得分最高,是不是效果也会差一点?

标签:Monte,子树,访问,Uncertainty,value,次数,uncertainty,Type,MCTS
From: https://www.cnblogs.com/initial-h/p/17338749.html

相关文章

  • 关于项目组件打包时遇到 `Uncaught TypeError: Cannot read property 'toLowerCase' o
    在全局注册组件时采用遍历组件池的方法时 每个组件都应该具备name属性 否则会出现UncaughtTypeError:Cannotreadproperty'toLowerCase'ofundefined  ......
  • 关于报错:Error adding module to project: setSdk: sdk '1.8' type 'JavaSDK' is not
    问题描述:Erroraddingmoduletoproject:setSdk:sdk'1.8'type'JavaSDK'isnotregisteredinProjectJdkTable(图片来自贴吧,看到有一个人问这个问题,然后自己碰到了但是忘了截图)说明当前项目在“ProjectJdkTable”里面是没有配置sdk1.8的。百度翻译过来就是:未在Project......
  • how to inject <class> type in spring
      sample:ClassitemClass;publicClassgetItemClass(){returnitemClass}publicvoidsetItemClass(ClassitemClass){this.itemClass=itemClass;} NowinjectitemClasspropertyinspring:<beanid="shampoo"class="com.test.Product&......
  • 【MathType】word2016数学公式编号
    问题毕业论文排版中,对数学公式需要类似(3-1)的格式。解决技巧在写论文初稿的时候,先不要于公式的编号,先给它编一个号,比如(3)(2)(4)的。最后写完了以后,再再添加section,同意修改编号格式为(章-公式序号)可以先修改mathtype章节的样式为不隐藏,这样方便添加。添加完math......
  • TypeError: super(type, obj): obj must be an instance or subtype of type这个问题
    TypeError:super(type,obj):objmustbeaninstanceorsubtypeoftype这个问题怎么处理?这个错误通常发生在使用super()函数时,第二个参数不是第一个参数的实例或子类型。在使用super()函数时,第一个参数应该是当前子类的类对象,而第二个参数应该是当前子类的实例。如果第......
  • ts报错:Property '$xxx' does not exist on type
    问题在catch中统一处理异常信息,就想着写到一个函数里面,然后需要用到的地方自行调用就可以。一般两种方法,要不通过mixin,要不绑定到vue的prototype上面。这里采用的是后者。在以前没引入ts之前,是那么简单的一件事情。//先绑定Vue.prototype.$catchRequestError=function(......
  • taro3 报错 TypeError: className.split is not a function
    项目原来跑的好好的,昨天升级了几个包,引用了个UI库,然后今天上班运行项目就跑不起来了,项目是在旧的项目上升级的之前的写法<Viewkey={idx}className={["tabbar-item",isActive&&"active"]}onClick={this.switchTab.bind(this,item.key)}>{......
  • 16 Ray Tracing (Monte Carlo Path Tracing)
    关键点MonteCarloIntegrationDistributedRayTracingPathTracingRussianRoulette(RR)SamplingtheLight(puremath)1.MonteCarloIntegration蒙特卡洛积分对于没有解析式的对象,可以使用该方法求其定积分。在积分范围内随机采样一个值,作为高,使用区间长度作为宽,......
  • 关于typescript引入第三方js文件
    一、通过require方法1.1.安装@types/node并在tsconfig.json配置,如下图所示。npmi@types/node1.2.在ts或vue中引入constvc:any=require('@/libs/VCtrl.js') 二、通过declare定义,然后import导入。2.1.在src目录下创建shims.d.ts文件。declaremodu......
  • Unable to create an object of type 'NetcoremvcDbcontext'. For the different patt
    问题描述:我整个项目重新生成没有报错,但是用efcore迁移数据库命令:Add-Migrationinit就生成不了文件夹Migrations,并且报错:Unabletocreateanobjectoftype'NetcoremvcDbcontext'.Forthedifferentpatternssupportedatdesigntime,seehttps://go.microsoft.com/fwlink/......