AIGC实战——天下模型(World Model)

打印 上一主题 下一主题

主题 1863|帖子 1863|积分 5589

0. 媒介

天下模型 (World Model) 展示了如何通过在天生的想象环境中举行实验来练习模型(而不是在真实环境中举行练习),从而学习如何执行特定任务。天下模型很好的阐明白如何将天生模型与其他机器学习技能(如强化学习)相团结使用解决现实问题。
该架构的关键构成部分是天生模型,它可以根据当前状态和动作构建下一个可能状态的概率分布。该模型通过随机运动创建对基本物理环境的相识之后,该模型能够完全依靠自身对环境的内部表示来自我练习一个新任务。在本章中,我们将详细介绍天下模型,相识智能体如何学习尽可能快地驾驶汽车在虚拟赛道上行驶。
1. 强化学习

强化学习 (Reinforcement Learning, RL) 是机器学习的一个领域,旨在练习一个智能体在给定环境中以达到特定目标,以取得最大化的预期利益。
判别模型和天生模型都旨在通过观测数据集来最小化损失函数,而强化学习旨在最大化智能体在给定环境中的长期嘉奖。通常,我们将强化学习视为机器学习的三个重要分支之一,另外两个是监视学习(使用标志数据举行猜测)和无监视学习(从无标签数据中学习布局)。
接下来,我们首先介绍与强化学习相关的一些关键概念:


  • 环境 (Environment):智能体在其中运行的天下。它定义了一组规则,这些规则决定了在给定智能体当前动作和当前游戏状态的环境下,游戏状态的更新过程和嘉奖分配。例如,假如我们练习强化学习算法下国际象棋,那么构成环境的规则将控制某个动作如何影响下个游戏状态,并确定如何评估一个给定位置是否会被将军,并在得胜之后嘉奖得胜玩家 1 分
  • 智能体 (Agent):在环境中执行动作的实体
  • 状态 (State):表示智能体可能遇到的特定环境的数据。例如,特定的棋盘设置,以及附带的游戏信息
  • 动作 (Action):智能体可以采取的可行行动
  • 嘉奖 (Reward):在采取动作后由环境返回给智能体的值。智能体的目标是最大化长期的嘉奖总和。例如,在一局国际象棋中,将死对方王的动作的嘉奖 1 分,而其他所有动作都没有嘉奖,而有些游戏会在整个游戏过程中不停获得嘉奖
  • 回合 (Episode):智能体在环境中的一轮运行过程
  • 时间步 (Timestep):对于离散变乱环境,所有状态、动作和嘉奖都带有下标,用以表示它们在时间步                                         t                                  t                     t 上的值
这些概念之间的关系如下图所示。

环境首先通过当前游戏状态                                              s                            0                                       s_0                  s0​ 举行初始化。在时间步                                    t                              t                  t,智能体吸取当前游戏状态                                              s                            t                                       s_t                  st​,并根据此状态决定下一个最佳动作                                              a                            t                                       a_t                  at​,并执行该动作。根据这个动作,环境盘算下一个状态                                              s                                       t                               +                               1                                                 s_{t+1}                  st+1​ 和嘉奖                                              r                                       t                               +                               1                                                 r_{t+1}                  rt+1​,并将它们传递回给智能体,以开始下一个循环。循环会一直到满足回合的结束条件(例如,经过给定的时间步或智能体胜利/失败)为止。
在给定环境中,为了设计一个智能体以最大化嘉奖总和,我们可以构建一个包含一组规则的智能体,用于应对任何给定的游戏状态。然而,随着环境变得更加复杂,这种方法很快就会失效,而且由于规则是硬编码的,因此无法构建具有超越人类的智能体。而强化学习的过程则是创建一个智能体,该智能体能够通过在复杂的环境中重复游戏来自行学习最佳策赂。
2. OpenAI Gym

接下来,我们首先介绍 OpenAI Gym,其包含 CarRacing 环境,我们将使用此环境模拟一辆绕赛道行驶的赛车。
2.1 CarRacing 环境

CarRacing 是通过 Gymnasium 库提供的一个环境。Gymnasium 是一个用于开发强化学习算法的 Python 库,包含了多个经典的强化学习环境,如 CartPole 、Pong 以及 Atari 游戏等。
2.2 GYMNASIUM

