文章目录

  • 1. 强化学习的应用场景
  • 1.1. 四个成熟场景
  • 1.2. 几个强化学习仿真环境
  • 1.2.1. Gridworld
  • 1.2.2. Neural MMOs
  • 1.2.3. Lab
  • 2. 强化学习的基础知识和常用术语
  • 2.1. 常用术语表
  • 2.2. 强化学习的目的
  • 2.3. 两个基本模型
  • 2.3.1. 多臂赌博机
  • 2.3.2. 马尔科夫决策过程
  • 3. 经典强化学习算法和深度强化学习
  • 3.1. 经典强化学习算法
  • 3.2. 深度强化学习
  • 4. 强化学习的学习资料


1. 强化学习的应用场景

1.1. 四个成熟场景

在入门强化学习之前,我们先来具体的看看,目前强化学习可以做一些什么事情。

如下面四张图,分别是强化学习应用于:

  1. 王者荣耀绝悟挑战;
  2. 训练机械臂投篮;
  3. Alpha Go与柯洁下围棋;
  4. 个性化序列推荐系统。

强化学习是机器学习的一个分支,它会训练一个智能体用来探索周围环境,在图一的王者荣耀中,这个智能体是英雄,例如阿轲、公孙离;在图二的投篮中,这个智能体是机械臂;在图三中,这个智能体是下围棋的Alpha Go;在图四的推荐系统中,这个智能体是推荐算法;

rl_games rl_games教程_RL

智能体在一开始是很笨的,在与周围环境的不断交互中才会逐渐变得“聪明”起来。例如在上面的图中,智能体首先是用很笨拙的方法去跨越障碍,在多次失败之后,才学会了如何跳的更高去越过障碍物。

1.2. 几个强化学习仿真环境

1.2.1. Gridworld

这里介绍三个Gridworld环境:

  1. Gym MiniGrid 最基础的GridWorld就是走迷宫,例如下图红色的智能体走到绿色的位置就算是找到了迷宫出口,除此之外还有其他的有意思的迷宫配置,可以玩一玩。
  2. rl_games rl_games教程_强化学习_02

  3. Multi Drones Monitoring Multi Drones Monitoring是Multi-agent Reinforcement Learning中的一个小模块,提供了多个基于智能体的grid world小环境
  4. rl_games rl_games教程_深度强化学习_03

  5. MAgent 这是一个用于研究环境中大量智能体的竞争和协作问题的GridWorld环境
  6. rl_games rl_games教程_rl_games_04

1.2.2. Neural MMOs

Neural MMOs 是由OpenAI开源的一个大型的复杂MA游戏场景,在这张大地图中,由于资源有限,agent要学着合作/竞争活下去

rl_games rl_games教程_强化学习_05

1.2.3. Lab

Lab是一个由DeepMind开源的强化学习环境,是一张雷神之锤III竞技场(Quake III Arena)的地图,由两个队伍,每队由两个智能体组成,在室内和户外两个场景下以第一人称视角竞争玩夺旗的游戏。

rl_games rl_games教程_RL_06

2. 强化学习的基础知识和常用术语

2.1. 常用术语表

英文

中文

解释

RL

强化学习

即 Reinforcement Learning 的首字母缩写

Agent

智能体

强化学习算法,或强化学习算法的作用目标

Environment

环境

Agent的作用空间,可以认为除Agent外的一切皆为环境。

Action

行为

也称动作、策略、决策。指的是Agent的输出,作用于环境

State / Observation

状态

Observation指的是被Agent观测到的部分环境的状态,State指的是整个环境的状态。一般情况下,未特定说明的“状态”、“State”均指“Observation”,也就是被Agent观测到的部分环境的状态。表示为:rl_games rl_games教程_rl_games_07

Reward

反馈

量化后的反馈也称奖励。反馈指的是Action作用于Environment后,对环境中的某一个特定的变量产生的影响。表示为:rl_games rl_games教程_强化学习_08

Episode

回合

也称试验(Trial)。是指一次完整的强化学习训练

Trajectory

轨迹

是指在一个 episode 中产生的 Observation-Action 序列。表示为:

rl_games rl_games教程_强化学习_09

Value Function

价值函数

是指某一个rl_games rl_games教程_rl_games_10可以得到的反馈的期望。表示为:rl_games rl_games教程_RL_11

Policy Function

策略函数

策略(Policy)用于根据 Observation 确定具体的 Action。表示为:rl_games rl_games教程_rl_games_10

