【强化学习】你应该理解的一些关键概念

本文详细介绍了强化学习中的核心概念,包括状态和观察、动作空间、策略、序列、奖励和收益,以及价值函数。文章特别强调了确定性和随机策略的区别,并提供了分类政策和高斯策略的实例。此外,还探讨了贝尔曼方程和优势函数在强化学习中的作用。
摘要由CSDN通过智能技术生成

简而言之,RL是研究代理以及代理如何通过反复试验来学习的方法。它正式提出了这样一种思想,即通过奖励或惩罚人的行为使其将来更有可能重复或放弃该行为。以下两篇文章会结合本篇理论部分给出代码实践:

ppo算法 关键公式+代码(一)
ppo算法 关键公式+代码(二)

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 μ表示:

a t = μ ( s t ) a_t = \mu(s_t) at=μ(st)

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

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

我们通常用 θ \theta θ或表示这种策略的参数 ϕ \phi ϕ,然后将其作为下标写在策略符号上:
a t = μ θ ( s t ) a_t = \mu_{\theta}(s_t) at=μθ(st)
a t = π θ ( ⋅ ∣ s t ) 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 ⁡ π θ ( a ∣ s ) \log \pi _ {\theta}(a | s) logπθas
分类政策(Categorical Policies)

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

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

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

高斯策略(Diagonal Gaussian Policies)

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

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

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

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

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

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

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

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

对数似然:具有k维的动作a向量,其高斯分布具有均值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值