文章目录
- 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. 四个成熟场景
在入门强化学习之前,我们先来具体的看看,目前强化学习可以做一些什么事情。
如下面四张图,分别是强化学习应用于:
- 王者荣耀绝悟挑战;
- 训练机械臂投篮;
- Alpha Go与柯洁下围棋;
- 个性化序列推荐系统。
强化学习是机器学习的一个分支,它会训练一个智能体用来探索周围环境,在图一的王者荣耀中,这个智能体是英雄,例如阿轲、公孙离;在图二的投篮中,这个智能体是机械臂;在图三中,这个智能体是下围棋的Alpha Go;在图四的推荐系统中,这个智能体是推荐算法;
智能体在一开始是很笨的,在与周围环境的不断交互中才会逐渐变得“聪明”起来。例如在上面的图中,智能体首先是用很笨拙的方法去跨越障碍,在多次失败之后,才学会了如何跳的更高去越过障碍物。
1.2. 几个强化学习仿真环境
1.2.1. Gridworld
这里介绍三个Gridworld环境:
- Gym MiniGrid 最基础的GridWorld就是走迷宫,例如下图红色的智能体走到绿色的位置就算是找到了迷宫出口,除此之外还有其他的有意思的迷宫配置,可以玩一玩。
- Multi Drones Monitoring Multi Drones Monitoring是Multi-agent Reinforcement Learning中的一个小模块,提供了多个基于智能体的grid world小环境
- MAgent 这是一个用于研究环境中大量智能体的竞争和协作问题的GridWorld环境
1.2.2. Neural MMOs
Neural MMOs 是由OpenAI开源的一个大型的复杂MA游戏场景,在这张大地图中,由于资源有限,agent要学着合作/竞争活下去
1.2.3. Lab
Lab是一个由DeepMind开源的强化学习环境,是一张雷神之锤III竞技场(Quake III Arena)的地图,由两个队伍,每队由两个智能体组成,在室内和户外两个场景下以第一人称视角竞争玩夺旗的游戏。
2. 强化学习的基础知识和常用术语
2.1. 常用术语表
英文 | 中文 | 解释 |
RL | 强化学习 | 即 Reinforcement Learning 的首字母缩写 |
Agent | 智能体 | 强化学习算法,或强化学习算法的作用目标 |
Environment | 环境 | Agent的作用空间,可以认为除Agent外的一切皆为环境。 |
Action | 行为 | 也称动作、策略、决策。指的是Agent的输出,作用于环境 |
State / Observation | 状态 | Observation指的是被Agent观测到的部分环境的状态,State指的是整个环境的状态。一般情况下,未特定说明的“状态”、“State”均指“Observation”,也就是被Agent观测到的部分环境的状态。表示为: |
Reward | 反馈 | 量化后的反馈也称奖励。反馈指的是Action作用于Environment后,对环境中的某一个特定的变量产生的影响。表示为: |
Episode | 回合 | 也称试验(Trial)。是指一次完整的强化学习训练 |
Trajectory | 轨迹 | 是指在一个 episode 中产生的 Observation-Action 序列。表示为: |
Value Function | 价值函数 | 是指某一个可以得到的反馈的期望。表示为: |
Policy Function | 策略函数 | 策略(Policy)用于根据 Observation 确定具体的 Action。表示为: |
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 | 折扣因子 | 折扣因子是用于保证马尔科夫决策过程即时性的一个参数。表示为: |
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,通过不断试错来找到针对特定环境的最佳策略 。 |
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 方法每次都需要采样一条完整的轨迹 之后才能对 或 |
Temporal-Difference RL | 单步更新的强化学习 | TD 可以在每完成一步(得到一个Observation,采取一个Action并得到反馈值)之后就对策略或价值函数进行更新 |
On-Policy RL | 同轨强化学习 | On-Policy RL需要Agent直接与环境交互,即学习过程中所用到的数据与样本,都是Agent从环境中观测到的。 |
Off-Policy RL | 离轨强化学习 | Off-Policy RL不需要Agent直接与环境交互,即可以通过别的方法获取数据进行学习,不需要Agent直接通过观测环境获得。 |
2.2. 强化学习的目的
强化学习中包含了两个实体和三个关系,可以用下图表示:
在强化学习过程中,智能体(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)贪心算法,例如:;(2)置信算法,例如:UCB(Upper Confidence Bound)。
下面我们就来讲讲什么是多臂赌博机问题:
赌博机又称老虎机,它是一种通过摇动摇臂(Arms)来获得回报(Reward)的机器,每个赌博机只有一条摇臂,多个赌博机放在一起就是多臂赌博机。如下图所示是一个3臂赌博机:
上面的三个赌博机摇出金币的概率分布各不相同,也就是说它们的期望 Reward 不同。我们希望构造一个 Agent,自动去找出摇动哪一个赌博机的摇臂可以获得最高的 Reward。
我们把摇动三个赌博机的 Action 分别命名为 a = [1, 2, 3]
,每次摇动摇臂(pull arm)后都会获得一个回报 r
,则值函数 q(a)
,即多次摇动摇臂后动作 a
的所得到的回报 r
的均值可以表示为:
注意在多臂赌博机问题中,由于每次摇动摇臂后Agent的State是不变的(Agent看到的还是那三个赌博机),因此动作值函数
q(s,a)
可以简写为q(a)
在获取了每个摇臂的 q(a) 之后,就可以利用Bandit算法来选择动作了,这里我们介绍两种 Bandit 算法(策略):
- 贪心策略
贪心策略设定一个概率值 用于指定探索的程度,并规定下一个时间步要执行的动作有 的概率选用能使 值最大的动作 ,有 的概率选择其他动作: - UCB1策略
UCB1策略计算了的置信区间上界,即的最大期望值,然后取能使最大的动作:其中 是指动作的值,是一个可调参数用于指定探索的程度,是指所有动作的执行次数,是指动作的执行次数
此时有了 q(a) ,也有了利用 q(a) 来选择 a 的策略,Agent就可以利用Bandit策略来根据 q(a) 选择摇动哪个摇臂 a ,从而获得最大的 r 了。
下面我们来模拟一个episode,在这个episode中我们利用了 为 0.1 的 贪心策略:
- 摇动3个摇臂各一次,得到 的 Reward :
- 根据贪心策略,有0.9的概率选择可以获得最大q值的动作,0.1的概率选择其他动作,假设此时选择可以获得最大q值的动作 ,则有当前的最优动作为:摇动 得到 Reward 更新 :
- 根据贪心策略,有0.9的概率选择可以获得最大q值的动作,0.1的概率选择其他动作,假设此时选择可以获得最大q值的动作 ,则有当前的最优动作为:摇动 得到 Reward 更新 :
- 根据贪心策略,有0.9的概率选择可以获得最大q值的动作,0.1的概率选择其他动作,假设此时选择其他动作 ,则有当前的动作为:摇动 得到 Reward 更新 :
- 类似的,重复步骤2-4,Agent 就可以估算出三个摇臂的期望q值
- 学习结束后,Agent 只需摇动期望最高的一个摇臂即可得到最高的Reward。
到此,多臂赌博机问题就找到了求解方法,也就是最原始的强化学习。
2.3.2. 马尔科夫决策过程
马尔科夫决策过程(Markov Decision Process,MDP)是强化学习的基础,相比于多臂赌博机问题,马尔科夫决策过程多了状态转移及其决策过程。
我们先来认识一下状态、状态转移以及决策三个概念:
- 状态
实际上状态并没有一个标准的定义,它可以是任何有助于马尔科夫链做决策的量。 - 状态转移
是指 Agent 可以从一个状态变化到另一个状态的性质。形象地说,把自己看着 Agent ,我们从早上醒来,看到的状态是在卧室,刷牙时眼睛里看到的状态是在卫生间,出门后是在路上,到办公室后是在办公室。Agent的状态无时无刻不在改变。 - 决策
所谓决策,就是Agent根据未来可能转移到的状态的好坏(通过Reward衡量),来决定是否要转移到某个状态。
下面就是一个马尔科夫决策过程示意图:
在上图中,我们可以找出多条轨迹,用来描述Agent的行为,例如:没有进入过状态,可能是因为Agent认为要迟到了,从转移状态到的Reward太低,所以直接转移状态到了。
马尔科夫决策过程的量化计算中有一个重要参数称为折扣因子(Discount Factor),之所以要引入这样一个参数,有着以下三个理由:
- 有些马尔可夫过程是带环的,没有起始,折扣因子可以避免无穷的反馈;
- 折扣因子可以使马尔科夫过程模拟真实的人类行为,使马尔科夫过程更加倾向于选择近期的高Reward状态;
- 折扣因子是可以调整的,例如当折扣因子设为0时,就相当于只关注了下一步反馈。当折扣因子设为1时,就相当于对未来并没有折扣,未来的每一步获得的Reward都是一样的。
在有了Agent所处的状态、折扣因子、状态转移时的回报之后,我们就可以用贝尔曼方程来定义马尔科夫决策过程的折扣累计回报期望值了:
- 基于状态值函数的定义
在策略 下,状态s的值函数定义为从状态 出发,并采用策略 的折扣积累回报的期望 - 基于行为值函数的定义
在策略 下,在状态s采取动作a的行为值函数定义为从状态 出发,并采用策略 的折扣积累回报的期望
假设有如下的马尔科夫决策过程:
假设Agent正处于状态,目标任务是Agent到达然后回到。则在时会有如下两条轨迹可以完成该任务:
设折扣因子的值为0.2,则这两条轨迹的折扣累计回报期望为:
显然,当 Agent 处于状态 时,应当采取动作才能获取更高的 Reward。
3. 经典强化学习算法和深度强化学习
3.1. 经典强化学习算法
所谓经典强化学习算法,指的是表格型的强化学习算法,这种算法适用于的状态空间离散有限的马尔科夫决策过程。有限代表有终止状态,这样或者的值均可以存储在一张表格中,这就是表格型方法的名称由来。
例如一张Q表格,用来存储:
上表中Q函数的值表示当Agent在某个State时选择了某个Action,后续总共能得到多少Reward。根据这个表格,Agent就可以知道在当前的State下选择哪个Action可以得到更大的Q值。
例如在Agent处于状态时,选择动作就会有最大的Q值:
常见的表格型强化学习方法有:
- 动态规划 Dynamic Programing
动态规划 DP 是一种model-based的强化学习方法,它使用价值函数来结构化地组织对最优策略的搜索,由贝尔曼最优化方程计算最优价值函数,从而得到最优策略。DP又分为包括策略迭代、价值迭代两种方法 - 蒙特卡洛 Monte Carlo
蒙特卡洛 MC 是一种model-free的强化学习方法,它从马尔可夫决策过程采样样本的经验回报中学习价值函数。 - 时序差分 Temporal-Difference
时序差分 TD 是一种model-free的强化学习方法,它结合了MC与DP算法,采用自举法(更新基于已存在的估计)更新。TD中两个著名的方法是Saras(同轨时序差分控制)、Q-Learning(离轨时序差分控制)
推荐阅读:强化学习 - 基于表格型的求解方法
3.2. 深度强化学习
深度强化学习方法就是利用神经网络提取输入特征 或 用神经网络拟合值函数和,它适用于状态空间连续或状态数无穷多的马尔科夫决策过程。
之所以提出深度强化学习方法,是因为:
- 神经网络具有很强的特征提取能力
这样的能力使得强化学习算法可以直接从真实世界接收输入,例如看游戏屏幕、看棋盘。 - 神经网络具有很强的泛化能力
神经网络可以通过拟合离散数据泛化得到连续的空间,例如下图:
神经网络可以只根据这三个值取泛化得到连续空间上的无穷多值。
常见的深度强化学习算法有:
- Policy Gradient
包括:PG (Policy Gradient)、
TRPO (Trust Region Policy Optimization)、
PPO (Proximal Policy Optimization)、
DPPO (Distributed Proximal Policy Optimization); - Deep Q Network
包括:DQN (Deep Q Network)、
Dueling DQN (Dueling Deep Q Network)、
Double DQN (Double Deep Q Network); - 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);