Stochastic Policy

随机性策略

随机性策略会得到多个Action以及它们的概率,对所有Action根据概率抽选,最终确定一个输出Action

Deterministic Policy

确定性策略

确定性策略会得到多个Action以及它们的概率,但只输出概率最高的那个Action

Exploration

探索

是指Agent会尝试新的Action来得到可能存在的更优策略,即得到Reward更大的策略。

Exploitation

利用

是指Agent不再尝试新的Action,只采取已知的可以得到最高Reward的策略。

Trade-Off

权衡

Agent在初始的时候需要偏向于Exploration来得到合适的策略,在学习的过程中高Reward的策略被逐渐学习出来,这时候就需要偏向于Exploitation,更多的利用已知的策略,而不是把时间浪费在找新策略上。

Planning

规划

Planning是指Agent可以获得整个环境的详细信息。此时 Agent 能够计算出一个完美的模型,只需要知道当前的状态,就能够寻找到最优解。

Learning

学习

Learning是指 Agent 无法获得完整的环境信息,只能通过不断地与环境交互,逐渐改进其策略。

Discount Factor

折扣因子

折扣因子是用于保证马尔科夫决策过程即时性的一个参数。表示为:

rl_games rl_games教程_rl_games_13

Bellman Equation

贝尔曼方程

贝尔曼等式是一种计算价值函数(Q和V)的工具,它描述了当前状态与未来状态的迭代关系

MAB

多臂赌博机

Multi-Armed Bandit,一个基础的强化学习场景

MDP

马尔科夫决策过程

Markov Decision Process,一个基础的强化学习场景,是带有 Action 和 Reward 的状态转移过程

Q / Action-Value Function

Q 函数 / 动作值函数

表示 Agent 在某个 State 采取某个 Action 时得到的累计 Reward 期望值

V / State-Value function

V 函数 / 状态值函数

表示 Agent 在某个 State 时具有的累计 Reward 期望值

Value Iteration

价值迭代

利用 V 函数求取最优策略的方法

Policy Iteration

策略迭代

利用 Q 函数求取最优策略的方法

Model-Free RL

无模型的强化学习

Model-Free RL 直接让 Agent 在环境中做出 Action,通过不断试错来找到针对特定环境的最佳策略 rl_games rl_games教程_rl_games_10

Model-Based RL

基于模型的强化学习

Model-Based RL通过对环境进行理解,建立一个环境模型,Agent可以在模型中对下一步的状态和反馈做出预测,找出最佳策略,再在现实环境中做出动作

Policy-Based RL

基于概率的强化学习

Policy-Based RL中Agent在某一状态时的所有可能Action都有一定概率被选中,只是不同Action有不同的概率。最终会得到一个随机性策略

Value-Based RL

基于价值的强化学习

Value-Based RL中会对Agent在某一状态时的所有可能Action,按对应得到的Reward进行排序,并选用Reward最高的Action。最终会得到一个确定性策略

Monte-Carlo RL

回合更新的强化学习

MC 方法每次都需要采样一条完整的轨迹 rl_games rl_games教程_强化学习_15 之后才能对 rl_games rl_games教程_rl_games_10rl_games rl_games教程_RL_11

Temporal-Difference RL

单步更新的强化学习

TD 可以在每完成一步(得到一个Observation,采取一个Action并得到反馈值)之后就对策略或价值函数进行更新

On-Policy RL

同轨强化学习

On-Policy RL需要Agent直接与环境交互,即学习过程中所用到的数据与样本,都是Agent从环境中观测到的。

Off-Policy RL

离轨强化学习

Off-Policy RL不需要Agent直接与环境交互,即可以通过别的方法获取数据进行学习,不需要Agent直接通过观测环境获得。

2.2. 强化学习的目的

强化学习中包含了两个实体和三个关系,可以用下图表示:

rl_games rl_games教程_强化学习_18


在强化学习过程中,智能体(Agent)环境(Environment) 一直在交互。智能体(Agent)环境(Environment) 中获取到 环境的状态(State/Observation),并根据它做出一个 行为(Action),这个 行为(Action) 会导致 智能体(Agent) 所处的 环境的状态(Observation) 发生变化,并且 智能体(Agent) 会从 环境(Environment) 的变化中得到一定的 反馈(Reward),该 反馈(Reward) 用于 智能体(Agent) 判断自己刚才的 行为(Action) 是否合理。

