强化学习 | (1) The Review of Reinforcement Learning

本文翻译自 A (Long) Peek into Reinforcement Learning

在本文中,我们将简要介绍强化学习(RL)这个领域,从基本概念到经典算法。

近年来,人工智能(AI)领域出现了两个令人振奋的消息。 AlphaGo在围棋游戏中击败了最好的职业人类玩家。 之后扩展的算法AlphaGo Zero在没有人类知识监督学习的情况下,以100-0击败了AlphaGo。 在DOTA2 1v1竞赛中,顶级专业游戏玩家输给了OpenAI开发的机器人。 知道了这些之后,很难不对这些算法背后的魔力-强化学习(RL)感到好奇。 我写这篇文章是为了简要介绍一下这一领域。 我们将首先介绍几个基本概念,然后深入探讨解决RL问题的经典方法。 希望这篇文章对于新手来说是一个很好的起点,可以与未来的前沿研究联系起来。

什么是强化学习?

假设我们有一个智能体(agent,代理)在一个未知环境中,该智能体可以通过与环境交互获得一些奖励/rewards。 agent应该采取行动,以使累积奖励最大化。 实际上,场景可能是机器人(agent)在玩游戏以取得高分,或者是机器人试图完成物理任务。 但不仅限于这些。
在这里插入图片描述
强化学习(RL)的目标是从试验经历(交互轨迹)和收到的相对简单的反馈中为agent学习一种好的策略。 通过最优策略,agent能够主动适应环境以最大化未来的奖励。

关键概念

现在正式定义强化学习中的一些关键概念。

Agent 在环境中运行。环境如何对某些动作做出反应由我们可能知道或也可能不知道的模型定义。Agent 可以停留在环境的多个状态之一( s ∈ S s\in \mathcal{S} sS),并选择采取多种动作中的一种( a ∈ A a\in \mathcal{A} aA)从一种状态切换到另一种状态。Agent 将到达哪个状态由状态之间的转移概率 P P P决定。一旦Agent采取一个动作,环境就会提供一个奖励( r ∈ R r\in \mathcal{R} rR)作为反馈。

模型定义了奖励函数和(状态)转移概率。 我们可能会或也可能不会知道该模型如何工作,这会区分两种情况:

  • 知道该模型
    在完全信息下规划; 进行model-based RL。 当我们完全了解环境后,便可以通过动态规划(DP)找到最佳解决方案。 你还记得算法101课中的“最长递增子序列”或“旅行商问题”吗? 不过,这不是本文的重点。

  • 不知道该模型
    用不完整的信息学习; 做model free RL或尝试明确学习模型作为算法的一部分。 以下大多数内容适用于模型未知的情况。

Agent 的策略 policy π ( s ) \pi(s) π(s)提供了在特定状态下采取何种最优动作的指导原则,目标是最大化总奖励。 每个状态都与一个价值函数 V ( s ) V(s) V(s)相关联,该函数预测我们在此状态下通过采取相应的策略收到的未来奖励的预期数量(期望)。 换句话说,价值函数量化状态的良好程度。 策略和价值函数都是我们在强化学习中要学习的东西。

在这里插入图片描述
Agent 与环境之间的相互涉及一系列动作和奖励, t = 1 , . . . , T t=1,...,T t=1,...,T。 在此过程中,agent 会积累有关环境的知识,学习最佳策略,并决定下一步应采取的动作,以便有效地学习最优策略。让我们分别将时间步 t 的状态,动作和奖励分别标记为 S t , A t , R t S_t,A_t,R_t St,At,Rt。 因此,交互序列由一个情节episode(也称为“试验”或“轨迹”)完整描述,并且该序列在终止状态 S T S_T ST处终止:
在这里插入图片描述
深入了解RL算法的不同类别时,你会遇到很多术语:

  • Model-based
    依靠环境模型; 要么模型是已知的,要么算法明确学习该模型。

  • Model-free
    在学习过程中不依赖模型。

  • On-policy
    使用目标策略的确定性输出或从目标策略采样来训练算法。

  • Off-policy
    在一个由不同行为策略而非目标策略产生的转换或情节(轨迹)的分布上进行训练。

Model:Transition and Reward

模型是环境的描述符。 使用模型,我们可以学习或推断环境将如何与Agent进行交互并向其提供反馈。 模型有两个主要部分,转移概率函数P和奖励函数R。