Gymnasium 是 OpenAI Gym 库的一个分支,自 2021 年起,Gym 的进一步开发已转移到 Gymnasium。
所有环境都提供了 step 方法,通过该方法可以提交一个给定的动作;环境将返回下一个状态和嘉奖,通过该方法能够应用智能体选定的动作,并返回下一个状态和嘉奖,可以反复使用智能体选择的动作调用 step 方法,在环境中完成一个回合;reset 方法用于将环境规复到初始状态;render 方法可以渲染环境,用于调试并改进模型。
在 CarRacing 环境中,状态、动作、嘉奖和回合的定义如下:


  • 状态:尺寸为 64 × 64 的 RGB 图像,刻画了赛道和汽车的俯视图
  • 动作:包含 3 个值,方向盘转向 (-1 到 1)、加快度 (0 到 1) 和刹车 (0 到 1),智能体必须在每个时间步设置这三个值
  • 嘉奖:每个时间步都会得到一个负的惩罚值 -0.1,并且假如前进到新的赛道块,则会得到一个正的嘉奖值 1000/N,其中 N 表示赛道的总块数
  • 回合:当汽车行驶完整个赛道、驶出环地步限或超过 3000 个时间步后,回合结束
3. 天下模型架构

接下来,在详细介绍每个组件之前,我们首先对天下模型架构和练习过程举行简要介绍。模型架构由以下三个差别的部分构成,如下图所示:


  • V:VAE (variational autoencoder,变分自编码器)
  • M:MDN-RNN (recurrent neural network with a mixture density network,混合全连接网络的循环神经网络)
  • C:控制器 (controller)
3.1 VAE

在驾驶汽车时,我们并不会主动分析视野中的每个像素,而是将视觉信息压缩成少量的潜在实体,例如门路的平展程度、即将到来的弯道以及车辆相对于门路的位置,以根据这些信息决定下一步的动作。
VAE 通过最小化重建偏差和 KL 散度,可以将高维输入图像压缩成一个近似遵循标准高斯分布的潜随机变。这确保了潜空间是连续的,并且我们能够很容易从中采样天生故意义的新观测值。
在赛车示例中,VAE 将尺寸为 64 × 64 × 3 (RGB) 的输入图像压缩成一个 32 维的遵循正态分布的随机变量,该变由参数 mu 和 logvar 参数化。其中,logvar 是分布的方差的对数。我们可以从该分布中采样,天生表示当前状态的潜向量 z。然后将其传递给神经网络的下一个部分,MDN-RNN。
3.2 MDN-RNN

在驾驶时,我们并不会对每个后续观察感到意外。假如当前观察表明前方是一个左转弯,我们会将方向盘向左转,并且期望下一个观测表明车辆仍然保持在门路中间。
假如不具备这种能力,那么驾驶时汽车可能会在门路上摇摆不定,因为无法看到前进的方向是否偏离了门路中心,假如不采取步伐,在下一时间步偏离会越来越严峻。
在天下模型中,这种能力由 MDN-RNN 提供,MDN-RNN 网络能够根据前一个潜状态和前一个动作来猜测下一个潜状态的分布。详细来说,MDN-RNN 是一个包含 256 个隐蔽单位的是非期记忆 (Long Short Term Memory, LSTM) 层,后面跟着一个混合全连接网络 (Mixture Density Network, MDN) 输出层,因此它能够从几种正态分布中提取下—个隐状态。
“天下模型”也可以应用于手写天生任务,如下图所示,下一次笔尖可以落在红色区域内的任意一点。

在赛车示例中,下一个观测到的隐状态中的每个元素都可以从五个正态分布中抽取。
3.3 控制器