显而易见,Agent 采取的 Action 能获得越高的 Reward,说明Agent越成功。强化学习的目的就是让一个智能体(Agent) 在一个复杂不确定的环境(Environment)里面去极大化它能获得的反馈(Reward)。

2.3. 两个基本模型

2.3.1. 多臂赌博机

多臂赌博机(Multi-Armed Bandit, MAB)问题可以说是强化学习的开端,最原始的强化学习算法就是从多臂赌博机问题引出来的。目前为止,主流的Bandit算法主要有两类:(1)贪心算法,例如:rl_games rl_games教程_强化学习_19;(2)置信算法,例如:UCB(Upper Confidence Bound)。

下面我们就来讲讲什么是多臂赌博机问题:

赌博机又称老虎机,它是一种通过摇动摇臂(Arms)来获得回报(Reward)的机器,每个赌博机只有一条摇臂,多个赌博机放在一起就是多臂赌博机。如下图所示是一个3臂赌博机:

rl_games rl_games教程_RL_20

上面的三个赌博机摇出金币的概率分布各不相同,也就是说它们的期望 Reward 不同。我们希望构造一个 Agent,自动去找出摇动哪一个赌博机的摇臂可以获得最高的 Reward。

我们把摇动三个赌博机的 Action 分别命名为 a = [1, 2, 3],每次摇动摇臂(pull arm)后都会获得一个回报 r,则值函数 q(a),即多次摇动摇臂后动作 a 的所得到的回报 r 的均值可以表示为:rl_games rl_games教程_RL_21
rl_games rl_games教程_rl_games_22

注意在多臂赌博机问题中,由于每次摇动摇臂后Agent的State是不变的(Agent看到的还是那三个赌博机),因此动作值函数 q(s,a) 可以简写为 q(a)

在获取了每个摇臂的 q(a) 之后,就可以利用Bandit算法来选择动作了,这里我们介绍两种 Bandit 算法(策略):

  1. rl_games rl_games教程_深度强化学习_23贪心策略
    rl_games rl_games教程_深度强化学习_24贪心策略设定一个概率值 rl_games rl_games教程_深度强化学习_25 用于指定探索的程度,并规定下一个时间步要执行的动作有 rl_games rl_games教程_强化学习_26 的概率选用能使 rl_games rl_games教程_RL_27 值最大的动作 rl_games rl_games教程_rl_games_28,有 rl_games rl_games教程_深度强化学习_25 的概率选择其他动作:rl_games rl_games教程_rl_games_30
  2. UCB1策略
    UCB1策略计算了rl_games rl_games教程_RL_31的置信区间上界,即rl_games rl_games教程_RL_31的最大期望值,然后取能使rl_games rl_games教程_RL_31最大的动作:rl_games rl_games教程_强化学习_34其中 rl_games rl_games教程_RL_31 是指动作rl_games rl_games教程_rl_games_28rl_games rl_games教程_RL_27值,rl_games rl_games教程_rl_games_38是一个可调参数用于指定探索的程度,rl_games rl_games教程_深度强化学习_39是指所有动作的执行次数,rl_games rl_games教程_RL_40是指动作rl_games rl_games教程_rl_games_28的执行次数

此时有了 q(a) ,也有了利用 q(a) 来选择 a 的策略,Agent就可以利用Bandit策略来根据 q(a) 选择摇动哪个摇臂 a ,从而获得最大的 r 了。

下面我们来模拟一个episode,在这个episode中我们利用了 rl_games rl_games教程_RL_42 为 0.1 的 rl_games rl_games教程_强化学习_43贪心策略:

