强化学习基础概念介绍

基本概念

强化学习 (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)=arg⁡maxaQ∗(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

  1. 强化学习 (Reinforcement Learning) 与监督学习 (Supervised Learning) 的本质区别在于?
  • 监督学习是从大量有标签的数据集中进行模式和特征的学习,样本通常是需要满足独立同分布的假设。
  • 强化学习不需要带标签的数据集,而是建立在智能体与环境交互的基础上,强化学习会试错探索,它通过探索环境来获取对环境的理解。
    • 用于强化学习训练的样本是有时间关系的序列样本,而且样本的产生与智能体的策略相关。
    • 强化学习中没有强的监督信号,只有稀疏的,延迟的奖励信号。
  1. 什么是exploration and exploitation?我们通常使用哪些方法平衡exploration and exploitation?
  • Exploration 指的是RL中的智能体需要不断的去探索环境的不同状态动作空间, 尽可能收集到多样化的样本用于强化学习训练,而 exploitation 指的是智能体需要利用好已经获得的“知识”,去选择当前状态下收益高的动作。如果 exploitation 太多,那么模型比较容易陷入局部最优,但是 exploration 太多,模型收敛速度太慢。如何在 exploitation-exploration 中取得平衡,以获得一种累计折扣奖励最高的最优策略,是强化学习中的一个核心问题。
  1. 什么是 model based RL 和 model free RL,两者区别是什么?
  • Model based RL 算法指智能体会学习环境的模型 (通常包括状态转移函数和奖励函数),并利用环境模型来进行策略迭代或值迭代,而 model free RL 算法则不需要对环境进行建模。蒙特卡洛和 TD 算法隶属于 model-free RL,因为这两类算法不需要算法建模具体环境。而动态规划属于 model-based RL,因为使用动态规划需要完备的环境模型。
  1. value-based, policy-based,actor-critic,三者分别是什么含义?
  • value-based 就是学习值函数(或动作值函数),评价一个状态(状态动作对)的价值,policy-based 是指直接学习一个参数化的策略网络,一般通过策略梯度定理进行优化,而 actor-critic 是同时学习值网络和策略网络,是前面两者的结合,集成了值迭代和策略迭代范式,是解决实际问题时最常考虑的框架。具体关系如下体所示:
  1. 什么是 on-policy 和 off-policy,两者区别是什么?
  • On-policy 是使用当前的策略生成的样本进行训练,产生数据样本的策略和用于当前待评估和改进的策略是相同的。
  • Off-policy 则是指在更新当前策略时可以用到之前旧的策略产生的样本,产生数据样本的策略和当前待评估和改进策略是不同的。
  • 一般来讲,on-policy 很难平衡探索与利用的问题,容易学习到局部最优解,虽然对整体策略的更新更稳定但是降低了学习的效率。off-policy 的优势在于重复利用数据进行训练,但是收敛速度与稳定性不如 on-policy 的算法。值得注意的是, Soft Actor Critic 提出的最大熵强化学习算法极大的提高了 off-policy 算法的稳定性和性能。
  1. 什么是 online training 和 offline training?我们通常如何实现 offline training?
  • Online training 指的是用于 RL 训练的数据是智能体与环境交互实时产生的。 Offline training 即是训练时智能体不与环境进行交互,而是直接在给定的固定数据集上进行训练, 比如 behavior cloning 就是经典的 Offline training算 法。 我们通常在固定数据集上采样一个batch用于RL训练,因此 offline RL 又称为Batch RL。具体参考我们的 offline RL 文档 []。
  1. 为什么要使用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)。
  1. 强化学习目前的应用场景有哪些?
  • 强化学习已经在游戏领域(Atari游戏,星际争霸,王者荣耀,象棋,围棋等)取得了比肩人类甚至超越人类的成就。在现实应用中,强化学习在互联网推荐,搜索方面有丰富的应用场景。除此之外,强化学习也被应用于自动驾驶,机器人控制等控制系统中。在医疗,生物,量化交易等领域,强化学习可以用于处理更多复杂的决策问题。

参考文献

Leave a Reply