当我们在状态 s s s, 我们决定采取动作 a a a, 并到达下一个状态 s ′ s' s,获得奖励 r r r。这被称为一个转换transition步骤, 表示为一个元组 ( s , a , r , s ′ ) (s,a,r,s') (s,a,r,s).

转移函数P记录了在采取动作 a a a之后,从状态 s s s转移到 s ′ s' s同时获得一个奖励 r r r的概率。我们使用 P \mathbb{P} P作为概率符号。
在这里插入图片描述
因此,状态转移函数可以定义为 P ( s ′ , r ∣ s , a ) P(s',r |s,a ) P(s,rs,a)的一个函数:
在这里插入图片描述
奖励函数R预测由一个动作触发的下一个奖励:
在这里插入图片描述

Policy

作为Agent的行为函数 π \pi π, Policy告诉我们在状态 s s s下要采取哪个动作。它是一个从状态 s s s到动作 a a a的一个映射,可以是确定性的也可以是随机的:
在这里插入图片描述

Value Function

价值函数通过预测未来奖励来衡量状态的优劣或对状态或动作的奖励程度。 未来奖励,也称为回报(return),是未来折扣奖励的总和。 让我们从时间t开始计算回报 G t G_t Gt
在这里插入图片描述
其中折扣因子 γ ∈ [ 0 , 1 ] \gamma\in [0,1] γ[0,1]惩罚未来的奖励,因为:

  • 未来的奖励可能具有更高的不确定性; 如股票市场。
  • 未来的奖励不会立即带来收益; 即,作为人类,我们可能更喜欢今天而不是5年后;
  • 折扣提供了数学上的便利; 也就是说,我们不需要永远跟踪未来的步骤来计算回报。
  • 我们不必担心状态转换图中的无限循环。

如果我们在时间t处在状态 s s s S t = s S_t=s St=s,那么s的状态价值就是期望回报:
在这里插入图片描述
相似地,我们定义一个状态-动作对的动作价值(Q-value)
在这里插入图片描述
另外,由于我们遵循目标策略 π \pi π,因此我们可以利用可能动作的概率分布和Q值(动作价值)来恢复状态价值(状态价值=该状态下所有可能动作对应动作价值的期望):
在这里插入图片描述
动作价值和状态价值的差是动作优势函数(Advantage fuction/A-value)(某个动作价值相对于期望/平均动作价值的优势,衡量一个动作的好坏):
在这里插入图片描述

最优价值和策略

最优价值函数产生最大回报:
在这里插入图片描述
最优策略实现最优价值函数:
在这里插入图片描述
在这里插入图片描述

马尔可夫决策过程(MDP)

用更正式的术语来说,几乎所有的RL问题都可以用马尔可夫决策过程(MDP)来表示。 MDP中的所有状态都具有“马尔可夫”属性,指的是未来状态仅取决于当前状态,而不取决于历史状态:
在这里插入图片描述
换句话说,给定当前状态,未来和过去是条件独立的,因为当前状态封装了我们决定未来所需的所有统计信息。
在这里插入图片描述
一个马尔科夫决策过程包含5个元素 M = < S , A , P , R , γ > \mathcal{M}=<\mathcal{S},\mathcal{A},P,R,\gamma> M=<S,A,P,R,γ>, 其中这些符号和上一部分的重要概念有相同的含义,与RL问题设置完全吻合:

  • S \mathcal{S} S - 状态集合/空间
  • A \mathcal{A} A - 动作集合/空间
  • P - 转移概率函数
  • R - 奖励函数
  • γ \gamma γ - 未来奖励的折扣因子。在一个未知的环境中,我们没有有关P和R的完美知识。

在这里插入图片描述

贝尔曼方程

贝尔曼方程式是指将价值函数分解为即时奖励和折扣未来价值的一组方程式。
在这里插入图片描述
对于Q-value也是类似的:
在这里插入图片描述

贝尔曼期望方程

递归更新过程可以进一步分解为基于状态价值和动作价值函数的方程式。 随着我们在未来动作步骤中的进一步发展,我们遵循策略 π \pi π来扩展V和Q:
在这里插入图片描述
在这里插入图片描述

贝尔曼最优方程

如果我们只对最优价值感兴趣,而不是对遵循策略后的期望进行计算,则可以在不使用策略的情况下,在替代更新期间立即跳入最大回报。 RECAP:最优价值 V ∗ V^* V Q ∗ Q^* Q是我们可以获得的最优回报,在此定义。
在这里插入图片描述
毫不奇怪,它们看起来与Bellman期望方程非常相似。

如果我们拥有完整的环境信息,这将可以转化为规划问题,使用DP可以解决。 不幸的是,在大多数情况下,我们不知道 P s s ′ a P^a_{ss'} Pssa R ( s , a ) R(s,a) R(s,a),因此我们无法通过直接应用Bellmen方程来求解MDP,但这为许多RL算法奠定了理论基础。

常用方法

现在是时候介绍解决RL问题的主要方法和经典算法了。 在以后的文章中,我计划进一步研究每种方法。

动态规划(DP)

当模型完全已知时,按照Bellman方程,我们可以使用动态编程(DP)来迭代地评估价值函数并改进策略。

策略评估

对于一个给定策略 π \pi π, 策略评估用来计算状态价值 V π V_{\pi} Vπ:
在这里插入图片描述

策略改进

基于价值函数,策略改进通过贪婪的行动生成一个更好的策略 π ′ ≥ π \pi' \geq \pi ππ
在这里插入图片描述

策略迭代

通用策略迭代(GPI)算法是一种在将策略评估与改进结合起来时用于改进策略的迭代过程。
在这里插入图片描述
在GPI中,价值函数被重复近似以更接近当前策略的真实价值,同时,该策略被反复改进以达到最优。 此策略迭代过程有效且始终收敛于最优,但是为什么会这样呢?

我们有一个策略 π \pi π,然后通过贪婪地采取动作来生成一个提升后的策略 π ′ \pi' π, KaTeX parse error: Undefined control sequence: \inA at position 22: …) = \arg\max_{a\̲i̲n̲A̲} Q_{\pi}(s,a)。 这个提升后的策略 π ′ \pi' π的价值被保证是更好的,因为:
在这里插入图片描述

蒙特卡洛方法

首先回顾一下 V ( s ) = E [ G t ∣ S t = s ] V(s) = \mathbb{E}[G_t|S_t=s] V(s)=E[GtSt=s]. 蒙特卡洛(MC)方法使用一个简单的想法:它可以从原始经验的情节中学习,而无需对环境动力学进行建模,并且可以计算观察到的回报的均值作为期望回报的近似值。 为了计算经验回报 G t G_t Gt, MC方法需要从完整的情节 S 1 , A 1 , R 2 , . . . , S T S_1,A_1,R_2,...,S_T S1,A1,R2,...,ST中学习来计算 G t = ∑ k = 0 T − t − 1 γ k R t + k + 1 G_t=\sum_{k=0}^{T-t-1}\gamma^kR_{t+k+1} Gt=k=0Tt1γkRt+k+1, 且所有的情节/轨迹必须最终终止(都达到终止状态)。

对于状态s,回报的经验均值为:
在这里插入图片描述
其中 [ S t = s ] [S_t=s] [St=s]是一个二元指示函数(条件为真是1,否则是0)。我们可以在每次访问状态s时计数,以至于在一个轨迹中可能存在对一个状态的多次访问(“每次访问”),或者仅在我们在一个轨迹中首次遇到该状态时才对它进行计数(“首次访问”) ”)。 通过对(s,a)对进行计数,可以将这种近似方法轻松地扩展到动作价值函数。
在这里插入图片描述
为了通过MC学习最优策略,我们遵循与GPI类似的思路对其进行迭代。
在这里插入图片描述

  1. 对于当前价值函数贪婪地改进策略:
    在这里插入图片描述
  2. 使用新策略 π \pi π生成一个新的轨迹(使用类似于 ϵ \epsilon ϵ-greedy的算法帮助我们平衡利用和探索)
  3. 使用新的轨迹估计Q值:
    在这里插入图片描述
时序差分(TD)学习

与蒙特卡洛方法类似,时差(TD)学习是model-free的,可以从轨迹中学习。 但是,TD学习可以从不完整的轨迹中学习,因此我们无需跟踪轨迹直至终止。 TD学习是如此重要,以至于Sutton&Barto(2017)在其RL书中将其描述为“一个想法……强化学习的核心和新颖”。

Bootstrapping

TD学习方法根据现有估计来更新目标,而不是像MC方法那样完全依赖实际的奖励和完整的回报。 这种方法称为自举

价值估计

TD学习中的关键思想是根据估计的回报 R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V(S_{t+1}) Rt+1+γV(St+1)(称为“ TD目标”)更新价值函数 V ( S t ) V(S_t) V(St)。 我们要在多大程度上更新价值函数,这取决于学习率超参数 α \alpha α
在这里插入图片描述
相似地,对于动作价值估计:
在这里插入图片描述
接下来,让我们深入探讨如何学习TD学习(即“ TD控制”)中的最优策略。 做好准备,你将在本节中看到许多著名的经典算法。

SARSA:On-policy TD control

“ SARSA”是指按照以下序列/轨迹更新Q值的过程: . . . , S t , A t , R t + 1 , S t + 1 , A t + 1 , . . . ...,S_t,A_t,R_{t+1},S_{t+1},A_{t+1},... ...,St,At,Rt+1,St+1,At+1,..., 这个想法遵循GPI的相同路线。 在一个轨迹中,其工作方式如下:

  1. 初始化 t = 0 t=0 t=0
  2. 初始状态 S 0 S_0 S0 , 选择一个动作 A 0 = arg ⁡ max ⁡ a ∈ A Q ( S 0 , a ) A_0=\arg\max_{a\in A}Q(S_0,a) A0=argmaxaAQ(S0,a), 其中 ϵ − \epsilon- ϵgreedy通用被应用。
  3. t t t时刻,在应用动作 A t A_t At后,我们收到奖励 R t + 1 R_{t+1} Rt+1并且到达下一个状态 S t + 1 S_{t+1} St+1.
  4. 用步骤2中相同的方式选择下一个动作: A t + 1 = arg ⁡ max ⁡ a ∈ A Q ( S t + 1 , a ) A_{t+1}=\arg\max_{a\in A}Q(S_{t+1},a) At+1=argmaxaAQ(St+1,a)
  5. 更新Q值函数
    在这里插入图片描述
  6. 设置 t = t + 1 t=t+1 t=t+1,从步骤3开始重复这一过程。

在SARSA的每一步,我们需要根据当前策略选择下一个动作。

Q-Learning: Off-policy TD control

Q学习的发展(Watkins&Dayan,1992)是强化学习早期的一个重大突破。 在一个轨迹中,其工作方式如下:

  1. 初始化 t = 0 t=0 t=0
  2. 初始状态 S 0 S_0 S0
  3. t t t时刻, 根据Q值选择一个动作 A t = arg ⁡ max ⁡ a ∈ A Q ( S t , a ) A_t=\arg\max_{a\in A}Q(S_t,a) At=argmaxaAQ(St,a), 其中 ϵ − \epsilon- ϵgreedy通用被应用。
  4. 在采取动作 A t A_t At后,收到一个奖励 R t + 1 R_{t+1} Rt+1到达下一个状态 S t + 1 S_{t+1} St+1
  5. 更新Q值函数
    在这里插入图片描述
  6. 设置 t = t + 1 t=t+1 t=t+1,从步骤3开始重复这一过程。

与SARSA的关键区别是,Q-learning没有遵循当前策略来选择第二个动作 A t + 1 A_{t+1} At+1. 它估计出最优Q值中的 Q ∗ Q^* Q,但是哪个动作(表示为 a ∗ a^* a)导致最大Q值无关紧要,在下一步中,Q学习可能不会采用 a ∗ a^* a.
在这里插入图片描述

Deep Q-Network

从理论上讲,我们可以记住Q学习中所有状态动作对的 Q ∗ ( . ) Q^*(.) Q(.),在一张巨大的表哥中。 但是,当状态和动作空间很大时,它很快就在计算上变得不可行。 因此人们使用函数(即机器学习模型)来近似Q值,这被称为函数近似。 例如,如果我们使用带有参数 θ \theta θ的函数来计算Q值,则可以将Q值函数标记为 Q ( s , a ; θ ) Q(s,a;\theta) Q(s,a;θ).

不幸的是,Q学习与非线性Q值函数近似和自举结合使用时,Q学习可能会遇到不稳定和发散的问题。

深度Q网络旨在通过两种创新机制极大地改善和稳定Q学习的训练过程:

  • Experience Replay/Replay Buffer:所有的轨迹步骤/转换 e t = ( S t , A t , R t , S t + 1 ) e_t=(S_t,A_t,R_t,S_{t+1}) et=(St,At,Rt,St+1)被存储在一个回放缓存中 D t = e 1 , . . . , e t D_t={e_1,...,e_t} Dt=e1,...,et. D t D_t Dt有多个轨迹的转换元组。在Q学习更新期间,从replay buffer中随机抽取样本(transition),因此一个样本可以多次使用。 Experience Replay可提高数据效率(利用率),消除观测序列中的相关性,并平滑数据分布中的变化。
  • Periodically Updated Target:当前网络估计的Q值朝目标网络计算的Q值优化,目标网络克隆自当前网络,且参数被冻结,目标网络周期性更新,每隔C个步骤把当前网络的参数赋值给目标网络(hard update)。 由于克服了短期振荡,这种修改使训练更加稳定。

损失函数如下:
在这里插入图片描述
其中, U ( D ) U(D) U(D)是在replay buffer D上的一个均匀分布; θ − \theta^{-} θ是冻结的目标Q网络的参数, θ \theta θ是当前Q网络的参数(更新)。

此外,还发现将误差项限制在[-1,1]之间是有帮助的。 (我总是对参数裁剪有一种复杂的情感,因为许多研究表明,它是凭经验进行的,会使数学变得不那么漂亮了)。

在这里插入图片描述
DQN有许多变体以改进原始设计,例如具有dueling 架构的DQN(Wang等人,2016年),它使用共享的网络参数估计状态值函数 V ( s ) V(s) V(s)和优势函数 A ( s , a ) A(s,a) A(s,a)

结合TD和MC学习
策略梯度

上面介绍的所有方法旨在学习状态/动作值函数,然后相应地选择动作。 相反,策略梯度方法使用参数化策略函数 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(as;θ)直接学习策略. 让我们将奖励函数(与损失函数相对)定义为期望回报,并以最大化奖励函数为目标训练算法。 我的下一篇文章描述了策略梯度定理为何起作用(证明)并介绍了许多策略梯度算法。

离散动作空间:
在这里插入图片描述
其中 S 1 S_1 S1是初始状态。

连续动作空间:
在这里插入图片描述
其中 d π θ ( s ) d_{\pi_{\theta}}(s) dπθ(s) π θ \pi_{\theta} πθ的马氏链的平稳分布,如果你不熟悉“平稳分布”的定义,请检查此参考

使用梯度上升,我们可以找到产生最高回报的最优 θ \theta θ。 很自然地期望基于策略的方法在连续空间中会更有用,因为在连续空间中有无数的动作或状态需要估计价值,因此基于值的方法在计算上要昂贵得多。

策略梯度理论

可以通过在第k维上以少量 ϵ \epsilon ϵ扰动 θ \theta θ来进行梯度的数值计算。 即使 J ( θ ) J(\theta) J(θ)不可微,它也可以工作,但是毫不奇怪,它非常慢。
在这里插入图片描述
或者说:
在这里插入图片描述实际上,我们对用 d π ( . ) d_{\pi}(.) dπ(.)替换 d ( . ) d(.) d(.)有很好的理论支持。
在这里插入图片描述
请查看Sutton&Barto(2017)中的第13.1节,了解为什么是这种情况。

然后:
在这里插入图片描述
该结果称为“策略梯度定理”,为各种策略梯度算法奠定了理论基础:
在这里插入图片描述

Reinforce

Reinforce 也被称为蒙特卡洛策略梯度,依赖 Q π ( s , a ) Q_{\pi}(s,a) Qπ(s,a),一个通过MC方法使用轨迹样本估计的回报,来更新策略参数 θ \theta θ.

REINFORCE的一种常用变体是从回报 G t G_t Gt中减去基线值,以减少梯度估计的方差,同时保持偏差不变。例如,一个常用的基线值是状态价值,如果使用,我将在梯度上升更新中使用 A ( s , a ) = Q ( s , a ) − V ( s ) A(s,a)=Q(s,a)-V(s) A(s,a)=Q(s,a)V(s).
在这里插入图片描述

Actor-Critic

如果除了策略之外还学习了价值函数,我们将获得Actor-Critic算法。

  • Critic: 更新价值函数的参数w,根据算法,它可能是动作价值 Q ( a ∣ s ; w ) Q(a|s;w) Q(as;w)或者状态价值 V ( s ; w ) V(s;w) V(s;w)
  • Actor: 按照Critic建议的方向更新策略参数 θ \theta θ, π ( a ∣ s ; θ ) \pi(a|s;\theta) π(as;θ)

让我们看看它在动作j价值 AC算法中如何工作。
在这里插入图片描述

A3C
进化策略

已知问题

探索-利用 困境
Deadly Triad Issue

案例学习:Alpha Zero

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值