第二周 搜索求解(课时3:蒙特卡洛树搜索)

431 阅读7分钟

一、蒙特卡洛树搜索定义

蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)是一种用于决策过程的启发式搜索算法,它结合了随机抽样(蒙特卡洛方法)与树形结构的搜索策略。MCTS 特别适用于具有高复杂度的决策过程,如棋类游戏(例如围棋和国际象棋)、多臂老虎机问题和其他一些具有大量可能状态空间的问题。

  • 属于启发式式搜索,随机抽样+树形结构
  • 适合具有高度复杂度的,也就是策略分支很多的场景,棋局万千,这就是为什么适合围棋的原因

补充说明:蒙特卡洛方法
蒙特卡洛方法是一种基于概率和统计理论的数值计算方法,它通过使用随机抽样和模拟来解决问题。这种方法适用于各种问题,特别是在那些无法通过解析方法求解或者解析方法过于复杂的情形中。蒙特卡洛方法的核心思想是利用大量的随机样本来估计一个问题的解,通常是求解一个积分、一个概率或者某个数学期望。

  1. 定义问题和模型:首先,需要明确要解决的问题,并建立一个数学模型来描述这个问题。这个模型应该能够通过随机抽样来进行模拟。
  2. 生成随机样本:根据模型生成一组随机样本。这些样本可以是随机数,也可以是通过某种随机过程生成的数据点。
  3. 执行模拟:对每个随机样本运行模拟或实验,以观察模型的输出或结果。这个过程中,模拟的目的是为了收集足够的信息来估计问题的解。
  4. 分析结果:收集模拟的结果,并使用统计方法来估计问题的解决方案。例如,可以通过计算样本的平均值、中位数、方差或其他统计量来估计某个参数的值。

蒙特卡洛方法的优势在于它的简单性和灵活性。它可以应用于各种类型的问题,尤其是那些具有随机性或不确定性因素的问题。此外,蒙特卡洛方法通常可以很容易地并行化,这意味着可以使用多个处理器或计算机同时运行模拟,从而加快计算速度。

蒙特卡洛方法的局限性在于它通常需要大量的随机样本才能得到精确的结果,这意味着计算成本可能会很高。此外,由于结果是基于随机抽样得出的,因此它们通常包含一定的随机误差。尽管如此,蒙特卡洛方法仍然是一种非常实用的工具,特别是在其他方法难以应用时。


二、蒙特卡洛树搜索基本步骤

蒙特卡洛规划(MCTS)的基本步骤可以用简单易懂的语言来解释,就像是在玩一个游戏并尝试找到赢得游戏的最佳策略。

选择(Selection):想象你在树形游戏图上移动,从根节点开始,选择一条路走。你根据路标(比如胜利的次数)来决定走哪条路。如果你到了一个十字路口(节点),有些路(子节点)你以前走过,而有些路你从没走过,你会选择一个你觉得可能会赢的路继续走。
扩展(Expansion):如果你走到了一个地方,还有新的路可以探索,你就选择一条新路继续前进。这样做是为了探索新的可能性,看看会不会有更好的结果。
模拟(Simulation):现在,你沿着新路走,不再看路标,而是随机选择每一步。你一直走到游戏结束,看看最后是赢了还是输了。
回溯(Backpropagation):回到你开始探索新路的地方,根据这次游戏的输赢更新路标。 如果你赢了,你会在那些路上标记一个胜利;如果你输了,则不标记。这样,下次有人来到这个十字路口时,他们可以根据这些信息选择最有利的路走。

重复这个过程很多次,每走一次都会更新路标,最终你会找到一条最可能通向胜利的路。这 就是蒙特卡洛规划的核心思想:通过不断尝试和更新信息来找到最好的策略。


三、悔值函数

image.png

  • X(It,t):指的是在第t次摇动了It号赌博机,如果赌博机数量为k,那么It∈{1,2,...,k}
  • Rn:是悔值函数,悔值函数是基于假设的,假设知道每一次的最好的奖励值(实际中不可能预知最好的情况),每次最好的奖励值和当初操作实际的奖励值的差值就是悔值函数,当然是越小越好了

