新闻中心

深度学习实战——强化学习与王者荣耀(腾讯开悟)

深度学习实战——强化学习与王者荣耀(腾讯开悟)

         忆如完整项目/代码详见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. 反馈是延迟的而非即时
  3. 具有时间序列性质
  4. 智能体的行为会影响后续的数据

1.2 强化学习的要素与架构

强化学习系统一般包含四个核心要素如下:

  1. 状态(State):环境的描述,反映了智能体与环境的交互情况 。
  2. 行动(Action):智能体在某个状态下采取的动作 。
  3. 奖励(Reward):环境根据智能体的行动给予的反馈信号,表示行动的好坏 。
  4. 策略(Policy):智能体在给定状态下选择行动的策略,可以是确定性策略(确定选择一个行动)或概率性策略(选择行动的概率分布) 。

Tips:强化学习系统还包含“智能体(agent)”与“环境(environment)”两大部分。

强化学习系统核心部分详解如表2:

表2 强化学习核心部分详解

Ⅰ、策略(Policy):

策略定义了智能体对于给定状态所做出的行为,即一个从状态到行为的映射,事实上状态包括了环境状态和智能体状态,这里我们是从智能体出发的,也就是指智能体所感知到的状态 。因此我们可以知道策略是强化学习系统的核心,因为我们完全可以通过策略来确定每个状态下的行为 。我们将策略的特点总结为以下三点:

  1. 策略定义智能体的行为
  2. 它是从状态到行为的映射
  3. 策略本身可以是具体的映射也可以是随机的分布

Ⅱ、奖励(Reward):

奖励信号定义了强化学习问题的目标,在每个时间步骤内,环境向强化学习发出的标量值即为奖励,它能定义智能体表现好坏,类似人类感受到快乐或是痛苦 。因此我们可以体会到奖励信号是影响策略的主要因素。我们将奖励的特点总结为以下三点:

  1. 奖励是一个标量的反馈信号
  2. 它能表征在某一步智能体的表现如何
  3. 智能体的任务就是使得一个时段内积累的总奖励值最大

Ⅲ 、价值(Value):

价值(函数),与奖励的即时性不同,价值函数是对长期收益的衡量,而不仅仅盯着眼前的奖励 。结合强化学习的目的,我们能很明确地体会到价值函数的重要性,事实上在很长的一段时间内,强化学习的研究就是集中在对价值的估计 。我们将价值函数的特点总结为以下三点:

  1. 价值函数是对未来奖励的预测
  2. 它可以评估状态的好坏
  3. 价值函数的计算需要对状态之间的转移进行分析

Ⅳ、环境(模型)

模型(Model),是对环境的模拟,如当给出了状态与行为后,有了模型我们就可以预测接下来的状态和对应的奖励。但我们要注意的一点是并非所有的强化学习系统都需要有一个模型,因此会有基于模型(Model-based) 、不基于模型(Model-free)两种不同的方法,不基于模型的方法主要是通过对策略和价值函数分析进行学习。我们将模型的特点总结为以下两点:

  1. 模型可以预测环境下一步的表现
  2. 表现具体可由预测的状态和奖励来反映

结合表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)

  1. Model-free就是不去学习和理解环境,环境给出什么信息就是什么信息,常见的方法有policy optimization和Q-learning 。
  2. Model-Based是去学习和理解环境,学会用一个模型来模拟环境,通过模拟的环境来得到反馈。Model-Based相当于比Model-Free多了模拟环境这个环节,通过模拟环境预判接下来会发生的所有情况,然后选择最佳的情况。

Tips:一般情况下,环境都是不可知的,所以这里主要研究无模型问题。

Ⅱ 、按照学习方式划分:在线策略(On-Policy) vs 离线策略(Off-Policy)

  1. On-Policy指agent必须本人在场, 并且一定是本人边玩边学习。典型的算法为Sarsa 。
  2. Off-Policy是指agent可以选择自己玩, 也可以选择看着别人玩, 通过看别人玩来学习别人的行为准则, 离线学习同样是从过往的经验中学习, 但是这些过往的经历没必要是自己的经历, 任何人的经历都能被学习,也没有必要是边玩边学习,玩和学习的时间可以不同步。典型的方法是Q-learning,以及Deep-Q-Network 。