控制器可以用于选择动作。控制器是一个全连接神经网络,输入是从 VAE 编码的分布中抽样得到的当前潜在状态 z 和全连接网络 (Recurrent Neural Network, RNN) 的隐蔽状态。输入迷经元对应于三个动作(转向、加快、刹车),并且经过缩放以落入适当的范围内。
控制器使用强化学习举行练习,因为没有练习数据集能告诉我们某个动作是好的还是坏的,智能体通过重复实验本身学习。
“World Models” 的关键是,它展示了如何在智能体自身的天生环境模型(而不是 OpenAI Gym 提供的环境)中举行强化学习。换句话说,这种强化学习只需依靠智能体想象的环境,而不必要真实的环境。
为了明白这三个组件的差别角色以及它们如何协同工作,我们思量以下示例:


  • VAE 查看最新的尺寸为 64 × 64 × 3 的观测图像,并猜测这是一条直行门路,前方有一个很小的左转弯,汽车朝着门路的方向行驶 (z)
  • RNN:基于该描述 (z) 和控制器在上一个时间步选择的动作,更新隐蔽状态 (h),以便下一个观察猜测仍然是一条笔挺的门路
  • 控制器:基于来自 VAE 的描述 (z) 和来自 RNN 的当前隐蔽状态 (h),神经网络输出下一个动作
然后将控制器的动作传递给环境,环境返回更新后的观测图像,并不停重复此过程。
4. 天下模型练习

练习过程包括以下五个步骤:

  • 收集随机 rollout 数据。在这个阶段,智能体并不关心给定任务,而只是使用随机动作探索环境。使用 OpenAI Gym 模拟多个回合,并存储每个时间步的观察状态、动作和嘉奖。目的是创建一个关于环境工作方式的数据集,之后 VAE 可以从中学习以高效地捕捉状态为潜在向量。然后,MDN-RNN 可以学习隐向量如何随时间的推移而变革
  • 练习 VAE。使用随机收集的数据,在观测图像上练习 VAE
  • 收集数据用于练习 MDN-RNN:在 VAE 练习完成后,我们将其用于将每个收集到的观测值编码为为 mu 和 logvar 向量,并将其与当前动作和嘉奖一起生存
  • 练习 MDN-RNN:每批为 100 个回合,并加载在第 3 步中天生的每个时间步相应的 mu、logvar、动作和嘉奖。然后,根据 mu 和 logvar 向量中采样一个 z 向量。给定当前的 z 向量、动作和嘉奖,练习 MDN-RNN 猜测下一个 z 向量和嘉奖
  • 练习控制器。使用练习好的 VAE 和 RNN,练习控制器,使其在给定 RNN 的当前 z 和隐蔽状态h的环境下输出一个动作。控制器使用进化算法 CMA-ES 作为优化器。假如矩阵权重天生的动作能够提高任务的总体得分,则该算法会给予嘉奖,以便后代也有可能继承这种所期望的行为
接下来,我们参考 GitHub 上“天下模型”的 TensorFlow 实现,详细介绍每一步骤。
4.1 收集随机 rollout 数据

第一步是使用一个智能体采取随机动作从环境中收集 rollout 数据。我们终极渴望智能体学习如何采取最佳动作,这一步用于提供智能体学习天下的运作方式以及其动作如何(早先是随机的)影响后续观测数据。
我们可以通过启动多个 Python 历程并行捕获多个回合,每个历程运行一个单独的环境实例来同时捕获多个回合。可以通过在终端上运行以下命令来收集数据:
  1. python WorldModels/extract.py --parallel_processes --max_trials --max_frames
复制代码
使用的超参数如下:


  • parallel_processes:要运行的并行历程数(例如,假如您的盘算机具有 ≥8 个核心,则为 8)
  • max_trials:每个历程应总共运行的回合数(例如,125,因此 8 个历程将创建总共 1,000 个回合)
  • max_frames:每个回合的最大时间步数(例如,300)
下图表现了一个回合内第 40 至 59 帧的状态,汽车靠近一个弯道,并随机选择动作和嘉奖。请注意,当汽车在新的赛道块上移动时,嘉奖会从 -0.1 变为 3.22,否则保持不变。

4.2 练习 VAE

如今,我们根据收集的数据构建一个天生模型 VAE,VAE 的目的是使我们能够将一个 64 × 64 × 3 的图像压缩为一个遵循正态分布的随机变量 z,其分布由向量 mu 和 logvar 参数化,每个向量的长度都是 32。可以通过在终端上运行以下命令来练习 VAE:
  1. python WorldModels/extract.py --vae_batch_size --z_size --vae_num_epoch
复制代码
使用的超参数如下:


  • vae_batch_size:练习VAE时使用的批巨细(每批的观测数,例如 100)
  • z_size:潜向量 z 的长度,也是 mu 和 logvar 变量的长度(例如 32)
  • vae_num_epoch:练习时的迭代次数(例如 10)