四、上限置信区间 (Upper Confidence Bound, UCB)

image.png

  1. 探索-利用:基于过去,展望未来,任何决策如果只看过去的结果都是不明智的,也要考虑未来可能出现的情况,以多臂赌博机为例,过去一直奖励高的未来就一定会高吗,常玩的人知道,输多了会赢,赢多了会输(比如王者的匹配机制,在很多游戏厅里的机器其实也是这样设置的),所以常常未尝试的那些赌博机会带来更大的收益率
  2. 解释上图的公式,假设当前是第t次操作,那么之前操作了t-1次,所以公式左侧是前t-1次的奖励均值,右侧是探索的因子,第二个公式是计算方式,这边笔者暂时也不知道为什么是这样设定的

image.png 3. 上面的公式实际上对于未来可用的赌博机都需要计算一次对应的UCB,比较出UCB值最大的进行选用

思考一个问题:如果一个赌博机从未被使用过,那么X为0,会导致UCB的值较小,如何解决?
不过可以考虑到,其实每次赌博机除了奖励值,也会有花费的钱,所以使用过的赌博机的X甚至可能是负数,即使不考虑花费,如果合理的调节系数C的大小,也可以解决这个疑问


五、两种策略学习机制:

  • 搜索树策略: 从已有的搜索树中选择或创建一个叶子结点(即蒙特卡洛中选择和拓展两个步骤).搜索树策略需要在利用和探索之间保持平衡。=>选择、扩展

  • 模拟策略:从非叶子结点出发模拟游戏,得到游戏仿真结果。=>模拟、回溯


六、举例分析

image.png 说明:图中A/B这种数字,A表示当前落子下黑子获胜的次数,B表示当前落子位置(又称当前局面)的试验总次数,简而言之就是在B次当前位置,黑子胜利A次
该图很好的展示了蒙特卡洛树搜索的四个步骤,接下来进行逐步分析

  • 步骤一:选择(图中树一)
  1. 710\frac {7}{10}对应的局面奖励值:710\frac {7}{10}+log2110\surd \frac {log21}{10} = 1.252
  2. 58\frac {5}{8}对应的局面奖励值:58\frac {5}{8}+log218\surd \frac {log21}{8} = 1.243
  3. 03\frac {0}{3}对应的局面奖励值:03\frac {0}{3}+log213\surd \frac {log21}{3} = 1.007
    所以以黑子的视角来说,会选择局面7/10进行落子,之后由白子进行行棋
  4. 24\frac {2}{4}对应的局面奖励值:1 - 24\frac {2}{4}+log104\surd \frac {log10}{4} = 1.26
  5. 56\frac {5}{6}对应的局面奖励值:1 - 56\frac {5}{6}+log106\surd \frac {log10}{6} = 0.786
    所以以白子的视角来说,会选择局面2/4进行落子,之后由黑子进行行棋
  6. 03\frac {0}{3}对应的局面奖励值:13\frac {1}{3}+log43\surd \frac {log4}{3} = 1.01
  7. 11\frac {1}{1}对应的局面奖励值:11\frac {1}{1}+log41\surd \frac {log4}{1} = 2.18
    所以以白子的视角来说,会选择局面1/1进行落子,之后由黑子进行行棋
  • 步骤二:扩展(图中树二) 随机扩展一个新节点(实际上在1/3下扩展也可以,但是本例选择在1/1下扩展),新扩展的节点未被访问过,所以为0/0
  • 步骤三:模拟(图中树三) 假设刚才的扩展节点后白棋获胜,那么0/0可以更新为0/1,要明确这里前面的数字表示黑子胜利次数,所以是0/1而不是1/1
  • 步骤四:回溯(图中树四) 从扩展节点向上回溯到根节点12/21,回溯路径上所有节点的分母都需要+1,分子不变(还是同一个道理,分子表示黑子获胜次数,无需改变)

七、蒙特卡洛树搜索算法 (Upper Confidence Bounds on Trees , UCT)

image.png