强化学习中的应该理解的一些关键概念(笔记)

简而言之,RL是研究代理以及代理如何通过反复试验来学习的方法。它正式提出了这样一种思想,即通过奖励或惩罚人的行为使其将来更有可能重复或放弃该行为。

1、术语

强化学习中的应该理解的一些关键概念(笔记)

强化学习的主要特征是代理环境。环境是代理生存并与之互动的世界。在交互的每个步骤中,代理都会得到(可能是部分)对世界状态的观察,然后根据状态决定要采取的行动。当代理对它进行操作时,环境会发生变化,但也可能会自行发生变化。

代理还从环境中感知到奖励信号,该数字告诉它当前世界状态的好坏。代理的目标是最大化其累积的奖励,称为return。强化学习方法是代理可以通过学习行为来实现其目标的方法。

为了更具体地讨论RL的作用,我们需要引入其他术语。我们需要了解一下概念:

  • 状态和观察(states and observations),
  • 动作空间(action spaces),
  • 策略(policies),
  • 序列(trajectories),
  • 不同的收益表述(different formulations of return),
  • RL优化问题(the RL optimization problem),
  • 价值函数(value functions)。

1.1状态和观察(States and Observations)

状态 s 是对世界状态的完整描述。不包含关于世界的信息
观察 o 是对状态s的部分描述,可以解释部分被状态忽略的信息。

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

当代理能够观察到环境的完整状态时,我们说该环境是 fully observed。当主体只能看到部分观察时,我们说环境是partially observed的。

1.2 动作空间(action space)

不同的环境允许不同类型的动作。给定环境中所有有效动作的集合通常称为动作空间。

某些环境(例如Atari和Go),代理能够执行的动作是离散的,例如如上下左右这四个动作,我们称它的动作空间为离散动作空间(discrete action spaces)。而其他环境(例如,代理在物理世界中控制机器人的环境),代理的动作是连续的,例如电机角度控制。我们称为连续动作空间(continuous action spaces),在连续空间中,动作是实值向量。

这种区分对深度RL中的方法产生了一些深远的影响。一些算法系列只能在一种情况下直接应用,而在另一种情况下则必须进行大量修改。

1.3 策略(Policies)

策略是使用代理来决定采取何种行动的规则。

如果它可以是确定性的,通常用μ\muμ表示:

at=μ(st)a_t = \mu(s_t)at​=μ(st​)

如果是随机的,通产用π\piπ表示:
atπ(st)a_t \sim \pi(\cdot | s_t)at​∼π(⋅∣st​)

在深度RL中,我们处理参数化策略:输出为可计算函数的策略,这些函数取决于一组参数(例如神经网络的权重和偏差),我们可以通过一些优化算法进行调整以更改行为。

我们通常用θ\thetaθ或表示这种策略的参数ϕ\phiϕ,然后将其作为下标写在策略符号上:
at=μθ(st) a_t = \mu_{\theta}(s_t)at​=μθ​(st​)
at=πθ(st)a_t = \pi_{\theta}(\cdot | s_t)at​=πθ​(⋅∣st​)

1.3.1 确定性策略(Deterministic Policies):

下面使用tensorflow编写的连续动作空间的确定性策略的简单代码:

obs = tf.keras.Input(shape=(None, obs_dim), dtype=tf.float32)
net = mlp(hidden_dims=(64,64), activation=tf.tanh)(obs)
actions = tf.keras.layers.dense(units=act_dim, activation=None)(net)

其中,mlp是一个给定结构和激活函数的神经网络,神经网络直接输出动作值。

1.3.2 随机策略(Stochastic Policies)

随机策略指的是神经网络,或者策略模型,它输出的是动作的概率分布,而不是某个特定的动作,然后再根据概率去对动作进行采样,深度RL中两种最常见的随机策略是分类策略(categorical policies )对角高斯策略(diagonal Gaussian policies)

分类策略可用于离散动作空间,而对角线高斯策略可用于连续动作空间。对于使用和训练随机策略,两个关键计算至关重要:

  • 从策略中对行为取样,
  • 计算特定动作的对数可能性(log likelihoods ),logπθas\log \pi _ {\theta}(a | s)logπθ​(a∣s)。
分类政策(Categorical Policies)

分类策略就像是针对离散操作的分类器。他给出当前状态下每个离散动作的概率。我们可以与构建分类模型相同的方式为分类策略构建神经网络:输入是观察值,然后是若干层(卷积层或全连接层,具体取决于输入的类型),然后便得到最后一个线性层提供每个动作的logit,然后再加上softmax将logit转换为概率。