rl_games rl_games教程_RL_44

  1. 摇动3个摇臂各一次,得到 rl_games rl_games教程_rl_games_45 的 Reward rl_games rl_games教程_rl_games_46
    rl_games rl_games教程_深度强化学习_47rl_games rl_games教程_深度强化学习_48rl_games rl_games教程_深度强化学习_49
  2. 根据rl_games rl_games教程_深度强化学习_24贪心策略,有0.9的概率选择可以获得最大q值的动作,0.1的概率选择其他动作,假设此时选择可以获得最大q值的动作 rl_games rl_games教程_RL_51,则有当前的最优动作为:rl_games rl_games教程_RL_52摇动 rl_games rl_games教程_深度强化学习_53得到 Reward rl_games rl_games教程_RL_54 更新 rl_games rl_games教程_RL_55rl_games rl_games教程_深度强化学习_47rl_games rl_games教程_深度强化学习_48rl_games rl_games教程_深度强化学习_58
  3. 根据rl_games rl_games教程_深度强化学习_24贪心策略,有0.9的概率选择可以获得最大q值的动作,0.1的概率选择其他动作,假设此时选择可以获得最大q值的动作 rl_games rl_games教程_rl_games_60,则有当前的最优动作为:rl_games rl_games教程_RL_61摇动 rl_games rl_games教程_RL_62得到 Reward rl_games rl_games教程_RL_63 更新 rl_games rl_games教程_深度强化学习_64rl_games rl_games教程_深度强化学习_47rl_games rl_games教程_rl_games_66rl_games rl_games教程_rl_games_67
  4. 根据rl_games rl_games教程_深度强化学习_24贪心策略,有0.9的概率选择可以获得最大q值的动作,0.1的概率选择其他动作,假设此时选择其他动作 rl_games rl_games教程_强化学习_69,则有当前的动作为:rl_games rl_games教程_RL_70摇动 rl_games rl_games教程_强化学习_71得到 Reward rl_games rl_games教程_深度强化学习_72 更新 rl_games rl_games教程_RL_73rl_games rl_games教程_RL_74rl_games rl_games教程_rl_games_66rl_games rl_games教程_rl_games_76
  5. 类似的,重复步骤2-4,Agent 就可以估算出三个摇臂的期望q值
  6. 学习结束后,Agent 只需摇动期望最高的一个摇臂即可得到最高的Reward。

到此,多臂赌博机问题就找到了求解方法,也就是最原始的强化学习。

2.3.2. 马尔科夫决策过程

马尔科夫决策过程(Markov Decision Process,MDP)是强化学习的基础,相比于多臂赌博机问题,马尔科夫决策过程多了状态转移及其决策过程。

我们先来认识一下状态、状态转移以及决策三个概念:

  1. 状态
    实际上状态并没有一个标准的定义,它可以是任何有助于马尔科夫链做决策的量。
  2. 状态转移
    是指 Agent 可以从一个状态变化到另一个状态的性质。形象地说,把自己看着 Agent ,我们从早上醒来,看到的状态是在卧室,刷牙时眼睛里看到的状态是在卫生间,出门后是在路上,到办公室后是在办公室。Agent的状态无时无刻不在改变。
  3. 决策
    所谓决策,就是Agent根据未来可能转移到的状态的好坏(通过Reward衡量),来决定是否要转移到某个状态。

下面就是一个马尔科夫决策过程示意图:

rl_games rl_games教程_rl_games_77

在上图中,我们可以找出多条轨迹,用来描述Agent的行为,例如:rl_games rl_games教程_RL_78rl_games rl_games教程_深度强化学习_79没有进入过状态rl_games rl_games教程_rl_games_80,可能是因为Agent认为要迟到了,从rl_games rl_games教程_rl_games_81转移状态到rl_games rl_games教程_rl_games_80的Reward太低,所以直接转移状态到了rl_games rl_games教程_深度强化学习_83

马尔科夫决策过程的量化计算中有一个重要参数称为折扣因子(Discount Factor)rl_games rl_games教程_RL_84,之所以要引入这样一个参数,有着以下三个理由:

  • 有些马尔可夫过程是带环的,没有起始,折扣因子可以避免无穷的反馈;
  • 折扣因子可以使马尔科夫过程模拟真实的人类行为,使马尔科夫过程更加倾向于选择近期的高Reward状态;
  • 折扣因子是可以调整的,例如当折扣因子设为0时,就相当于只关注了下一步反馈。当折扣因子设为1时,就相当于对未来并没有折扣,未来的每一步获得的Reward都是一样的。

在有了Agent所处的状态rl_games rl_games教程_rl_games_85、折扣因子rl_games rl_games教程_rl_games_86、状态转移时的回报rl_games rl_games教程_强化学习_87之后,我们就可以用贝尔曼方程来定义马尔科夫决策过程的折扣累计回报期望值了:

  1. 基于状态值函数rl_games rl_games教程_RL_88的定义
    在策略 rl_games rl_games教程_深度强化学习_89 下,状态s的值函数定义为从状态 rl_games rl_games教程_rl_games_90 出发,并采用策略 rl_games rl_games教程_深度强化学习_89 的折扣积累回报的期望rl_games rl_games教程_深度强化学习_92
  2. 基于行为值函数rl_games rl_games教程_rl_games_93的定义
    在策略 rl_games rl_games教程_深度强化学习_89 下,在状态s采取动作a的行为值函数定义为从状态 rl_games rl_games教程_rl_games_90 出发,并采用策略 rl_games rl_games教程_深度强化学习_89 的折扣积累回报的期望rl_games rl_games教程_rl_games_97