Ⅲ 、按照学习目标划分:基于策略(Policy-Based)和基于价值(Value-Based) 。

  1. Policy-Based的方法直接输出下一步动作的概率,根据概率来选取动作。但不一定概率最高就会选择该动作,还是会从整体进行考虑。适用于非连续和连续的动作。常见的方法有Policy gradients 。
  2. 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算法的主要思想是通过两个关键的步骤来优化策略:采样数据和策略更新  。

  1. 采样数据:在PPO算法中,智能体与环境进行交互来收集数据 。通过执行当前策略,并根据环境的反馈(奖励信号)收集一定数量的轨迹或经验  。
  2. 策略更新:使用采样数据来更新策略。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 PenaltyPPO 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 。在提出的Actor-Critic网络的训练下,在《王者荣耀》中,训练后的AI智能体能够在完整的1v1对战中击败顶级职业人类玩家 。

图12 Go 1v1与MOBA 1v1复杂度对比

图13 腾讯MOBA强化学习系统/框架总览

如图13所示,腾讯提出的MOBA 1v1强化学习系统设计包括四个主要模块:强化学习学习器 、人工智能服务器 、调度模块和内存池。这个设计旨在解决MOBA 1v1等复杂代理控制问题引入的随机梯度的高方差,需要较大的批量大小以加快训练速度。

  1. AI服务器:负责游戏环境和AI模型之间的交互逻辑,通过自我对弈生成回合,并使用镜像策略进行采样对手策略。基于从游戏状态提取的特征,使用Boltzmann探索预测英雄动作,即基于Softmax分布进行采样 。采样的动作然后被发送到游戏核心进行执行。执行后,游戏核心连续返回相应的奖励值和下一个状态。
  2. 调度模块:调度模块是一个服务器,与同一台机器上的多个AI服务器绑定 。它从AI服务器收集数据样本,包括奖励 、特征 、动作概率等。这些样本首先被压缩和打包,然后发送到内存池 。
  3. 内存池:内存池也是一个服务器 。其内部实现为内存高效的循环队列用于数据存储 。它支持长度不同的样本,并基于生成的时间进行数据采样。
  4. RL学习器:RL学习器是一个分布式训练环境。为了加速使用大批量大小的策略更新,多个RL学习器从相同数量的内存池中并行获取数据 。RL学习器中的梯度通过环形全局归约算法进行平均。为了减少IO成本,从RL学习器训练的模型以对等方式快速同步到AI服务器。

图14 框架核心算法架构

系统/框架算法设计如图14,首先,网络使用卷积  、全连接和全连接(FC)将图像特征fi、向量特征fu和游戏状态信息fg(可观察到的游戏状态)编码为编码hi、hu和hg 。其中注意力分布计算如式6:

 

式6 注意力分布计算

    论文中没有使用我们上文提到的经典PPO,而是设计了改进后的Dual-clip PPO。在经典的PPO算法(式5)的基础上,它进一步剪辑了比值rt(θ),以使其有一个下界c,支持大规模的分布式训练,如式7所示:

 

式7 Dual-clip PPO核心原理

    至此,开悟平台底层的深度强化学习框架核心部分均已解析完成。

1.强化学习(一):简介——什么是强化学习?_Woody2357的博客-CSDN博客

2.强化学习入门:基本思想和经典算法 - 张浩在路上 (imzhanghao.com)

3.Proximal Policy Optimization (PPO) 算法理解:从策略梯度开始 - 知乎 (zhihu.com)

4.lecture_13_advanced_pg.pdf (berkeley.edu)

上一篇:英雄联盟SOLO技巧 如何在SOLO中取得优势呢 下一篇:瓦尔塔80D26L/R马自达6睿翼长城哈佛H3/H5/H6原装70AH12V汽车电瓶

Copyright © 2024 庆阳市某某母婴用品培训学校 版权所有   网站地图