4.2.1 VAE 布局

Keras 不但允许我们定义将被端到端练习的 VAE 模型,还允许定义单独定义编码器和解码器的额外子模型。当我们想要编码特定图像或解码给定的 z 向量时,这些子模型将非常有效。我们将定义 VAE 模型和三个子模型,如下所示:


  • VAE:完整的、端到端 VAE 模型,担当尺寸为 64 × 64 × 3 的图像作为输入,并输出一个重建的 64 × 64 × 3 图像
  • encode_mu_logvar;模型担当尺寸为 64 × 64 × 3 的图像作为输入,并输出对应于此输入的 mu 和 logvar 向量,将同一输入图像多次输入到该模型将产生雷同的 mu 和 logvar 向量
  • Encode:模型担当尺寸 64 × 64 × 3 的图像作为输入,并输出一个采样得到的z向量。将同一输入图像多次输入到该模型将每次产生差别的 z 向量,因为纵然 mu 和 log_var 的值恒定,随机采样得到的 z向量每次也会有所差别
  • Decode:模型担当一个z向量作为输入,并返回重建的尺寸为 64 ×64 × 3 的图像。
模型和子模型架构如下图所示。

4.2.2 探索 VAE

接下来,我们观察 VAE 和每个子模型的输出,以相识如何使用 VAE 生玉成新的赛道观测。
假如将观测图像输入 VAE,它就能够准确地重建原始图像,如下图所示,这可以直观的检查 VAE 是否正常工作。

4.2.3 编码器模型

假如将观察图像输入到 encode_mu_logvar 模型,就可以输出用于描述多元正态分布的 mu 和 logvar 向量。encoder 模型还会进一步从该分布中采样特定的z向量。编码器模型的两个输出如下图所示。

潜变量 z 是从由 mu 和 logvar 定义的高斯分布中采样得到的,方法是从标准高斯分布中采样,然后对采样向量举行缩放平静移:
  1. eps = tf.random_normal(shape=tf.shape(mu))
  2. sigma = tf.exp(logvar * 0.5)
  3. z = mu + eps * sigma
复制代码
4.2.4 解码器模型

解码器模型担当一个 z 向量作为输入,并重建原始图像。在下图中,我们对 z 的两个维度举行线性插值,以展示每个维度如何编码赛道的特征,例如, z[4] 控制着最靠近车辆的赛道的左/右方向,而 z[7] 控制了前方左转弯的急缓程度。
这表明 VAE 学习的潜空间是连续的,可以用来天生智能体从未观察过的全新赛道段。
4.3 收集数据用于练习 MDN-RNN

接下来,我们可以使用练习好的 VAE,为 MDN-RNN 天生练习数据。
在这一步中,我们将所有随机 rollout 数据都输入到 encode_mu_logvar 模型中,并存储与每个观测相对应的 mu 和 logvar 向量。我们将使用这些编码数据,以及已经收集到的动作、嘉奖用于练习 MDN-RNN,该过程如下图所示。

4.4 练习MDN-RNN

如今,我们可以练习 MDN-RNN 根据当前的 z 向量、当前动作和上一个嘉奖,猜测下一个 z 向量的分布和嘉奖。然后,我们可以使用 RNN 内部的隐蔽状态(可以看作是模型对环境动态的当前明白)作为控制器输入的一部分,以猜测要采取的下一个动作。可以通过在终端上运行以下命令来练习 MDN-RNN:
  1. python WorldModels/rnn_train.py --rnn_batch_size --rnn_num_steps
复制代码
超参数如下:


  • rnn_batch_size:练习 MDN-RNN 时使用的批巨细(每批数据含有多少个序列,例如 100)
  • rnn_num_steps:练习的总迭代次数(例如 4000)
4.4.1 MDN-RNN 架构

MDN-RNN 架构如下图所示。

