美文网首页
强化学习中的关键概念

强化学习中的关键概念

作者: 博士伦2014 | 来源:发表于2018-11-15 16:49 被阅读0次

    原文链接:rl_intro

    1. 关键概念和术语 

    Agent-environment interaction loop.

    RL的主要特征是agent环境。环境是agent居住并与之互动的世界。在交互的每一步中,agent都会看到(可能是部分的)对世界状态的观察,然后决定要采取的行动。当agent对其起作用时,环境会发生变化,但也可能会自行更改。

    agent还会感知来自环境的奖励信号,这个数字告诉它当前世界状态的好坏。agent的目标是最大化其累积奖励,称为回报。强化学习方法是agent可以学习行为以实现其目标的方式。

    为了更具体地讨论RL可以做什么,我们需要引入其他术语:

    1. 状态和观察,

    2. 动作空间,

    3. 策略,

    4. 轨迹,

    5. 不同的回报方式,

    6. RL优化问题,

    7. 值函数。

    1 .  状态和观察 

    一个状态s 是世界状态的完整描述。没有关于世界隐藏的信息。一个观察 o是一种状态,其中可省略的信息的部分描述。

    在DRL中,我们几乎总是通过实值向量,矩阵或高阶张量来表示状态和观察。例如,视觉观察可以由其像素值的RGB矩阵表示; 机器人的状态可以用它的关节角度和速度来表示。

    当agent能够观察到环境的完整状态时,我们说完全遵守了环境。当代理人只能看到部分观察时,我们说环境是部分观察到的

    You Should Know

    强化学习符号标记有时会将状态符号s放在技术上更适合写观察符号o的地方。 具体而言,这在谈论agent如何决定动作时会发生这种情况:我们经常用符号表示动作是以状态为条件,在实践中,动作以观察为条件,因为agent无法进入状态。

    2.  动作空间

    不同的环境允许不同类型的动作。给定环境中的所有有效动作集通常称为动作空间。某些环境(如Atari和Go)具有离散的动作空间,其中只有有限数量的动作可用于agent。其他环境,例如代理控制物理世界中的机器人,具有连续的动作空间。在连续空间中,动作是实值向量。

    这种区别对深度RL中的方法有一些非常深刻的影响。一些算法系列只能直接应用于一种情况,并且必须对另一种情况进行大量重写。

    3 .  策略

    一个策略是使用agent来决定采取何种动作的规则。它可以是确定性的,在这种情况下,它通常表示为\mu

                                                                  a_t = \mu(s_t)

    或者它可能是随机的,在这种情况下它通常表示为\pi :

                                                                 a_t \sim \pi(\cdot | s_t)。

    由于该策略本质上是agent的大脑,因此将“策略”一词替换为“agent”并不常见,例如说“策略试图最大化奖励”。

    在深度RL中,我们处理参数化策略:其输出是可计算函数的策略,这些函数依赖于一组参数(例如神经网络的权重和偏差),我们可以调整这些参数以通过某种优化算法改变行为。我们经常用\theta 或表示这种策略的参数\phi ,然后将其写为策略符号的下标以突出显示连接:

    a_t= \mu _ {\theta}(s_t)\\a_t\sim \pi _ {\theta}(\cdot | s_t)

    3.1 确定性策略

    以下是用于在Tensorflow中为连续操作空间构建简单确定性策略的代码段:

    其中`mlp`是一个函数,它使用给定的大小和激活函数将多个密集层堆叠在一起。

    3.2 随机策略

    DRL中最常见的两种随机策略是categorical policies - 分类策略diagonal Gaussian policies - 对角高斯策略

    分类策略可用于离散动作空间,而对角高斯策略用于连续动作空间。

    两个关键计算对于使用和训练随机策略至关重要:

    1. 从策略中抽样采取行动,

    2. 并计算特定动作的对数可能性(log likelihoods) \log \pi_{\theta}(a|s)

    下面介绍如何对分类和对角高斯策略执行这些操作

    3.2.1 分类策略

    分类策略就像离散动作的分类器。你为分类策略构建神经网络的方式与分类器相同:输入是观察,后面跟着一些层(可能是卷积或密集连接,取决于输入的类型),然后你有最后一个线性层,为你提供每个动作的logits,然后是softmax,将logits转换为概率。

    Sampling 考虑到每个动作的可能性,Tensorflow等框架具有内置的抽样工具。例如,请参阅tf.distributions.Categorical文档或tf.multinomial

    Log-Likelihood   将最后一层概率表示为 P_{\theta}(s)。它是一个带有多个条目的向量,因为有动作,所以我们可以将动作视为向量的索引。然后可以通过索引到向量来获得动作a的对数似然:

                                                         \log \pi_{\theta}(a|s) = \log \left[P_{\theta}(s)\right]_a.

    3.2.2 对角高斯策略

    多变量高斯分布(或多变量正态分布)由平均向量\mu ,和协方差矩阵\Sigma描述。对角高斯分布是协方差矩阵仅在对角线上具有元素的特殊情况。 结果,我们可以用矢量来表示它。

    对角高斯策略总是有一个神经网络,从观察到平均动作映射,\mu_{\theta}(s)。 通常表示协方差矩阵有两种不同的方式。

    第一种方式:有一个对数标准偏差向量,\log \sigma,它不是状态函数:\log \sigma是独立参(VPG,TRPO和PPO的实现方式是这样做的)

    第二种方式:有一个神经网络从状态映射到对数标准偏差, \log \sigma_{\theta}(s)。 它可以选择与平均网络共享一些层。

    请注意,在这两种情况下,我们都直接输出对数标准偏差而不是标准偏差。这是因为log stds可以自由地接受 (-\infty, \infty)中的任何值,而stds必须是非负的。如果你不必执行这些类型的约束,则更容易训练参数。 标准偏差可以通过取幂来立即从对数标准偏差中获得,因此我们不会通过这种方式表示它们而失去任何东西。

    Sampling. 给定平均动作\mu_{\theta}(s)和标准偏差 \sigma_{\theta}(s), 以及来自球形高斯 (z \sim \mathcal{N}(0, I))的噪声矢量z, 可以计算动作样本

                                                   a = \mu_{\theta}(s) + \sigma_{\theta}(s) \odot z,

    其中\odot 表示两个向量的元素乘积。标准框架具有计算噪声向量的内置方法,例如tf.random_normal。或者,你可以直接向tf.distributions.Normal对象提供均值和标准差,并使用它进行采样。

    Log-Likelihood. 对于具有平均值 \mu = \mu_{\theta}(s)和标准偏差 \sigma = \sigma_{\theta}(s)的对角高斯的k-维动作a的对数似然由下式给出:

                   \log \pi_{\theta}(a|s) = -\frac{1}{2}\left(\sum_{i=1}^k \left(\frac{(a_i - \mu_i)^2}{\sigma_i^2} + 2 \log \sigma_i \right) + k \log 2\pi \right).

    4.  轨迹

    轨迹\tau 是世界上一系列的状态和行为,

                                                         \tau = (s_0, a_0, s_1, a_1, ...).

    第一个状态,s_0,是从起始状态分布中随机抽样的,有时表示为\rho_0

                                                                      s_0 \sim \rho_0(\cdot).

    状态转换(在时间 t 的状态,s_tt + 1 的状态,s_ {t + 1} 之间的发生的事情)受环境的自然规律支配,并且仅依赖于最近的行动,a_t。 它们可以是确定性的,

                                                              s_{t+1} = f(s_t, a_t)

    或随机的,

                                                            s_{t+1} \sim P(\cdot|s_t, a_t).

    动作由agent根据其策略产生。

    You Should Know

    Trajectories - 轨迹也经常被称为episodes - 剧集或 rollouts - 推出

    5 . 奖励和回报

    奖励函数在强化学习中至关重要。这取决于当前的状态,刚刚采取的动作以及下一个状态:

                                                      r_t = R(s_t, a_t, s_{t+1})

    虽然经常将其简化为仅依赖于当前状态,r_t = R(s_t),或状态 - 动作对r_t = R(s_t,a_t).

    Agent的目标是在轨迹上最大化累积奖励的一些概念,但这实际上可能意味着一些事情。我们将用 R(\tau)来表示所有这些情况,并且它将从上下文中清楚地表明我们的意思,或者它无关紧要(因为相同的方程将适用于所有情况)。

    一种回报是有限期未折现的回报,它只是在固定的步骤窗口中获得的奖励总和:

                                                               R(\tau) = \sum_{t=0}^T r_t.

    另一种回报是无限视距折扣回报,这是所有奖励的总和以往的由代理获得,但在未来会得到怎样离谱他们打折。这种奖励制定包括折扣因子 \gamma \in (0,1)

                                                            R(\tau) = \sum_{t=0}^{\infty} \gamma^t r_t.

    为什么我们想要折扣因子呢?我们不想只获得所有奖励吗?我们确实想要,但折扣因子既直观在数学上又方便。从直观的角度来说:现在现金比以后更好。数学上:无限期的奖励总和可能无法收敛到有限值,并且很难在方程式中处理。但是在折扣因子和合理条件下,无限期的奖励总和可以收敛。

    You Should Know

    虽然这两种回报方式之间的界限在RL Formalism中非常明显,但深度RL实践往往会使线条模糊不清 - 例如,我们经常设置算法来优化未折现的回报,但在估算值函数时使用折扣因子。

    6 .  RL问题

    无论选择何种回报指标(无论是无限折扣还是有限折扣),无论选择何种策略,RL的目标都是

    选择一种策略,当agent根据它采取行动时,最大化预期回报。

    在我们谈论预期回报时,我们首先要讨论轨迹-Trajectories上的概率分布

    假设环境转换和策略都是随机的。在这种情况下,T-step 轨迹的概率是:

                                   P(\tau \vert \pi )=\rho _0(s_0)\prod_{t=0}^{T-1} P(s_{t+1}\vert s_t,a_t)\pi(a_t\vert s_t)

    预期回报表示为:

    RL中的中心优化问题可以表示为:

                                                             \pi^* = \arg \max_{\pi} J(\pi),

    其中是\pi^*最优策略

    7.  值函数 - Value Functions

    了解状态或者状态-动作对的通常很有用通过值,我们指的是如果你从该状态或状态-行动对开始的预期回报,然后永远按照特定策略行事。在几乎每种RL算法中,都以这种或那种方式使用值函数

    有四个主要的值函数:

    1. On-Policy Value Function,V^{\pi}(s)如果你从状态s开始并且总是根据策略\pi行动,它会给出预期的回报

    2. On-Policy Action-Value Function, Q^{\pi}(s,a), 如果你从状态s开始,采取任意动作 a(可能不是来自策略),然后永远根据策略\pi行事,则给出预期的回报

    3. Optimal Value FunctionV^{*}(s), 如果你从状态s开始并且始终根据环境中的最优策略采取动作,则给出预期的回报

    4. Optimal Action-Value FunctionQ^{*}(s,a),如果你从状态s开始,采取任意行动a,然后永远根据环境中的最优策略行动,则给出预期的回报

    You Should Know

    值函数和动作值函数之间有两个关键连接经常出现:

                                                          V^*(s) = \max_a Q^* (s,a).

    这些关系直接来自刚刚给出的定义:你能证明它们吗?

    7.1  最优Q函数和最优动作

    最优动作值函数Q^{*}(s,a)与最优策略\pi^{*}选择的行动之间存在重要联系。根据定义,Q^{*}(s,a)给出了从状态s开始,采取(任意)动作a,然后永久地根据最优策略行动的预期回报。

    在状态s的最优策略将选择从状态s开始最大化预期回报的动作。 结果就是,如果我们有Q ^ *,我们可以直接获得最优动作a ^ *(s),通过下式:

                                                        a^*(s) = \arg \max_a Q^* (s,a).

    注意:可能存在多个最大化的动作Q^{*}(s,a),在这种情况下,所有动作都是最优的,并且最优策略可以随机选择它们中的任何一个。但总有一种确定性地选择动作的最优策略。

    7.2  贝尔曼方程

    所有四个值函数都遵循称为Bellman方程的特殊自洽方程。Bellman方程背后的基本思想是:

           你的出发点的值是你期望从那里获得的奖励,加上你下次到达的点的值。

    on-policy value functions (值函数)的Bellman方程是

    其中 s^{\prime} \sim Ps^{\prime} \sim P(\cdot |s,a)的缩写,表示从环境的转换规则中采样下一个状态 s^{\prime};

    a \sim \pi 是a \sim \pi(\cdot |s)的缩写,a^{\prime} \sim\pia^{\prime} \sim\pi(\cdot |s^{\prime})的缩写

    最优值函数的Bellman方程是

    关于on-policy 值函数的Bellman方程与最优值函数之间的关键区别在于:max动作的存在或不存在。它的包含反映了这样一个事实,即每当agent选择其行动时,为了表现最优,它必须选择导致最高值的行动。

    You Should Know

    在RL文献中,术语“Bellman backup”经常出现。状态或状态 - 动作对的Bellman backup是Bellman方程的右侧:奖励加下一个值。

    7. 3  优势函数 - Advantage Functions

    有时候在RL中,我们不需要描述一个绝对意义上的行为有多好,而只需要比其他人平均好多少。也就是说,我们想知道该行动的相对优势。我们通过优势函数使这个概念精确

    对应于策略\pi的优势函数描述了根据\pi(\cdot |s)随机选择一个动作,在状态s中采取特定动作的好坏程度,假设你之后永远按照\pi行动。 在数学上,优势函数定义如下:

                                                    A^{\pi}(s,a) = Q^{\pi}(s,a) - V^{\pi}(s).

    You Should Know

    优势函数对于策略梯度方法至关重要。

    7. 4  Formalism

    到目前为止,我们已经以非正式的方式讨论了agent的环境,但是如果你试图深入研究文献,那么你可能会遇到这种设置的标准数学形式:马尔可夫决策过程(MDP)。MDP是一个5元组

    \langle S,A,R,P,\rho_0 \rangle,其中

    1. S 是所有有效状态的集合,

    2. A 是所有有效行动的集合,

    3. R: S \times A \times S \to \mathbb{R} 是奖励函数,其中r_t = R(s_t, a_t, s_{t+1})

    4. P:S \times A \to \mathcal{P}(S) 是转移概率函数,如果你从状态s开始并采取动作 a,

    P(s'|s,a)是转变为状态 s' 的概率

    5. \rho_0是起始状态分布

    马尔可夫决策过程这个名称指的是系统服从马尔可夫属性的事实:转换只取决于最近的状态和行动,而不是先前的历史。

    相关文章

      网友评论

          本文标题:强化学习中的关键概念

          本文链接:https://www.haomeiwen.com/subject/xvuyfqtx.html