采样 :给定每个动作的概率,像Tensorflow Probability这样的框架具有内置的采样工具。例如,请参阅tfp.distributions.Categorical文档或tfp.distributions.Multinomial

对数似然 : 将最后一层概率表示为PθP _ {\theta}Pθ​。它是一个包含很多动作的向量,因此我们可以将动作视为向量的索引。我们可以通过索引来获得向量中的动作的对数似然率:
logπθas=log[Pθ(s)]a\log \pi _ {\theta}(a | s)= \log [P _ {\theta} (s)]_alogπθ​(a∣s)=log[Pθ​(s)]a​

高斯策略(Diagonal Gaussian Policies)

多元高斯分布(或多元正态分布)由均值向量μ\muμ和协方差矩阵Σ\SigmaΣ来描述。对角高斯分布是一种特殊情况,其中协方差矩阵仅在对角线上有数值。所以,我们可以用一个向量表示它。

对角高斯策略始终具有一个神经网络,该神经网络将观测值映射为平均动作μθ\mu _ {\theta}μθ​。然后通常有两种不同的方式表示协方差矩阵:

  • 用一个对数标准偏差的向量logσ\log \sigmalogσ表示,它不是关于状态的函数:logσ\log \sigmalogσ是独立参数。(VPG,TRPO和PPO的实现是通过这种方式实现的。)

  • 由一个神经网络提供,是一个关于状态的函数,以记录标准偏差logσθs\log \sigma _ {\theta}(s)logσθ​(s)。它可以选择与均值网络共享某些层。

请注意,在两种情况下,我们都输出对数标准偏差而不是直接输出标准偏差。这是因为log stds可以随意接受中的任何值(-\infty,\infty)(−∞,∞),而stds必须为非负数。如果您不必强制执行这些约束,则训练参数会更容易。可以通过对数标准偏差取幂,立即获得标准偏差,因此通过这种方式表示它们不会损失任何信息。

采样:给定平均动作μθ\mu _ {\theta}μθ​和标准偏差σθ(s)\sigma _ {\theta}(s)σθ​(s),以及一个,来自高斯分布(zN(0I))(z \sim \mathcal {N}(0,I))(z∼N(0,I))的噪声向量zzz,可以使用以下公式计算动作样本:

a=μθs+σθsza = \mu _ {\theta}(s)+ \sigma _ {\theta}(s)\odot za=μθ​(s)+σθ​(s)⊙z

其中\odot⊙表示两个向量的元素之间乘积。我们可以使用标准函数来计算噪声向量,例如tf.random.normal。或者,您可以直接将均值和标准差提供给tfp.distributions.Normal对象,然后使用该值进行采样。

对数似然:具有k维的动作a向量,其高斯分布具有均值μ=μθ(s)\mu = \mu_{\theta}(s)μ=μθ​(s) 方差为σ=σθ(s)\sigma = \sigma_{\theta}(s)σ=σθ​(s) 。其对数似然由以下公式给出:

logπθ(as)=12(i=1k((aiμi)2σi2+2logσi)+klog2π)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 log2 \pi\right )logπθ​(a∣s)=−21​(i=1∑k​(σi2​(ai​−μi​)2​+2logσi​)+klog2π)。

1.4序列(Trajectories)

序列τ\tauτ是由代理与环境交互过程中的一系列状态和动作所组成,其形式如下:
τ=(s0,a0,s1,a1,...)\tau = (s_0,a_0,s_1,a_1,...)τ=(s0​,a0​,s1​,a1​,...)
初始状态s0s_0s0​从初始状态分布中随机抽取,又或者由ρ0\rho_0ρ0​决定:
s0ρ0()s_0 \sim \rho_0(\cdot)s0​∼ρ0​(⋅)

状态转移(即ttt时刻状态sts_tst​,与t+1t+1t+1时刻状态st+1s_{t+1}st+1​之间世界发生了什么),只依赖于最近的动作ata_tat​。

确定性动作:st+1=f(st,at)s_{t+1} = f(s_t, a_t)st+1​=f(st​,at​)
随机动作:st+1P(st,at)s_{t+1} \sim P(\cdot | s_t, a_t)st+1​∼P(⋅∣st​,at​)

这个序列通常也被叫做 episodes 或者 rollouts.

1.5奖励和收益(Reward and Return)

奖励功能RRR在强化学习中至关重要。这取决于当前的世界状态,刚刚采取的行动以及下一世界的状态:

rt=R(st,at,st+1)r_t = R(s_t, a_t, s_{t+1})rt​=R(st​,at​,st+1​)