MDN-RNN 由一个 LSTM 层和一个全连接层构成。其中,LSTM 将编码的 z 向量(长度为 32),当前动作(长度为 3) 和先前的嘉奖(长度为 1) 连接起来,作为输入。LSTM 层的输出是一个长度为 256 的向量,每个值对应于该层中的一个 LSTM 单位。这个向量被传递给 MDN,并由该层将长度为 256 的向量转换为长度为 481 的向量。
下图表明了 MDN-RNN 输出的构成,MDN 的目的是根据以下条件举行建模:下一个 z 可以按照一定的概率从几种可能的分布中得出。在赛车游戏中,我们选择了五个正态分布。为了定义这些分布,对于 32 维的 z 中的每个维度,五个混合密度中的每一个都必要一个 mu 和一个 logvar,以及一个表示该密度被选择的概率 (logpi)。因此,共有 5×3×32 = 480 个参数,而最后一个参数用于猜测嘉奖,更详细地说,是下一个时间步嘉奖的对数概率。

4.4.2 从 MDN-RNN 中采样

我们可以按照以下过程从 MDN 的输出中采样,以天生下一个时间步的 z 和嘉奖的猜测:

  • 将 481 维的输出向量分割成 3 个变量 (logpi、mu 和 logvar) 和嘉奖值
  • 取 logpi 的自然指数,经过缩放后,以便将其表明为 32 个概率分布,这些分布对应于 5 个混合分布的索引
  • 对于 z 的每个 32 个维度,从由 logpi 创建的分布中采样(即针对 z 的每个维度,决定应使用 5 个分布中的哪一个)
  • 选择好分布之后,获取该分布对应的 mu 和 logvar 的值
  • 对于每个 z 维度,为该维度选择的参数 mu 和 logvar 所确定的正态分布中采样一个值
MDN-RNN 的损失函数是 z 向量重构损失和嘉奖损失之和。其中,z 向量重构损失是 MDN-RNN 猜测的分布相对于真实 z 值的负对数似然,而嘉奖损失是猜测嘉奖与真实嘉奖之间的均方偏差。
4.5 练习控制器

最后一步是使用名为协方差矩阵适应进化计谋 (covariance matrix adaptation evolution strategy, CMA-ES) 的进化算法来练习控制器(即输出所选动作的网络)。通过终端运行以下命令即可开始练习控制器:
  1. python WorldModels/train.py --controller_num_worker --controller_num_worker_trial --controller_num_episode --controller_eval_steps
复制代码
超参数如下:


  • controller_num_worker:并行测试解的历程数
  • controller_num_worker_trial:在每一代中,每个历程必要测试的解的数量
  • controller_num_episode:测试每个解的回合数,用于盘算均匀嘉奖
  • controller_eval_steps:在评估当前最佳参数集合时,两次评估之间的代数
4.5.1 控制器架构

控制器的架构是一个没有隐蔽层的全连接神经网络,将输入向量直接连接到动作向量。
输入向量是当前 z 向量(长度为 32 )和 LSTM 的当前隐蔽状态(长度为 256 )的连接,形成长度为 288 的向量。由于我们将每个输入单位直接连接到3个输出动作单位,以是必要调整的权重总数为 288 × 3 = 864,再加上 3 个偏置权重,总共为 867。
练习此网络并不是一个监视学习问题,我们不是在尝试猜测正确的动作。因为我们并没有包含正确动作的练习集,因为对于给定环境状态来说,我们并不知道最优动作是什么,这就是强化学习问题与众差别的地方。我们必要智能体通过在环境中举行实验,并根据吸取到的反馈更新其权重来发现权重的最优值。
进化计谋是解决强化学习问题的一种常见选择,因为其简朴、高效且可扩展。本节中,我们将使用 CMA-ES 计谋。
4.5.2 CMA-ES

进化计谋通常使用以下过程:


  • 创建一个智能体种群,并随机初始化每个智能体要优化的参数
  • 循环以下步骤:

    • 在环境中评估每个智能体,返回多个回合中的均匀嘉奖
    • 用嘉奖最高的智能体繁殖新的智能体,创建新的种群成员
    • 在新成员的参数中添加随机性
    • 更新智能体种群,加人新的智能体,并移除表现不佳的智能体

