强化学习中的关键概念

2018-11-15  本文已影响0人  博士伦2014

原文链接: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是起始状态分布

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

上一篇下一篇

猜你喜欢

热点阅读