基本概念
强化学习 (reinforcement learning,RL) 主要专注于智能体(agent)如何选择最优动作以最大化环境(environment)给出的累计折扣奖励/回报(cumulated discounted reward/return)。
首先简单描述智能体与环境交互 (interaction) 的过程,智能体从环境中接收观察到的状态 (state/observation),然后根据接收到的状态选择动作 (action),这个动作会在环境之中被执行,环境会根据智能体采取的动作,转移到下一个状态并给予智能体动作的反馈奖励 (reward)。这个过程循环发生,智能体/强化学习的目标是学会一种最优策略 (policy), 能够最大化积累智能体接收到的奖励。
我们首先形式化定义以下强化学习的基础概念:
- Markov Decision Processes
- State and Action Spaces
- Reward and Return
- Policy
然后会进一步解释以下强化学习的方法概念:
- Value Function
- Policy Gradients
- Actor Critic
- Model-based RL
最后还回答了一些强化学习领域中常见的概念性问题,以供参考。
马尔可夫决策过程/MDP
在强化学习领域,我们通过将智能体与环境交互的过程建模为一个马尔可夫决策过程 (Markov Decision Processes, MDP) ,可以说马尔可夫决策过程是强化学习的基本框架。
- 马尔可夫性质(Markov property)是指一个随机过程在给定当前时刻状态及所有过去时刻状态情况下,其下一时刻状态的条件概率分布仅依赖于当前时刻状态。即 p(st+1∣st)=p(st+1∣ht)=p(st+1∣(s1,s2,s3,…,st).
- 若随机变量序列中的每个状态都满足马尔科夫性质,则称此随机过程为马尔科夫过程。马尔科夫过程通常用一个二元组 (S,P) 来表示,且满足: S是状态集合,P是状态转移概率。马尔科夫过程中不存在动作和奖励。将动作和奖励考虑在内的马尔科夫过程称为马尔科夫决策过程。
- 马尔科夫决策过程由五元组 (S,A,P,R,γ) 定义, 其中S为状态集和,A为动作集和, P为状态转移函数, R为奖励函数, γ∈[0,1)为折扣因子, 定义了问题的horizon。跟马尔科夫过程不同的是,马尔科夫决策过程的状态转移概率为P(st+1∣st,at)。为了数学上的方便,我们通常假设 S 和A是有限的集合。
- 通常我们将智能体与环境交互形成的(状态,动作,奖励)序列,称为轨迹, 记为τt=(s0,a0,r0,s1,…,st,at,rt)。
- 强化学习的目标是给定一个马尔科夫决策过程,寻找最优策略π∗。其中策略 π(a|s) 是状态到动作的映射,通常是一个随机概率分布函数,定义了在每个状态s上执行动作a的概率。
状态空间/State Spaces
状态 state,一般用s表示,是对环境的全局性描述,观测 observation 一般用o表示,是对环境的局部性描述。一般环境会使用实值向量、矩阵或高阶张量来表示状态和观察的结果。例如,Atari 游戏中使用 RGB 图片来表示游戏环境的信息,MuJoCo 控制任务中使用向量来表示智能体的状态。
当智能体能够接收到环境全部的状态信息s 时,我们称环境为完全可观测的 (fully observable),当智能体只能接收部分环境信息o时,我们称这个过程为部分可观测的(partial observable) 的,对应的决策过程即称为部分可观测马尔可夫决策过程 (Partially Observable Markov Decision Processes,POMDP), 部分可观测马尔可夫决策过程是马尔可夫决策过程的一种泛化。部分可观测马尔可夫决策过程依然具有马尔可夫性质,但是假设智能体无法感知环境的状态,只能知道部分观测值。通常用一个七元组描述 (S,Ω,O,A,P,R,γ),其中O为观测空间,Ω(o|s,a)为观测概率函数,其他与MDP的定义类似。
动作空间/Action Spaces
不同的环境对应的动作空间一般是不同的。一般将环境中所有有效动作a 的集合称之为动作空间 (Action Space)。其中,动作空间又分为离散 (discrete) 动作空间与连续 (continuous) 动作空间。
例如在Atari游戏与SMAC星际游戏中为离散的动作空间,只可以从有限数量的动作中进行选择,而 MuJoCo 等一些机器人连续控制任务中为连续动作空间,动作空间一般为实值向量区间。
奖励与回报/Reward and Return
奖励 (reward) 是智能体所处的环境给强化学习方法的一个学习信号 (signal),当环境发生变化时,奖励函数也会发生变化。奖励函数由当前的状态与智能体的动作决定,表示为rt=R(st,at)。
回报(Return), 又称为累积折扣奖励,定义为在一个马尔可夫决策过程中从t时刻开始往后所有奖励的加权和:Gt=∑k=0∞γkrt+k+1。其中γ 表示折扣因子(衰减因子)体现的是未来的奖励在当前时刻的相对重要性,如果接近0,则表明趋向于只评估当前时刻的奖励,接近于1时表明同时考虑长期的奖励。一般情况下,γ∈[0,1)。在很多现实任务对应环境中的奖励函数可能是稀疏的,即并不是每一个状态下环境都会给予奖励,只有在一段轨迹过后才会给出一个奖励。因此在强化学习中,对奖励函数的设计与学习也是一个重要的方向,对强化学习方法的效果有很大的影响。
策略/Policy
策略 (policy) 决定了智能体面对不同的环境状态时采取的动作,是智能体的动作模型。它本质上是一个函数,用于把输入的状态变成动作。策略可分为两种:随机性策略和确定性策略。当策略为确定的 (deterministic),一般用 at=μ(st) 来表示,当策略为随机的 (stochastic),一般表示为 π(at|st) 。一般情况下,强化学习使用随机性策略,通过引入一定的随机性可以更好地探索环境。
在强化学习中,基于策略梯度的方法显式地需要学习一个参数化表示的策略 (Parameterized policy),用神经网络拟合策略函数,经常使用θ 表示神经网络的参数。但基于价值函数的方法则不一定需要显式地学习策略函数,而是通过学习得到的最优动作值函数中推导出策略,即a∗=π∗(a|s)=argmaxaQ∗(s,a)。
价值函数/Value Functions
状态价值函数 (state value function) 是指智能体在状态 st以及以后的所有时刻都采用策略π 得到的累计折扣奖励(回报)的期望值:
Vπ(s)=Eπ[Gt|st=s]
动作价值函数 (action value function) 是指智能体在状态 st采取动作at, 以后的所有时刻都采用策略π 得到的累计折扣奖励(回报)的期望值:
Qπ(s,a)=Eπ[Gt|st=s,at=a]
状态价值函数和行为价值函数的关系:Vπ(s)=∑a∈Aπ(a|s)Qπ(s,a)
我们定义最优策略π∗对应的最优状态值函数与最优动作价值函数分别为V∗(s),Q∗(s,a)。
最优的状态价值函数与最优的行为价值函数的关系:V∗(s)=maxaQ∗(s,a)
贝尔曼方程 (Bellman Equations)是强化学习方法的基础,描述的是当前时刻状态的值(动作值)与下一时刻状态的值(动作值)之间的递推关系。
Vπ(s)=Eπ,P[rt+1+γ∗Vπ(st+1)|St=s]
Qπ(s,a)=Eπ,P[rt+1+γ∗Qπ(st+1,at+1)|St=s,At=a]
进一步如果将期望展开,可以写成下面的形式:
vπ(s)=∑a∈Aπ(a∣s)(Rsa+γ∑s′∈SPss′avπ(s′))
qπ(s,a)=Rsa+γ∑s′∈SPss′a∑a′∈Aπ(a′∣s′)qπ(s′,a′)
其中Rsa=E[Rt+1∣St=s,At=a], Pss′a=P[St+1=s′∣St=s,At=a]
贝尔曼最优方程(Bellman Optimality Equations),描述的是当前时刻状态的最优值(最优动作值)与下一时刻状态的最优值(最优动作值)之间的递推关系。
V∗(s)=maxa(E[rt+1+γ∗V∗(st+1)|st=s])
Q∗(s,a)=E[rt+1+γ∗maxa′Q∗(st+1,a′)|st=s,at=a]
进一步如果将期望展开,可以写成下面的形式:
v∗(s)=maxaRsa+γ∑s′∈SPss′av∗(s′)
q∗(s,a)=Rsa+γ∑s′∈SPss′amaxa′q∗(s′,a′)
同样的,其中Rsa=E[Rt+1∣St=s,At=a], Pss′a=P[St+1=s′∣St=s,At=a]。
对于模型已知 (即知道状态转移概率函数和奖励函数) 的系统,值函数可以利用动态规划的方法得到;对于模型未知的系统,可以利用蒙特卡洛的方法或者时间差分的方法得到。
下面分别简介这3类方法:
- 动态规划 (Dynamic Programming, DP) 方法:
- 我们知道动态规划适合解决满足最优子结构(optimal substructure)和重叠子问题(overlapping subproblem)两个性质的问题。而给定MDP和策略π求解策略 π 对应的价值函数Vπ的问题恰好满足这2个性质,我们可以利用贝尔曼方程,把求解Vπ的问题分解成求解不同状态s的值Vπ(s)的子问题。可以把它分解成递归的结构,如果某个问题的子状态能得到一个值,那么它的未来状态因为与子状态是直接相关的,我们也可以将之推算出来。价值函数Vπ(s)可以存储并重用子问题的最佳的解。具体地,我们可以直接把贝尔曼期望方程,变成迭代的过程,反复迭代直到收敛。当我们得到上一迭代的 Vt的时候,就可以通过递推的关系推出下一迭代的值。Vt+1(s)=∑a∈Aπ(a∣s)(R(s,a)+γ∑s′∈Sp(s′∣s,a)Vt(s′))。反复迭代,最后得到的 V 的值就是从 V1, V2 , V3, …, 到最后收敛之后的值Vπ。Vπ就是当前给定的策略 π 对应的价值函数。
- 但是 DP 方法必须要求给定环境模型(状态转移函数,奖励函数),而这往往是不现实的,而且 DP 方法很难用于连续状态和动作的环境中。
- 蒙特卡洛 (Monte Carlo, MC)方法是指我们可以采样大量的轨迹,计算所有轨迹的真实回报Gt=rt+1+γrt+2+γ2rt+3+…,然后计算平均值作为Q值的估计。即使用经验平均回报(empirical mean return)的方法来估计期望值。
- 它不需要马尔可夫决策过程的状态转移函数和奖励函数,也不需要像动态规划那样用自举的方法,只能用在有终止状态的马尔可夫决策过程中。
- 时序差分 (Temporal Difference, TD)方法时序差分是介于蒙特卡洛和动态规划之间的方法,它是免模型的,不需要马尔可夫决策过程的状态转移函数和奖励函数。可以从不完整的回合中学习,并且结合了自举的思想。最简单的算法是一步时序差分(one-step TD) 即 TD(0)。每往前走一步,就做一步自举,用得到的估计回报(estimated return)rt+1+γV(st+1) 来更新上一时刻的值 V(st): V(st)←V(st)+α(rt+1+γV(st+1)−V(st))
- 这几种学习值函数的方法的比较如下图所示。
对于表格型的强化学习方法,我们通过迭代更新值函数的表格即可完成对值函数的估计。而很多情况下,如状态空间或动作空间不为离散空间时,值函数无法用一张表格来表示。此时,我们需要利用函数逼近的方法对值函数进行表示。
关于基于值函数(又称为 value-based)的强化学习算法的细节,请参考 DQN, Rainbow 等具体算法文档。
策略梯度/Policy Gradients
在基于值函数的方法中,我们希望迭代计算得到最优值函数,然后根据最优值函数得到最优动作;RL 方法中还有另外一大类基于策略梯度的方法,直接学习参数化的最优策略。
下面首先阐述策略梯度定理:
令 τ 表示一条轨迹,初始状态分布为 μ,如果动作是按照策略π选择的,那么轨迹 τ的概率分布为::math:` {Pr}_{mu}^{pi}(tau)=muleft(s_{0}right) pileft(a_{0} mid s_{0}right) Pleft(s_{1} mid s_{0}, a_{0}right) pileft(a_{1} mid s_{1}right) cdots`
这条轨迹的累计折扣奖励为:R(τ):=∑t=0∞γtr(st,at)
策略πθ期望最大化的目标为:Vπθ(μ)=Eτ∼Prμπθ[R(τ)]
3种形式的策略梯度公式为:
- REINFORCE 形式:
∇Vπθ(μ)=Eτ∼Prμπθ[R(τ)∑t=0∞∇logπθ(at∣st)]
- Q值形式:
∇Vπθ(μ)=Eτ∼Prμπθ[∑t=0∞γtQπθ(st,at)∇logπθ(at∣st)]=11−γEs∼dπθEa∼πθ(⋅∣s)[Qπθ(s,a)∇logπθ(a∣s)]
- 优势函数形式:
∇Vπθ(μ)=11−γEs∼dπθEa∼πθ(⋅∣s)[Aπθ(s,a)∇logπθ(a∣s)]
利用策略梯度定理,我们便可以利用采样的样本近似计算策略梯度,直接更新策略网络对应的参数,使策略逐步得到改进。
与基于值函数的RL方法相比,基于策略梯度的方法更加容易收敛到局部最小值,评估单个策略时并不充分,方差较大。
关于基于策略梯度(又称为 policy-based)的强化学习算法的细节,请参考PPO等具体算法文档。
演员-评论家/Actor Critic
Critic,参数化动作值函数,进行策略的价值评估。
Actor,参数化的策略函数,按照 Critic 部分得到的价值,利用策略梯度指导策略函数参数的更新。
总结来说,Actor Critic是一种既学习价值函数也学习策略函数的方法,结合了以上两种方法的优点。
基于这个框架下的各种算法,既可以去适应不同的动作空间与状态空间的问题,也可以对不同的策略空间中找到最优策略。
关于基于 Actor Critic 的强化学习算法的细节,请参考 A2C, DDPG, TD3, SAC 等具体算法文档。
基于模型/Model-based RL
在 model-free 的 RL 方法中,value-based方法先学习值函数(利用 MC 或 TD 方法),再从最优值函数中提取最优策略,policy-based 方法直接优化策略。
而 model-based 方法的重点在于如何学习环境模型 (environment model) 和如何利用学习好的模型来学习值函数或策略。通过学习环境模型,可以帮助我们提高强化学习方法的样本效率 (sample efficiency)。
环境模型可以定义为状态转移分布和奖励函数组成的元组: 其中表示状态转移函数M=(P,R),其中P(st+1|st,at)表示状态转移函数,R(rt+1|st,at)表示奖励函数。
根据模型学习方法和使用方法的不同,可以有各种各样的 model-based RL算法。
在学习好环境模型后,主要有两种使用方法,一种是通过学到的模型生成一些仿真轨迹,在这些仿真轨迹上学习最优值函数进而得到最优策略;另一种是在学到的模型上直接优化策略。
Q&A
- 强化学习 (Reinforcement Learning) 与监督学习 (Supervised Learning) 的本质区别在于?
- 监督学习是从大量有标签的数据集中进行模式和特征的学习,样本通常是需要满足独立同分布的假设。
- 强化学习不需要带标签的数据集,而是建立在智能体与环境交互的基础上,强化学习会试错探索,它通过探索环境来获取对环境的理解。
- 用于强化学习训练的样本是有时间关系的序列样本,而且样本的产生与智能体的策略相关。
- 强化学习中没有强的监督信号,只有稀疏的,延迟的奖励信号。
- 什么是exploration and exploitation?我们通常使用哪些方法平衡exploration and exploitation?
- Exploration 指的是RL中的智能体需要不断的去探索环境的不同状态动作空间, 尽可能收集到多样化的样本用于强化学习训练,而 exploitation 指的是智能体需要利用好已经获得的“知识”,去选择当前状态下收益高的动作。如果 exploitation 太多,那么模型比较容易陷入局部最优,但是 exploration 太多,模型收敛速度太慢。如何在 exploitation-exploration 中取得平衡,以获得一种累计折扣奖励最高的最优策略,是强化学习中的一个核心问题。
- 什么是 model based RL 和 model free RL,两者区别是什么?
- Model based RL 算法指智能体会学习环境的模型 (通常包括状态转移函数和奖励函数),并利用环境模型来进行策略迭代或值迭代,而 model free RL 算法则不需要对环境进行建模。蒙特卡洛和 TD 算法隶属于 model-free RL,因为这两类算法不需要算法建模具体环境。而动态规划属于 model-based RL,因为使用动态规划需要完备的环境模型。
- value-based, policy-based,actor-critic,三者分别是什么含义?
- value-based 就是学习值函数(或动作值函数),评价一个状态(状态动作对)的价值,policy-based 是指直接学习一个参数化的策略网络,一般通过策略梯度定理进行优化,而 actor-critic 是同时学习值网络和策略网络,是前面两者的结合,集成了值迭代和策略迭代范式,是解决实际问题时最常考虑的框架。具体关系如下体所示:
- 什么是 on-policy 和 off-policy,两者区别是什么?
- On-policy 是使用当前的策略生成的样本进行训练,产生数据样本的策略和用于当前待评估和改进的策略是相同的。
- Off-policy 则是指在更新当前策略时可以用到之前旧的策略产生的样本,产生数据样本的策略和当前待评估和改进策略是不同的。
- 一般来讲,on-policy 很难平衡探索与利用的问题,容易学习到局部最优解,虽然对整体策略的更新更稳定但是降低了学习的效率。off-policy 的优势在于重复利用数据进行训练,但是收敛速度与稳定性不如 on-policy 的算法。值得注意的是, Soft Actor Critic 提出的最大熵强化学习算法极大的提高了 off-policy 算法的稳定性和性能。
- 什么是 online training 和 offline training?我们通常如何实现 offline training?
- Online training 指的是用于 RL 训练的数据是智能体与环境交互实时产生的。 Offline training 即是训练时智能体不与环境进行交互,而是直接在给定的固定数据集上进行训练, 比如 behavior cloning 就是经典的 Offline training算 法。 我们通常在固定数据集上采样一个batch用于RL训练,因此 offline RL 又称为Batch RL。具体参考我们的 offline RL 文档 []。
- 为什么要使用replay buffer?experience replay作用在哪里?
- 智能体与环境交互后产生的数据往往是具有很强的时序相关信息的,由于随机梯度下降通常要求训练的数据符合 i.i.d. 假设,因此将智能体与环境交互后产生的数据直接用于 RL 训练往往存在稳定性问题。
- 有了 replay buffer 后,我们可以将智能体收集的样本存入 buffer 中,在之后训练时通过某种方式从 buffer 中采样出 mini-batch 的 experience 用于 RL 训练。
- 当 replay buffer 中的数据足够多时,随机抽样得到的数据就能接近 i.i.d.,使得 RL 训练更加稳定。同时由于 experience replay 的存在,智能体收集的样本不是用过就丢弃,结合 off-policy 的算法,能够多次重复利用过去的经验,提高了样本效率 (data efficiency)。
- 强化学习目前的应用场景有哪些?
- 强化学习已经在游戏领域(Atari游戏,星际争霸,王者荣耀,象棋,围棋等)取得了比肩人类甚至超越人类的成就。在现实应用中,强化学习在互联网推荐,搜索方面有丰富的应用场景。除此之外,强化学习也被应用于自动驾驶,机器人控制等控制系统中。在医疗,生物,量化交易等领域,强化学习可以用于处理更多复杂的决策问题。