假设有如下的马尔科夫决策过程:

rl_games rl_games教程_RL_98


假设Agent正处于状态rl_games rl_games教程_rl_games_81,目标任务是Agent到达rl_games rl_games教程_rl_games_100然后回到rl_games rl_games教程_rl_games_81。则在rl_games rl_games教程_rl_games_81时会有如下两条轨迹可以完成该任务:

rl_games rl_games教程_rl_games_103rl_games rl_games教程_深度强化学习_104设折扣因子的值为0.2,则这两条轨迹的折扣累计回报期望为:rl_games rl_games教程_强化学习_105rl_games rl_games教程_强化学习_106

显然,当 Agent 处于状态 rl_games rl_games教程_rl_games_81 时,应当采取动作rl_games rl_games教程_RL_108才能获取更高的 Reward。

3. 经典强化学习算法和深度强化学习

3.1. 经典强化学习算法

所谓经典强化学习算法,指的是表格型的强化学习算法,这种算法适用于的状态空间离散有限的马尔科夫决策过程。有限代表有终止状态,这样rl_games rl_games教程_强化学习_109或者rl_games rl_games教程_rl_games_110的值均可以存储在一张表格中,这就是表格型方法的名称由来。

例如一张Q表格,用来存储rl_games rl_games教程_RL_111

rl_games rl_games教程_rl_games_112


上表中Q函数的值表示当Agent在某个State时选择了某个Action,后续总共能得到多少Reward。根据这个表格,Agent就可以知道在当前的State下选择哪个Action可以得到更大的Q值。

例如在Agent处于状态rl_games rl_games教程_强化学习_113时,选择动作rl_games rl_games教程_RL_108就会有最大的Q值:rl_games rl_games教程_深度强化学习_115

常见的表格型强化学习方法有:

  1. 动态规划 Dynamic Programing
    动态规划 DP 是一种model-based的强化学习方法,它使用价值函数来结构化地组织对最优策略的搜索,由贝尔曼最优化方程计算最优价值函数,从而得到最优策略。DP又分为包括策略迭代、价值迭代两种方法
  2. 蒙特卡洛 Monte Carlo
    蒙特卡洛 MC 是一种model-free的强化学习方法,它从马尔可夫决策过程采样样本的经验回报中学习价值函数。
  3. 时序差分 Temporal-Difference
    时序差分 TD 是一种model-free的强化学习方法,它结合了MC与DP算法,采用自举法(更新基于已存在的估计)更新。TD中两个著名的方法是Saras(同轨时序差分控制)Q-Learning(离轨时序差分控制)

推荐阅读:强化学习 - 基于表格型的求解方法

3.2. 深度强化学习

深度强化学习方法就是利用神经网络提取输入特征 或 用神经网络拟合值函数rl_games rl_games教程_rl_games_116rl_games rl_games教程_深度强化学习_117,它适用于状态空间连续或状态数无穷多的马尔科夫决策过程。

之所以提出深度强化学习方法,是因为:

  1. 神经网络具有很强的特征提取能力
    这样的能力使得强化学习算法可以直接从真实世界接收输入,例如看游戏屏幕、看棋盘。
  2. 神经网络具有很强的泛化能力
    神经网络可以通过拟合离散数据泛化得到连续的空间,例如下图:
    神经网络可以只根据这三个rl_games rl_games教程_RL_31值取泛化得到连续空间上的无穷多rl_games rl_games教程_RL_31值。

常见的深度强化学习算法有:

  1. Policy Gradient
    包括:PG (Policy Gradient)
    TRPO (Trust Region Policy Optimization)
    PPO (Proximal Policy Optimization)
    DPPO (Distributed Proximal Policy Optimization)
  2. Deep Q Network
    包括:DQN (Deep Q Network)
    Dueling DQN (Dueling Deep Q Network)
    Double DQN (Double Deep Q Network)
  3. Actor-Critic
    包括:AC (Actor-Critic)
    A3C (Asynchronous Advantage Actor-Critic)
    DDPG (Deep Deterministic Policy Gradient)
    TD3 (Twin Delayed Deep Deterministic policy gradient algorithm)
    SAC (Soft Actor-Critic)