【人工智能Alphago背后的秘密】全网最全面的蒙特卡洛树搜索算法讲解:系统、简洁、易懂!

本文力求做到系统、准确、简洁、易懂的讲解蒙特卡洛搜索树算法,为此参考了大量资料和文章。

前言

人工智能Alphago,成为最顶尖的围棋大师,不由得让人产生探索它背后的算法的兴趣。

在搜索空间巨大的围棋问题中,Alphago是通过什么算法能在较短的时间搜索每一个局面的(近似)最优解?

Alphago使用的算法如下:

  • 蒙特卡洛树搜索
  • 残余卷积神经网络 - 用于游戏评估和移动先验概率估计的策略和价值网络
  • 用于通过自我游戏训练网络的强化学习

蒙特卡洛树搜索的适用范围

蒙特卡洛树搜索算法本质上是一种启发式搜索算法。

通过蒙特卡洛方法设计出较为准确的估价函数,使得问题在仅需迭代较少的次数就能得出(近似)最优解。

通常,在博弈问题中可以采用蒙特卡洛数搜索。

对于以下情况特别适用:

  • 搜索空间特别大。
  • 难以采用传统方法(如:dp,贪心)直接设计出特别通用的估价函数(比如围棋)。

蒙特卡洛树搜索的作用

要先明确算法有什么作用:

蒙特卡洛树算法用于求当前局面如何决策是最优的。

在围棋中,每次再对手走完一步新局面产生的时候,都要重新运行蒙特卡洛树算法找出面对当前局面自己的最优解。

算法流程

前置:蒙特卡洛方法

用途:评估当前局面选取哪个决策最优

以围棋为例,难以直接用传统的dp,贪心等方法设计出估价函数。

这时可以采用蒙特卡洛方法:

对于每个局面,随机轮流走棋,直到最后定出胜负。

在随机走大量次数的时候,取获胜次数最多的。

这时一个正确性难以保证的伪算法:

对于某个局面的某步决策,如果对方有几乎所有情况都将处于劣势,但是只要有一种情况必胜,那么这样的决策是绝对不可能采取的。

但是直接采用上面的蒙特卡洛方法恰恰容易采取这样的决策,因为这种决策胜率特别高。


流程

算法的设计思路:

类似人的下棋思维,在考虑

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-12 15:20:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-12 15:20:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-12 15:20:01       87 阅读
  4. Python语言-面向对象

    2024-02-12 15:20:01       96 阅读

热门阅读

  1. Oracle恢复数据库某张表某一时刻的数据

    2024-02-12 15:20:01       49 阅读
  2. 这条路那么远

    2024-02-12 15:20:01       47 阅读
  3. python udp端口范围映射转发

    2024-02-12 15:20:01       55 阅读
  4. 课时21:内置变量_脚本相关

    2024-02-12 15:20:01       46 阅读
  5. SQl 注入 - 利用报错函数updatexml及extracevalue

    2024-02-12 15:20:01       56 阅读