强化学习——不完全观测问题、MCTS
文章目录
- 前言
- 不完全观测问题
- MCTS
- 选择
- 扩展
- 模拟
- 回溯
- 决策
- 价值网络与策略网络的训练
- AlphaGo
- AlphaGo Zero
前言
本文的知识点总结自《深度学习强化学习》,如有错误,欢迎指出
不完全观测问题
前面几篇博客介绍的强化学习算法,智能体都可以从环境中获知总体状态,类似于MOBA类游戏的观战系统,可以观测到地图上双方的动向。然而在某些场景下,智能体只能从环境中获知局部状态,例如王者荣耀中,视野机制导致每位玩家仅能看到整个地图中的一小部分状态。
设ttt时刻智能体观测到的状态为oto_tot,我们可以仅依据oto_tot让策略网络做出决策,但这么做效果通常不佳。一个更好的策略是让策略网络依据过去ttt个时刻观测到的状态进行预测,即策略网络的输入为[o1、o2、...、ot][o_1、o_2、...、o_t][o1、o2、...、ot]这一序列。可以使用RNN、LSTM、Transformer等模型处理此类序列化数据。
如上图所示,以RNN为例,观测到nnn时刻的状态ono_non时,将序列[o1、o2、...、on][o_1、o_2、...、o_n][o1、o2、...、on]输入到nnn个CNN中,nnn个CNN的输出在经过RNN的处理,RNN的第nnn个输出输入到全连接网络中,全连接网络的输出智能体执行每个动作的概率
MCTS
MCTS(蒙特卡洛树搜索)是强化学习中一个很重要的方法,被应用于包括Alpha Go、Alpha Go Zero在内的诸多强化学习算法。MCTS的基本原理就是模拟未来可能发生的情况,从而找出最优的动作,可以看成是有智慧的枚举,这也意味着MCTS会消耗大量算力。
MCTS每次模拟都会选择一个动作,执行完这个动作后,把一局游戏进行到底,依据胜负来评价该动作的好坏。MCTS包括选择(Selection)、扩展(expansion)、模拟(Simulation)、回溯(Backup)四个步骤。值得一提的是,策略网络和价值网络会辅助MCTS的计算,在进行MCTS前,需要提前训练好策略网络与价值网络。
选择
假设动作空间中存在nnn个动作,MCTS的“选择”步骤就是选出其中胜算较高的动作,其通过模拟计算出的动作价值以及策略网络π(a∣s;θ)\pi(a|s;\theta)π(a∣s;θ)给出的动作评分(概率值)来评估动作aaa的好坏。具体而言,其通过下式评价一个动作的好坏:
score(a)=Q(a)+α1+N(a)π(a∣s;θ)(1.0)score(a)=Q(a)+\frac{\alpha}{1+N(a)}\pi(a|s;\theta)\tag{1.0} score(a)=Q(a)+1+N(a)απ(a∣s;θ)(1.0)
其中
- α\alphaα为超参数
- N(a)N(a)N(a)表示动作aaa被已经被选中的次数,初始阶段N(a)=0N(a)=0N(a)=0,动作aaa每被选择一次,N(a)+1N(a)+1N(a)+1
- Q(a)Q(a)Q(a)表示之前N(a)N(a)N(a)次模拟计算出的动作价值,主要由胜率和价值函数决定。动作aaa每被选中一次,就会更新一次Q(a)Q(a)Q(a)
当动作aaa没被选择过时,Q(a)Q(a)Q(a)和N(a)N(a)N(a)均为0,此时score(a)完全由策略网络决定。当动作aaa被选择的次数很多时,Q(a)Q(a)Q(a)对score(a)的影响会越来越大,即score(a)的取值更依赖于依据过去模拟计算出的动作价值(即实际情况,而不是策略网络的预测)。系数α1+N(a)\frac{\alpha}{1+N(a)}1+N(a)α的一个作用是鼓励MCTS选择历史执行次数较少的动作,假设两个动作具有类似的Q(a)Q(a)Q(a)和π(a∣s;θ)\pi(a|s;\theta)π(a∣s;θ),则N(a)N(a)N(a)较小的动作将被选中。
在选择阶段,MCTS选择式1.0取值最大的动作,让智能体在模拟器中执行该动作(不是实际场景)。
扩展
智能体在模拟器中执行完第一步“选择”中选中的动作后,通过扩展阶段模拟对手做出的下一步动作。MCTS可以通过提前训练好的策略网络π(a∣st;θ)\pi(a|s_t;\theta)π(a∣st;θ)模拟对手,根据策略网络的输出概率抽取动作。值得一提的是,MCTS在模拟器中执行完动作后,模拟器需要返回一个新的状态,因此模拟器需要模拟实际的状态转移函数。对于大多数问题,例如无人驾驶等,模拟实际的状态转移函数相当困难。但是对于MOBA类游戏、围棋等较为简单的问题,对手做出的动作后,棋盘、游戏对局的情况就是模拟器中的下一个状态,因此只需要训练一个足够模拟实际情况的策略网络即可模拟状态转移函数。
模拟
“选择”和“扩展”阶段,智能体本身和对手都选择了一个动作,并在模拟器中执行,得到新的状态st+1s_{t+1}st+1。而在模拟阶段,双方将通过提前训练好的两个策略网络模拟后续的对局情况,依据后续的对局情况计算状态st+1s_{t+1}st+1的价值。以围棋为例,AlphaGo在这个阶段将通过两个策略网络模拟对局,直到对局结束。如果己方获胜,那么奖励rrr的取值为1,反之则为-1。此外,AlphaGo引入了提前训练好的价值网络V(s;θ)V(s;\theta)V(s;θ),用于评价状态st+1s_{t+1}st+1的优劣。AlphaGo对状态st+1s_{t+1}st+1的评价v(st+1)v(s_{t+1})v(st+1)为:
v(st+1)=r+V(st+1;θ)2v(s_{t+1})=\frac{r+V(s_{t+1};\theta)}{2} v(st+1)=2r+V(st+1;θ)
由于依据策略网络输出的概率进行抽样,因此在状态st+1s_{t+1}st+1上每次模拟执行的动作可能有所不同。MCTS在状态st+1s_{t+1}st+1上的模拟将会进行多次,如下图所示,一个状态st+1s_{t+1}st+1含有多个评价。
回溯
依据上一节的内容,第ttt步执行的动作ata_tat下含有多个关于状态的记录,这些状态的平局值即为式1.0中的Q(a)Q(a)Q(a)。这个数值将用于下一轮迭代时计算式1.0(上述四个流程构成MCTS的一次迭代,MCTS会重复上述四个步骤多次)。
决策
在进行成千上万次迭代模拟后,MCTS选择在状态ttt时执行次数最多的动作,即a=arg maxaN(a)a=\argmax_a N(a)a=aargmaxN(a)。看完MCTS的原理后,不难理解为什么AlphaGo和AlphaGo Zero能赢人类,其实就是靠算力暴力碾压。
价值网络与策略网络的训练
前面提到过,MCTS需要使用提前训练好的价值网络和策略网络辅助。本小节将总结AlphaGo和AlphaGo Zero中训练两个网络的方式。
AlphaGo
AlphaGo训练策略网络的流程为
- 使用监督数据训练策略网络π(a∣s;θ)\pi(a|s;\theta)π(a∣s;θ)
- 设第一步完全训练完的策略网络为π(a∣s;θnow)\pi(a|s;\theta_{now})π(a∣s;θnow),随机选择一份训练时的策略网络π(a∣s:θold)\pi(a|s:\theta_{old})π(a∣s:θold)(参数固定)。让两个策略网络模拟对局,若π(a∣s;θnow)\pi(a|s;\theta_{now})π(a∣s;θnow)胜利,则回报uuu为1,否则为-1。接着使用REINFORCE更新策略网络π(a∣s;θnow)\pi(a|s;\theta_{now})π(a∣s;θnow)的参数,重复上述过程直至收敛。
依据上述过程,可得一系列的状态数组(st,ut)(s_t,u_t)(st,ut),利用上述数据,让价值网络v(s;θ)v(s;\theta)v(s;θ)进行监督学习,损失函数为MSE:
L(θ)=1N∑t=1N[v(st;θ)−ut]2L(\theta)=\frac{1}{N}\sum_{t=1}^N[v(s_t;\theta)-u_t]^2 L(θ)=N1t=1∑N[v(st;θ)−ut]2
AlphaGo Zero
AlphaGo Zero利用提前准备好的MCTS(例如AlphaGo)模拟两个玩家的对弈情况。基于当前的状态sts_tst,MCTS经过多次模拟后,可以得到nnn个动作的执行次数N(1)、N(2)、...、N(n)N(1)、N(2)、...、N(n)N(1)、N(2)、...、N(n),对其进行归一化得到ptp_tpt,即pt=normalize([N(1),N(2),...,N(n)])p_t=normalize([N(1),N(2),...,N(n)])pt=normalize([N(1),N(2),...,N(n)])
设MCTS模拟的两个玩家经过mmm个步骤后结束一次对局,可以分别得到两个玩家的一系列轨迹
(s1,p1,u1)、(s2,p2,u2)、...、(sm,pm,um)(s_1,p_1,u_1)、(s_2,p_2,u_2)、...、(s_m,p_m,u_m) (s1,p1,u1)、(s2,p2,u2)、...、(sm,pm,um)
对于胜者,回报u1=u2=...=um=1u_1=u_2=...=u_m=1u1=u2=...=um=1。对于败者,回报u1=u2=...=um=−1u_1=u_2=...=u_m=-1u1=u2=...=um=−1,利用上述数据更新策略网络和价值网络(注意对于胜者和败者,轨迹数据中的sss和ppp是不同的)
对于策略网络π(a∣st;θ)\pi(a|s_t;\theta)π(a∣st;θ),其使用监督学习训练,设H(x,y)为交叉熵损失,则损失函数为
L(θ)=1N∑i=1NH(pi,π(a∣si;θ))L(\theta)=\frac{1}{N}\sum_{i=1}^NH(p_i,\pi(a|s_i;\theta)) L(θ)=N1i=1∑NH(pi,π(a∣si;θ))
更新价值网络的方式与AlphaGo一致。具体的训练流程就是重复下列三个步骤直至算法收敛:
- 让MCTS自我博弈,完成一局游戏,收集到m个三元组(s1,p1,u1)、(s2,p2,u2)、...、(sm,pm,um)(s_1,p_1,u_1)、(s_2,p_2,u_2)、...、(s_m,p_m,u_m)(s1,p1,u1)、(s2,p2,u2)、...、(sm,pm,um)
- 依据上述三元组,更新策略网络参数
- 依据上述三元组,更新价值网络参数
由此可得DeepMind是土豪。
强化学习——不完全观测问题、MCTS相关推荐
- 叶梓老师人工智能培训之强化学习与深度强化学习提纲(强化学习讲师培训)
强化学习与深度强化学习提纲(强化学习讲师培训) 第一天 强化学习 第一课 强化学习综述 1.强化学习要解决的问题 2.强化学习方法的分类 3.强化学习方法的发展趋势 4.环境搭建实验(Gym,Te ...
- AI内训讲师叶梓-强化学习与深度强化学习提纲(强化学习讲师培训)
叶梓老师更多教程资料可点击个人主业查看 第一天 强化学习 第一课 强化学习综述 1.强化学习要解决的问题 2.强化学习方法的分类 3.强化学习方法的发展趋势 4.环境搭建实验(Gym ...
- 强化学习笔记:AlphaGo(AlphaZero) ,蒙特卡洛树搜索(MCTS)
1 AlphaZero的状态 围棋的棋盘是 19 × 19 的网格,可以在两条线交叉的地方放置棋子,一共有 361 个可以放置棋子的位置,因此动作空间是 A = {1, · · , 361}.比如动 ...
- 强化学习—— 蒙特卡洛树(Monte Carlo Tree Search, MCTS)
强化学习-- 蒙特卡洛树(Monte Carlo Tree Search, MCTS) 1. 单一状态蒙特卡洛规划 1.1 特点 1.2 数学模型 2. 上限置信区间策略 3. 蒙特卡洛树搜索 3.1 ...
- 【强化学习】MCTS
目录 Simulation-Based Search MC Search MCTS 上线置信区间算法UCT 棋类游戏MCTS搜索 MCTS的简单实现 Simulation-Based Search 基 ...
- 强化学习基础 | (18) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)
原文地址 在基于模型的强化学习与Dyna算法框架中,我们讨论基于模型的强化学习方法的基本思路,以及集合基于模型与不基于模型的强化学习框架Dyna.本文我们讨论另一种非常流行的集合基于模型与不基于模型的 ...
- 强化学习(八):Dyna架构与蒙特卡洛树搜索MCTS
强化学习(八):Dyna架构与蒙特卡洛树搜索MCTS 在基于表格型强化学习方法中,比较常见的方法有动态规划法.蒙特卡洛法,时序差分法,多步引导法等.其中动态规划法是一种基于模型的方法(Model- ...
- 强化学习 马尔可夫决策过程 有限马尔可夫决策 部分可观测马尔可夫决策
目录 一.总体说明 二.组成要素 2.1 S-状态空间集 2.2 A-动作空间集 2.3 P-状态转移概率 2.4 奖励函数 三.状态转移 一.总体说明 马尔可夫决策(MDP)是强化学习中智能体与环境 ...
- 强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)
在强化学习(十七) 基于模型的强化学习与Dyna算法框架中,我们讨论基于模型的强化学习方法的基本思路,以及集合基于模型与不基于模型的强化学习框架Dyna.本文我们讨论另一种非常流行的集合基于模型与不基 ...
最新文章
- 收藏|56张图片带您认识细菌长啥样?
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第13篇]概述投影点表达的用途的优点
- vs2010转移ipch和sdf的位置
- Node.js菜鸟教程 思维导图
- ajax回调函数的使用;ajax请求成功后对数据的再次使用
- 手机号正则(2020年4月15日)
- 数学家们是怎么玩趣味拼图游戏的?
- JAVA中如何解决超卖,Redis解决库存超卖问题实例讲解
- Apache虚拟主机配置
- 别瞎扯,元宇宙就是没有切实发展?
- 手机app 与pc 软件测试区别,1,web测试,Android测试,Ios测试的共同点与
- xheditor form java_xheditor 上传图片 Jfinal处理 出现异常
- 7-2 运动会 (10 分)
- STM32CubeMX(stm32F030C8T6) 之RTC闹钟唤醒停机模式-STM32开发实战 (2)
- 基于OHCI的USB主机 —— UFI写扇区代码
- Eclipse插件AngularJS Eclipse 1.2.0离线安装包
- 免费帝国CMS插件实现seo优化提升网站排名
- 白平衡算法简单原理以及灰色世界、完美反射实现
- 学校计算机专业指导记录,本科生导师指导记录
- umi-request
热门文章
- 十大严重的网站设计错误
- 源码解析异常is expected to be of type ‘xxx‘ but was actually of type ‘xxx‘ 是如何发生的
- 机械制图之正投影法基本性质
- ff14服务器最新,ff14 2018年服务器 | 手游网游页游攻略大全
- 项目资源管理从学会向上管理开始
- php模块是什么,apache php模块安装方法是什么
- python 制作下雪的情景_描写下雪情景的作文400字
- 关于activitygroup过时,用frament替换操作
- Java最困扰你的那些事
- textarea的使用