不过通常将其简化为仅依赖于当前状态rt=Rstr_t = R(s_t)rt​=R(st​)或状态-动作rt=Rstatr_t = R(s_t,a_t)rt​=R(st​,at​)。代理的目标是使某个序列上累积的奖励值最大化,当然这也不一定,实际上可能只是一小部分情况。根据实际情况我们再详说。最常见的有有下两种:

  • 有限无折扣收益,这种情况的回报只是单纯地将每一步所产生的奖励加起来:

R(τ)=t=0TrtR(\tau) = \sum_{t=0}^{T} r_tR(τ)=t=0∑T​rt​

  • 无限折扣收益, 与上一种情况相反,给每一步动作奖励都打个折:

R(τ)=t=0γtrtR(\tau) = \sum_{t=0}^{\infty}\gamma ^t r_tR(τ)=t=0∑∞​γtrt​

但是,为什么我们要折扣系数呢?我们不是只想获得所有奖励吗?可以不用,但是使用折扣率在直观上和数学上都很方便。从直觉上讲:现在现金比以后现金要值钱。数学上:无限水平的奖励之和可能不会收敛到有限的值,并且很难在方程中处理。但是在有折现因子的情况下,并且在合理的条件下,无穷大是收敛的。

1.6 RL优化问题

无论选择哪种收益度量(有限,无限),无论采取何种策略选择方式(随机,确定),RL的目标都是选择一种策略模型,该策略模型使得代理采取行动时能最大化预期收益。

要讨论预期收益,我们首先必须讨论序列上的概率分布。假设环境转变和策略都是随机的。在这种情况下,TTT阶跃序列的概率为:
P(τπ)=ρ0(s0)t=0T1P(st+1st,at)π(atst)P(\tau|\pi) = \rho_0(s_0)\prod_{t=0}^{T-1}P(s_{t+1}|s_t,a_t)\pi(a_t|s_t)P(τ∣π)=ρ0​(s0​)t=0∏T−1​P(st+1​∣st​,at​)π(at​∣st​)

因此,用表示的预期收益(无论采用哪种度量)为J(π)J(\pi)J(π):

J(π)=τP(τπ)R(τ)=Eτπ[R(τ)]J(\pi) = \int_{\tau} P(\tau|\pi)R(\tau) = \underset{\tau \sim \pi}{E}[R(\tau)]J(π)=∫τ​P(τ∣π)R(τ)=τ∼πE​[R(τ)]

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

π=argmaxπJ(π)\pi ^* = arg \underset{\pi}{max}J(\pi)π∗=argπmax​J(π)

其中π\pi ^*π∗为最优策略

1.7 价值函数(Value Functions)

了解 状态 或 状态-动作 的价值通常很有用。所谓价值,是指如果从那个状态或状态-动作开始,然后再根据特定策略采取永远行动,所获得的期望收益。几乎每种RL算法都使用一种或另一种方法使用价值函数。

这里给出主要四种价值函数:

1、On-Policy Value Function —— Vπ(s)V^{\pi}(s)Vπ(s):从状态s开始然后一直根据决策模型π\piπ采取行动

Vπ(s)=Eτπ[R(τ)s0=s]V^{\pi}(s) = \underset{\tau \sim \pi}{E}[R(\tau) | s_0 = s]Vπ(s)=τ∼πE​[R(τ)∣s0​=s]

2、On-Policy Action-Value Function——Qπ(s,a)Q^{\pi}(s,a)Qπ(s,a):从状态s开始,采取随机动作a(该动作比一定来自决策模型),然后一直根据决策模型π\piπ采取行动

Qπ(s,a)=Eτπ[R(τ)s0=s,a0=a]Q^{\pi}(s,a) = \underset{\tau \sim \pi}{E}[R(\tau) | s_0 = s, a_0 = a]Qπ(s,a)=τ∼πE​[R(τ)∣s0​=s,a0​=a]

3、Optimal Value Function ——V(s)V^*(s)V∗(s):从状态s开始,一直根据当前环境中的最优策略采取行动

V(s)=maxπEτπ[R(τ)s0=s]V^{*}(s) =\underset{\pi}{max} \underset{\tau \sim \pi}{E}[R(\tau) | s_0 = s]V∗(s)=πmax​τ∼πE​[R(τ)∣s0​=s]

4、Optimal Action-Value Function——Q(s,a)Q^{*}(s,a)Q∗(s,a):从状态s开始,采取随机动作a,然后一直根据当前环境中的最优策略采取行动

