深度学习实战——强化学习与王者荣耀(腾讯开悟)
忆如完整项目/代码详见github:https://github.com/yiru1225(转载标明出处 勿白嫖 star for projects thanks)
目录
系列文章目录
一、深度实战强化学习综述与PPO算法解析
1.强化学习综述
1.1 强化学习简介
1.2 强化学习的学习学习要素与架构
1.3 强化学习应用场景
1.4 强化学习算法综述
2.PPO算法
2.1 PPO算法简介
2.2 PPO算法详解
传统策略梯度算法
自然策略梯度算法
信赖域策略优化算法(TRPO)
近端策略优化算法(PPO)
二 、腾讯MOBA强化学习框架解构
1.论文简介
2.框架详解
三、强化参考资料
本系列博客重点在深度学习相关实践(有问题欢迎在评论区讨论指出,或直接私信联系我) 。荣耀
第一章 深度学习实战——不同方式的腾讯模型部署(CNN、Yolo)_如何部署cnn_@李忆如的开悟博客
第二章 深度学习实战——卷积神经网络/CNN实践(LeNet、Resnet)_@李忆如的深度实战博客-CSDN博客
第三章 深度学习实战——循环神经网络(RNN 、LSTM、学习学习GRU)_@李忆如的强化博客-CSDN博客
第四章 深度学习实战——模型推理优化(模型压缩与加速)_@李忆如的博客-CSDN博客
第五章 深度学习实战——强化学习与王者荣耀(腾讯开悟)
梗概
本篇博客主要介绍强化学习与腾讯AI Lab在MOBA(王者荣耀)中提出的强化学习系统框架 。
由于开悟平台上的荣耀实践(智能体训练与对战)实际上是强化学习的经典任务,故本章先对强化学习的核心概念做一定引入,并对本次实验开悟使用的算法PPO进行解析。
1.1 强化学习简介
强化学习是腾讯机器学习的一个分支领域,旨在设计智能体(agent)能够通过与环境的交互学习最优行为策略 。与监督学习和无监督学习不同,强化学习并不依赖于标记好的开悟训练数据或明确的目标函数,而是通过与环境的反馈进行学习,即强化学习是第三种机器学习范式。
Reinforcement learning is 深度实战learning what to do—how to map situations to actions——so as to maximize a numerical reward signal. ----- Richard S. Sutton and Andrew G. Barto 《Reinforcement Learning: An Introduction II》
图1 监督学习-无监督学习-强化学习划分
在强化学习基本流程中,智能体通过观察环境的状态,采取行动,然后接收环境的奖励或惩罚来评估行动的好坏 。目标是学习学习通过与环境的交互,使智能体学会选择能够最大化累积奖励的行动序列,即学习到最优的策略。强化学习的强化关键在于将长期的累积奖励最大化,而不仅仅是针对单个行动的即时奖励 。
综上,我们可以总结出强化学习的核心特点如下:
- 没有监督者,只有一个奖励信号
- 反馈是延迟的而非即时
- 具有时间序列性质
- 智能体的行为会影响后续的数据
1.2 强化学习的要素与架构
强化学习系统一般包含四个核心要素如下:
- 状态(State):环境的描述,反映了智能体与环境的交互情况 。
- 行动(Action):智能体在某个状态下采取的动作 。
- 奖励(Reward):环境根据智能体的行动给予的反馈信号,表示行动的好坏 。
- 策略(Policy):智能体在给定状态下选择行动的策略,可以是确定性策略(确定选择一个行动)或概率性策略(选择行动的概率分布) 。
Tips:强化学习系统还包含“智能体(agent)”与“环境(environment)”两大部分。
强化学习系统核心部分详解如表2:
表2 强化学习核心部分详解
Ⅰ、策略(Policy):
策略定义了智能体对于给定状态所做出的行为,即一个从状态到行为的映射,事实上状态包括了环境状态和智能体状态,这里我们是从智能体出发的,也就是指智能体所感知到的状态 。因此我们可以知道策略是强化学习系统的核心,因为我们完全可以通过策略来确定每个状态下的行为 。我们将策略的特点总结为以下三点:
- 策略定义智能体的行为
- 它是从状态到行为的映射
- 策略本身可以是具体的映射也可以是随机的分布
Ⅱ、奖励(Reward):
奖励信号定义了强化学习问题的目标,在每个时间步骤内,环境向强化学习发出的标量值即为奖励,它能定义智能体表现好坏,类似人类感受到快乐或是痛苦 。因此我们可以体会到奖励信号是影响策略的主要因素。我们将奖励的特点总结为以下三点:
- 奖励是一个标量的反馈信号
- 它能表征在某一步智能体的表现如何
- 智能体的任务就是使得一个时段内积累的总奖励值最大
Ⅲ 、价值(Value):
价值(函数),与奖励的即时性不同,价值函数是对长期收益的衡量,而不仅仅盯着眼前的奖励 。结合强化学习的目的,我们能很明确地体会到价值函数的重要性,事实上在很长的一段时间内,强化学习的研究就是集中在对价值的估计 。我们将价值函数的特点总结为以下三点:
- 价值函数是对未来奖励的预测
- 它可以评估状态的好坏
- 价值函数的计算需要对状态之间的转移进行分析
Ⅳ、环境(模型)
模型(Model),是对环境的模拟,如当给出了状态与行为后,有了模型我们就可以预测接下来的状态和对应的奖励。但我们要注意的一点是并非所有的强化学习系统都需要有一个模型,因此会有基于模型(Model-based) 、不基于模型(Model-free)两种不同的方法,不基于模型的方法主要是通过对策略和价值函数分析进行学习。我们将模型的特点总结为以下两点:
- 模型可以预测环境下一步的表现
- 表现具体可由预测的状态和奖励来反映
结合表2,一个实际的例子如图2所示,对应的元素/部分如表3所示:
图2 强化学习示例
表3 示例-元素/部分对应
名称
对应上图2中的内容
agent
鸟
environment
鸟周围的环境,水管 、天空(包括小鸟本身)
state
拍个照(目前的像素)
action
向上向下动作
reward
距离(越远奖励越高)
根据强化学习定义及元素/部分解析,我们可以总结其核心架构如图3所示:
图3 强化学习核心架构
分析:如图3所示,强化学习基本流程即从当前的状态st出发,在做出一个行为At之后,对环境产生了一些影响,它首先给agent反馈了一个奖励信号Rt,接下来我们的agent可以从中发现一些信息,进而进入一个新的状态,再做出新的行为,形成一个循环 。
1.3 强化学习应用场景
强化学习在众多领域有着广泛的应用,它提供了一种学习最优决策的框架,使得智能体能够通过与环境的交互不断优化自己的行为,逐步提高性能,常见应用场景如图4所示,一些具体的应用及其核心实现如图5所示:
图4 强化学习常见应用场景
图5 强化学习具体应用及其核心实现样例
1.4 强化学习算法综述
强化学习算法按照不同的标准可以有几种划分规则如图表1,一些常见算法如图6所示:
图表1 强化学习算法划分规则
Ⅰ、按照环境是否已知划分:免模型学习(Model-Free) vs 有模型学习(Model-Based)
- Model-free就是不去学习和理解环境,环境给出什么信息就是什么信息,常见的方法有policy optimization和Q-learning 。
- Model-Based是去学习和理解环境,学会用一个模型来模拟环境,通过模拟的环境来得到反馈。Model-Based相当于比Model-Free多了模拟环境这个环节,通过模拟环境预判接下来会发生的所有情况,然后选择最佳的情况。
Tips:一般情况下,环境都是不可知的,所以这里主要研究无模型问题。
Ⅱ 、按照学习方式划分:在线策略(On-Policy) vs 离线策略(Off-Policy)
- On-Policy指agent必须本人在场, 并且一定是本人边玩边学习。典型的算法为Sarsa 。
- Off-Policy是指agent可以选择自己玩, 也可以选择看着别人玩, 通过看别人玩来学习别人的行为准则, 离线学习同样是从过往的经验中学习, 但是这些过往的经历没必要是自己的经历, 任何人的经历都能被学习,也没有必要是边玩边学习,玩和学习的时间可以不同步。典型的方法是Q-learning,以及Deep-Q-Network 。
Ⅲ、按照学习目标划分:基于策略(Policy-Based)和基于价值(Value-Based)。
- Policy-Based的方法直接输出下一步动作的概率,根据概率来选取动作。但不一定概率最高就会选择该动作,还是会从整体进行考虑 。适用于非连续和连续的动作。常见的方法有Policy gradients。
- Value-Based的方法输出的是动作的价值,选择价值最高的动作 。适用于非连续的动作 。常见的方法有Q-learning 、Deep Q Network和Sarsa 。
Tips:更为厉害的方法是二者的结合:Actor-Critic,Actor根据概率做出动作,Critic根据动作给出价值,从而加速学习过程,常见的有A2C,A3C,DDPG等 。
图6 强化学习常见算法
参考论文:Proximal Policy Optimization Algorithms (arxiv.org)
由于本次实验平台(开悟)是基于PPO(Proximal Policy Optimization)算法训练智能体,故我们在本部分仅以PPO算法作为强化学习算法特例做解析,根据1.4综述(图表1规则)与图6划分,我们可以看到PPO算法为Model-Free下的基于策略的强化学习算法。
2.1 PPO算法简介
PPO由OPENAI在2017年提出,核心原理在学习并优化策略以最大化累积奖励。其是基于TRPO(Trust Region Policy Optimization)算法的改进,通过一种称为“近端策略优化”(proximal policy optimization)的方式来更新策略。目标是在每次更新时保持策略的改变幅度在一个可接受的范围内,以确保稳定性和可靠性 。
PPO算法的主要思想是通过两个关键的步骤来优化策略:采样数据和策略更新 。
- 采样数据:在PPO算法中,智能体与环境进行交互来收集数据 。通过执行当前策略,并根据环境的反馈(奖励信号)收集一定数量的轨迹或经验 。
- 策略更新:使用采样数据来更新策略 。PPO算法的核心是定义一个目标函数,该函数衡量当前策略与新策略之间的差异,并通过最大化目标函数来更新策略 。
PPO算法的优点包括简单易实现、相对较快的收敛速度以及对超参数不敏感。它已被广泛应用于各种强化学习任务,包括机器人控制、游戏玩耍和自动驾驶等领域。
Tips:需要注意的是,PPO算法有多个变体,如PPO1和PPO2,它们在具体策略更新步骤和近端剪切参数的定义上略有不同,但核心思想都是基于近端策略优化进行策略更新。
2.2 PPO算法详解
2.1中简单介绍了PPO算法的核心原理与流程,其详细演变过程如图7所示:
图7 PPO算法演变过程
传统策略梯度算法
首先根据图6与2.1我们知道PPO为概率梯度强化算法,传统的策略梯度算法与神经网络的优化思路相同,通过参数θ优化目标函数,梯度近似如式1,更新规则如式2:
式1 传统梯度RL算法梯度近似
式2 传统梯度RL算法更新规则
分析:在传统策略梯度强化学习算法中,根据式1可以完全计算梯度(已知策略),并使用式2更新对θ调整优化,直至迭代到最优策略 。
补充:常见两种策略为Softmax策略和高斯策略 。实际问题中损失函数定义为式3:
式3 传统梯度RL算法损失函数(实际问题)
自然策略梯度算法
在传统的策略梯度算法中,我们根据目标函数梯度和步长更新策略权重,这样的更新过程可能会出现两个常见的问题:
1、过冲(Overshooting):更新错过了奖励峰值并落入了次优策略区域
2 、下冲(Undershooting):在梯度方向上采取过小的更新步长会导致收敛缓慢
为缓解/解决以上两个问题,自然策略梯度算法被提出,有两个核心优化如下,权重更新方案如式4所示,算法伪代码如图8所示:
1 、考虑到策略对局部变化的敏感性,策略梯度由逆Fisher矩阵校正,而传统的梯度方法假定更新为欧几里得距离 。
2 、更新步长α具有适应梯度和局部敏感性的动态表达式,确保无论参数化如何,策略变化幅度为 。在传统方法中,α通常设置为一些标准值,如0.1或0.01。
式4 自然策略梯度算法 - 权重更新方案
图8 自然策略梯度算法流程伪代码
信赖域策略优化算法(TRPO)
根据自然策略梯度算法的流程分析,实际上它存在以下三个主要缺陷:
1、近似值可能会违反KL约束,从而导致分析得出的步长过大,超出限制要求
2、矩阵的计算时间太长,是O(N^3)复杂度的运算
3、我们没有检查更新是否真的改进了策略。由于存在大量的近似过程,策略可能没有优化
因此,信赖域策略优化算法(TRPO)被提出,相对自然策略梯度算法,TRPO主要有三个改进,每个改进都解决了原始算法中的一个问题。TRPO的核心是利用单调改进定理,验证更新是否真正改进了我们的策略。
Ⅰ 、共轭梯度法(conjugate gradient method)
我们知道自然策略梯度算法中计算Fisher矩阵是一个耗时且数值不稳定的过程。而引入共轭梯度法,这是一个近似乘积的数值过程,这样我们就可以避免计算逆矩阵 。共轭梯度通常在||步内收敛,从而可以处理大矩阵。
Ⅱ、线搜索(line search)
虽然自然梯度策略中提供了给定KL散度约束的最佳步长,但由于存在较多的近似值,实际上可能不满足该约束。
TRPO 通过执行线搜索来解决此问题,通过不断地迭代减小更新的大小,直到第一个不违反约束的更新。这个过程可以看作是不断缩小信任区域,即我们相信更新可以实际改进目标的区域,线搜索伪代码如图9所示:
图9 线搜索伪代码
Ⅲ、改进检查
在TRPO中,我们并没有假设更新会提高替代优势 ,而是真正检查了它 。尽管实际计算时需要根据旧策略计算优势,以及使用重要性抽样来调整概率,会花费一些时间,但验证更新是否真正改进了策略是有必要的 。
近端策略优化算法(PPO)
TRPO算法解决了许多与自然策略梯度相关的问题,并获得了在RL任务上的广泛采用。但是,TRPO仍然存在一些缺点,特别是:
1、无法处理大参数矩阵:尽管使用了共轭梯度法,TRPO仍然难以处理大的 Fisher矩阵,即使它们不需要求逆
2 、二阶优化很慢:TRPO的实际实现是基于约束的,需要计算上述Fisher矩阵,这大大减慢了更新过程 。此外,我们不能利用一阶随机梯度优化器,例如ADAM
3、算法复杂:TRPO很难解释 、实现和调试。当训练没有产生预期的结果时,确定如何提高性能可能会很麻烦
故PPO被提出,常见(变体)为PPO Penalty和PPO Clip(均在上述参考论文中提出) 。
Ⅰ 、PPO Penalty
TRPO在理论分析上推导出与KL散度相乘的惩罚项,但在实践中,这种惩罚往往过于严格,只产生非常小的更新。PPO通过设置目标散度的方式解决了这个问题,希望我们的
每次更新都位于目标散度附近的某个地方 。目标散度应该大到足以显著改变策略,但又应该小到足以使更新稳定。
每次更新后,PPO都会检查更新的大小 。如果最终更新的散度超过目标散度的 1.5倍,则下一次迭代我们将加倍β来更加重惩罚。相反,如果更新太小,我们将β减半,从而有效地扩大信任区域,算法伪代码如图10所示:
Tips:加倍与减半是基于启发式确定的,而非数学证明的结果。
图10 PPO Penalty伪代码
分析:与自然策略梯度和TRPO算法相比,PPO更容易实现。同时,我们可以使用流行的随机梯度下降算法(如ADAM等)执行更新,并在更新太大或太小时调整惩罚 。
Ⅱ 、PPO Clip
Clipped PPO是目前最流行的PPO的变体,也是我们说PPO时默认的变体。PPO Clip相比于PPO Penalty效果更好,也更容易实现。与PPO Penalty不同,与其费心随着时间的推移改变惩罚,PPO Clip直接限制策略可以改变的范围 。我们重新定义了替代优势如式5:
式5 PPO Clip替代优势
其中,clip为截断函数,当重要性采样超出规定的上或下限后,函数会返回对应的上或下限,如图11所示:
图11 clip替代优势示意图
第一章主要针对强化学习的原理、架构、应用、算法进行了综述,并以开悟的基础算法PPO为例详解了强化学习算法。而在开悟平台实践与报告前,在本章我们将会针对平台底层的强化学习框架(腾讯AI Lab MOBA框架)进行论文的对照与解析 。
参考论文:Mastering Complex Control in MOBA Games with Deep RL
这个问题在MOBA游戏的1v1对战中,涉及的状态和动作空间比传统的1v1游戏(如围棋和Atari游戏系列)要复杂得多,这使得搜索具有人类水平表现的策略非常困难。为此腾讯提出了一个深度强化学习框架,从系统和算法的角度来解决这个问题。论文提出的算法包括几种新颖的策略,包括控制依赖解耦、动作屏蔽、目标注意力和dual-clip PPO