这类似于自然界中动物进化的过程,因此被称为进化计谋 (evolutionary strategie)。在此过程中,“繁殖”是指将现有的得分最高的智能体组合起来,使得下一代更有可能产生高质量的结果,类似于它们的父代。与其他强化学习一样,必要在贪心地探求局部最优解和探索参数空间中未知区域之间取得平衡。因此,重要的是向种群中添加随机性,以确保搜刮领域不会过于狭窄。
CMA-ES 只是进化计谋的一种。简而言之,它通过维护一个正态分布,并通过从中采样参数来天生新的智能体。在每一代中,它更新分布的均值,以最大化从上一时间步中采样到高分智能体的概率。同时,它还会根据给定的前一个均匀值更新分布的协方差矩阵,以最大化采样到高分智能体的概率。可以将其视为一种自然形成的梯度下降方法,但它的长处是无需盘算或估计梯度。
下图展示了在一个简朴数据集上该算法的一代演化过程。在这个例子中,试图找到一个高度非线性的函数在二维空间中的最小值。图像中红色/黑色区域的函数值大于白色/黄色部分的函数值。

步骤如下:

  • 从随机天生的二维正态分布开始,并从中采样一系列候选候选智能体,如蓝色部分所示
  • 盘算每个候选智能体的函数值,并选出最佳的25%,如紫色部分所示,我们将这个点集称为 P
  • 将新正态分布的均值设为 P 中所有点的均值。这可以看作是繁殖阶段,在此阶段,我们只使用最佳候选智能体天生一个新的均值。将新正态分布的协方差矩阵设为 P 中各点的协方差矩阵,但在盘算协方差时使用的是现有均值而不是 P 中各点的当前均值。现有均值与P中所有点的均值之间的差异越大,下一个正态分布的方差就越大。这会在探求最优参数的过程中产生动量的效果
  • 然后可以使用更新后的均值和协方差矩阵,从新的正态分布中采样新的候选智能体
下图展示了该过程几代的环境。可以看到,随着均值朝着最小值移动时,当移动的步幅较大时,协方差变大;而当均值稳定在真正的最小值时,协方差变小。

对于赛车任务来说,我们没有一个明确的定义要最大化的函数,而是有一个包含 867 个参数的环境,我们必要通过优化这些参数来确定智能体的得分。最初,一些参数组合可能会因为随机机会而天生更高的得分,而且算法会逐渐地推动正态分布朝着能够在环境中获得高分的参数集合的方向移动。
4.5.3 并行化 CMA-ES

CMA-ES 的一个巨大优势是它可以很容易地并行化。算法最耗时的部分是盘算给定参数集的得分,因为它必要在环境中模拟具有这些参数的智能体。但这个过程可以并行化,因为各个模拟之间没有依赖关系。
在现实中,我们采用了主从设置,其中一个主历程负责将必要测试的参数集并行发送到多个从属历程,从属节点将结果返回给主节点,然后由主节点求结果的累计和,再将所得的总结果传递给 CMA-ES 对象。
主节点历程将要测试的参数集并行发送给多个从节点历程。从节点将结果返回给主节点,主节点累积结果,然后将该代的整体结果传递给 CMA-ES 对象。该对象根据上图所示要求更新正态分布的均值和协方差矩阵,并向主节点提供新的要测试的候选智能体,然后不停循环此过程,如下图所示:


  • 主节点向 CMA-ES 对象 (es) 请求一组要测试的参数
  • 主节点按照从节点的数量举行分割,这里,每个四个从节点历程都分配两组参数举行测试
  • 从节点运行工作历程,依次使用每组参数运行多个回合,这里,我们为每组参数运行三个回合
  • 对每个回合的嘉奖求均匀,每组参数得到一个分数
  • 从节点将得分列表返回给主节点
  • 主节点将所有得分汇总在一起,将该列表发送给 es 对象
  • es 对象使用嘉奖列表来盘算新的正态分布,如上图所示
经过大约 200 代的练习,赛车任务的均匀嘉奖得分可以达到 840 左右。
5. 在天生环境中练习