Q(s,a)=maxπEτπ[R(τ)s0=s,a0=a]Q^*(s,a) = \underset{\pi}{max} \underset{\tau \sim \pi}{E}[R(\tau)| s_0 = s, a_0 = a ]Q∗(s,a)=πmax​τ∼πE​[R(τ)∣s0​=s,a0​=a]

有两个很关键的联系:
Vπ(s)=EaπQπ(s,a)V^{\pi}(s) = \underset{a\sim \pi}{E}{Q^{\pi}(s,a)}Vπ(s)=a∼πE​Qπ(s,a)
V(s)=maxaQ(s,a)V^*(s) = \max_a Q^* (s,a)V∗(s)=amax​Q∗(s,a)

1.8 最优Q函数和最优策略(The Optimal Q-Function and the Optimal Action)

optimal action-value函数Q(s,a)Q ^ *(s,a)Q∗(s,a)与最优策略模型选择出来的动作之间存在重要的联系。根据Q(s,a)Q ^ *(s,a)Q∗(s,a)定义,最优策略模型会根据当前状态s选择出能够使收益最大化的动作,因此,如果我们知道了QQ^*Q∗,就能直接获取最优动作,
as=argmaxaQ(s,a)a ^ *(s)= \arg \max_a Q ^ *(s,a)a∗(s)=argamax​Q∗(s,a)

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

1.9 贝尔曼方程(Bellman Equations)

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

起点的价值是您期望从那里得到的回报,再加上下一次到达的地方的价值。

  • on-policy value functions 的贝尔曼方程为:

Vπ(s)=Eaπ sP[r(s,a)+γVπ(s)]V^{\pi}(s)= \underset{a \sim \pi \ s'\sim P}{E}[r(s,a) + \gamma V^{\pi}(s')] Vπ(s)=a∼π s′∼PE​[r(s,a)+γVπ(s′)]

Qπ(s,a)=EsP[r(s,a)+γEaπQπ(s,a)]Q^{\pi}(s,a) = \underset{s'\sim P}{E}[{r(s,a) + \gamma \underset{a'\sim \pi}{E}{Q^{\pi}(s',a')}}]Qπ(s,a)=s′∼PE​[r(s,a)+γa′∼πE​Qπ(s′,a′)]

其中
ss's′指下一状态,
sP=sP(s,a)s' \sim P = s' \sim P(\cdot |s,a)s′∼P=s′∼P(⋅∣s,a)
aπ=aπ(s)a \sim \pi = a \sim \pi(\cdot|s)a∼π=a∼π(⋅∣s)
aπ=aπ(s)a' \sim \pi=a' \sim \pi(\cdot|s')a′∼π=a′∼π(⋅∣s′)

  • optimal value functions的bellman方程:

Vs= maxa underEs simPrsa+ gammaVs V ^ *(s)&= \ max_a \ underE {s'\ sim P} {r(s,a)+ \ gamma V ^ *(s')}V∗(s)&= maxa​ underEs′ simPr(s,a)+ gammaV∗(s′)

Qsa= underEs simPrsa+ gamma maxaQsaQ ^ *( s,a)&= \ underE {s'\ sim P} {r(s,a)+ \ gamma \ max_ {a'} Q ^ *(s',a')}Q∗(s,a)&= underEs′ simPr(s,a)+ gamma maxa′​Q∗(s′,a′)

策略模型的价值函数和最优价值函数的Bellman方程之间的关键区别是 max\ max max过度动作的存在与否。它的包含反映了这样一个事实,即代理每当选择其行动时,为了采取最佳行动,就必须选择导致最高价值的行动。

2.0 优势函数

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

决策π\piπ的Aπ(s,a)A ^ {\pi}(s,a)Aπ(s,a)描述了,在状态s下执行特定动作a,比根据π(s)\pi(\cdot | s)π(⋅∣s)随机选择一个动作要好多少,假定往后的行为都是根据π\piπ产生的。在数学上,优势函数定义为:
Aπ(s,a)=Qπ(s,a)Vπ(s)A^{\pi}(s,a) = Q^{\pi}(s,a) - V^{\pi}(s)Aπ(s,a)=Qπ(s,a)−Vπ(s)

强化学习中的应该理解的一些关键概念(笔记)强化学习中的应该理解的一些关键概念(笔记) 我是。 发布了12 篇原创文章 · 获赞 77 · 访问量 3万+ 私信 关注
上一篇:3. Distributional Reinforcement Learning with Quantile Regression


下一篇:安全性 – PHP exec()是否将执行的命令存储在任何地方?