控制器的练习过程使用 Gym CarRacing 环境,来模拟从一个状态转移到下一个状态的 step 方法,该方法给定环境的当前状态和选择的动作,盘算下一个状态和嘉奖。
step 方法的功能与模型中的 MDN-RNN 非常相似。给定当前 z 和选择的动作,从 MDN-RNN 中采样输出下一个 z 和嘉奖的猜测。
现实上,可以将 MDN-RNN 视为一种环境,但是它在 z 空间而不是原始图像空间中举行操作。这意味着我们现实上可以用 MDN-RNN 的天生环境代替真实环境,由 MDN-RNN 天生环境,然后在其中练习控制器。
换句话说,MDN-RNN 通过最初的随机 rollout 数据集已经学习到了关于真实环境的一样平常环境,因此在练习控制器时可以代替真实环境。这意味着智能体可以通过思考如何在天生环境中最大化嘉奖来练习本身学会新任务,而无需在真实天下中测试计谋。然后,它在第一次执行以前从未尝试过的任务时就能够有出色的表现。
比较在真实环境和天生环境中举行练习的体系布局,如下图所示。

在天生环境体系布局中,控制器的练习完全在 z 空间中举行,无需解码 z 向量为可识别的赛道图像。当然,为了以可视化的形式表现智能体的表现,我们也可以表现出赛道图像,但这对于练习本身并非必要。

完全在 MDN-RNN 天生环境中练习智能体的挑战之一是过拟合。虽然
智能体在天生环境中发现了某个有嘉奖的策赂,但由于 MDN-RNN 未能完整
地捕捉到真实环境在特定条件下的行为,因此该策赂不能很好地推广到真实
环境,此时就会发生过拟合。
可以通过添加一个控制模型不确定性的温度参数来缓解过拟合问题。增长这个参数,通过 MDN-RNN 采样 z 时的方差就会被放大,从而在天生环境中练习时会出现更多不稳定的 rollout。控制器在产生更安全、更好地明白状态的策赂时会收到更高的嘉奖,因此更有可能天生广泛适合真实环境的一样平常性策赂。然而,增长温度参数时必要谨慎,以免使环境过于动荡,导致控制器无法学习任何计谋,因为天生环境无法随着时间的推移保持足够的一致性。
必要注意的是,控制器从未在真实环境中尝试过该任务。它只是在真实环境中随机游走(用于练习 VAE 和 MDN-RNN 天生环境模型),然后使用天生环境来练习控制器。使用天生式天下模型作为强化学习方法的关键优势是,在天生环境中举行的每一代练习比在真实环境中快得多。这是因为 MDN-RNN 对 z 和嘉奖的猜测比 Gym 环境对 z 和嘉奖的盘算速率更快。
小结

在本节中,学习了变分自编码器 (variational autoencoder, VAE)如何应用于强化学习环境中,使智能体能够摆脱真实环境的束缚,通过在本身天生的环境中测试计谋来学习有效的计谋。练习 VAE 学习环境的潜表示,然后将其用作输入传递到循环神经网络中,在潜空间内猜测将来轨迹。智能体可以使用这个天生模型天生环境,通过进化方法反复测试计谋,以便得到能够很好的推广到真实环境中的计谋。
系列链接

AIGC实战——天生模型简介
AIGC实战——深度学习 (Deep Learning, DL)
AIGC实战——卷积神经网络(Convolutional Neural Network, CNN)
AIGC实战——自编码器(Autoencoder)
AIGC实战——变分自编码器(Variational Autoencoder, VAE)
AIGC实战——使用变分自编码器天生面部图像
AIGC实战——天生对抗网络(Generative Adversarial Network, GAN)
AIGC实战——WGAN(Wasserstein GAN)
AIGC实战——条件天生对抗网络(Conditional Generative Adversarial Net, CGAN)
AIGC实战——自回归模型(Autoregressive Model)
AIGC实战——改进循环神经网络
AIGC实战——像素卷积神经网络(PixelCNN)
AIGC实战——归一化流模型(Normalizing Flow Model)
AIGC实战——能量模型(Energy-Based Model)
AIGC实战——扩散模型(Diffusion Model)
AIGC实战——GPT(Generative Pre-trained Transformer)
AIGC实战——Transformer模型
AIGC实战——ProGAN(Progressive Growing Generative Adversarial Network)
AIGC实战——StyleGAN(Style-Based Generative Adversarial Network)
AIGC实战——VQ-GAN(Vector Quantized Generative Adversarial Network)
AIGC实战——基于Transformer实现音乐天生
AIGC实战——MuseGAN详解与实现
AIGC实战——多模态模型DALL.E 2
AIGC实战——多模态模型Flamingo

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

千千梦丶琪

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表