Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

超越 DQN 和 A3C:深度强化学习领域近期新进展概览

深度强化学习是近年来人工智能领域内最受关注的研究方向之一,并已在游戏和机器人控制等领域取得了很多耀眼的成果。DeepMind 的工程师 Joyce Xu 近日发表了一篇博客文章,介绍了深度强化学习领域的一些近期进展,其中涉及到分层式强化学习、记忆、注意机制、世界模型和想象等方向。

我觉得,深度强化学习最让人喜欢的一点是它确实实在难以有效,这一点不同于监督学习。用神经网络来解决一个计算机视觉问题可能能达到 80% 的效果;而如果用神经网络来处理强化学习问题,你可能就只能眼睁睁地看着它失败——而且你每次尝试时遭受的失败都各不相同。

强化学习领域内的很多最大的挑战都围绕着两大问题:如何有效地与环境交互(比如探索与利用、样本效率),以及如何有效地从经历中学习(比如长期信用分配、稀疏奖励信号)。在这篇文章中,我希望探讨深度强化学习领域内试图解决这些挑战的几个近期研究方向,并且还会将其与人类认知进行优雅简洁的对比。具体而言,我将谈到:

  • 分层式强化学习

  • 记忆和预测建模

  • 将无模型方法与基于模型的方法组合到一起

本文首先将简要介绍两个代表性的深度强化学习算法——DQN 和 A3C,以为后文提供能够作为参考的直观知识,然后我们会深入探讨几篇近期的论文和研究突破。

DQN 和 A3C/A2C

声明:我假设读者已经对强化学习有一定的基本了解了(因此这里不会提供有关这些算法的深度教程),但就算你对强化学习算法的工作方式并不完全了解,你应该也能阅读后文的内容。

DeepMind 的 DQN(深度 Q 网络)是将深度学习应用于强化学习的最早期突破性成功之一。其中使用了一个神经网络来学习用于经典 Atari 游戏的 Q 函数,比如《乒乓球》和《打砖块》,从而让模型可以直接根据原始像素输入得出应该采取的动作。

从算法上看,DQN 直接源自经典的 Q 学习技术。在 Q 学习中,一个状态 - 动作对的 Q 值(即 quality 值)是通过基于经历的迭代式更新来估计的。从本质上讲,对于某个状态下我们可采取的每个动作,我们都可以使用收到的即时奖励和对新状态的价值估计来更新原来的状态 - 动作对的价值估计:

DQN 的训练是最小化时间差分误差(TD-error)的 MSE(均方误差),如上所示。DQN 使用了两个关键策略来使 Q 学习适用于深度神经网络,而且这两个策略也在后续的深度强化学习研究中得到了成功的应用。这两个策略为:

  • 经历重放(experience replay),其中每个状态 / 动作转换元组 (s, a, r, s』) 都存储在一个记忆「重放」缓存冲,并会被随机采样以用于训练网络,从而可实现对训练数据的重复使用和去除连续轨迹样本中的相关性。

  • 使用一个单独的目标网络(即上式中的 Q_hat 部分)来实现训练的稳定,所以 TD 误差不是根据源自训练网络的不断变化的目标计算的,而是根据由一个基本固定的网络所生成的稳定目标计算的。

在那之后,DeepMind 的 A3C(Asynchronous Advantage Actor Critic)和 OpenAI 的同步式变体 A2C 也非常成功地将深度学习方法推广到了 actor-critic 方法上。

actor-critic 方法将策略梯度方法与一种学习后的价值函数结合到了一起。对于 DQN 方法,我们仅有学习后的价值函数(即 Q 函数),而我们遵循的「策略」只是简单地在每个步骤取能最大化 Q 值的动作。使用 A3C 和使用其它 actor-critic 方法一样,我们会学习两个不同的函数:策略(即 actor)和价值(即 critic)。策略函数是基于采取该动作的当前估计优势(advantage)来调整动作概率,而价值函数则是基于经历和后续策略收集到的奖励来更新该优势: 

从上面的更新可以看出,价值网络会学习一个基线状态值 V(s_i;θ_v),我们可以将其与我们的当前奖励估计 R 进行比较,从而得到「优势」;策略网络则会通过经典的 REINFORCE 算法根据该优势调整动作的对数概率。

A3C 真正的贡献在于其并行化和异步化的架构:多个 actor 学习器被分派到不同的环境实例中;它们全都会与环境进行交互并收集经历,然后异步地将它们的梯度更新推送到一个中心的「目标网络」(一个借用自 DQN 的思路)。之后,OpenAI 的 A2C 研究表明异步方式实际上对性能没有贡献,而且事实上还会降低样本效率。对这些架构的详细解释已经超出了本文的覆盖范围,但如果你和我一样对分布式智能体感兴趣,那一定要看看 DeepMind 的 IMPALA,这是一种非常有用的设计范式,可用于实现对学习的扩展:https://arxiv.org/abs/1802.01561。

DQN 和 A3C/A2C 都是非常强大的基线智能体,但是在面对更加复杂的任务、严重的部分可观察性和 / 或动作与相关奖励信号之间存在较长延迟时,这些智能体往往难以为继。因此,强化学习研究中有一整个子领域在致力于解决这些问题。接下来我们看看其中一些优秀的研究。

分层式强化学习(HRL)

分层式强化学习是一类从多个策略层学习的强化学习方法,其中每一层都负责控制不同层面的时间和行为抽象。最低层面的策略负责输出环境动作,让更高层面的策略可以操作更抽象的目标和更长的时间尺度。

为什么这种方法很吸引人?首先也是最重要的一点是在认知方面,有很多研究都认为人类和动物行为都基于分层式结构。这在日常生活中有直观的体现:当我决定做一顿饭时(实际上我基本从不做饭,但为了合理论述,就假设我是一个负责的人类吧),我会将这一任务分成多个更简单的子任务(切蔬菜、煮面条等),但绝不会忽视我要做饭的总体目标;我甚至还能切换不同的子任务来完成同样的目标,比如不煮面条而是蒸饭。这说明真实世界任务中存在固有的层次结构和组合性质,因此可将简单的基础动作串接、重复或组合起来以完成复杂的工作。近些年的一些研究甚至发现 HRL 组件与前额叶皮质中的特定神经结构之间存在直接的相似性。

从技术方面看,HRL 尤其引人注目,因为它能帮助解决我们前文提到的第二个问题的两大挑战:如何有效地从经历中学习(比如长期信用分配、稀疏奖励信号)。在 HRL 中,因为低层策略是基于高层策略分配的任务从内在奖励中学习的,所以尽管奖励稀疏,基础任务仍可得以学习。此外,高层策略发展起来的时间抽象让我们的模型可以根据时间上延展的经历来处理信用分配问题。

所以 HRL 的工作方式是怎样的?目前有一些各不相同的方法都能实现 HRL。Google Brain 近期的一篇论文采用了一种尤其清晰和简单的方法,并为数据高效型训练引入了一些很好的离策略修正方法。他们的模型名为 HIRO:https://arxiv.org/pdf/1805.08296.pdf。 

μ_hi 是高层面的策略,其为低层面的策略输出需要实现的「目标状态」。μ_lo 是低层面的策略,输出环境动作以试图达成其目标状态观察。

其设计思路是有两个策略层。高层策略的训练目标是最大化环境奖励 R。每 c 个时间步骤,高层策略都会采样一个新动作,这是低层策略所要达成的「目标状态」。低层策略的训练目标是选取合适的环境动作,使其能产生类似于给定目标状态的状态观察。

举一个简单的例子:假设我们在训练一个机器人以特定的顺序堆叠彩色方块。我们仅有单个奖励 +1 在任务成功最终完成时给出,所有其它时间步骤的奖励都是 0。直观地说,高层策略负责提出所要完成的必要子目标:也许它输出的第一个目标状态是「观察到一个红色方块在你面前」,第二个目标状态可能是「观察到蓝色方块在红色方块旁边」,然后是「观察到蓝色方块在红色方块上面」。低层策略在环境中探索,直到其找到用于产生这些观察结果所必需的动作序列,比如选取一个蓝色方块并将其移动到红色方块之上。

HIRO 使用了 DDPG(深度确定性策略梯度)训练目标的一种变体来训练低层策略,其内在奖励被参数化为了当前观察与目标观察之间的距离: 

DDPG 是又一种影响深远的深度强化学习算法,其将 DQN 的思想扩展到的连续动作空间。这也是一种 actor-critic 方法,使用策略梯度来优化策略;但不同于 A3C 中那样根据优势来优化策略,它是根据 Q 值来进行优化。因此在 HIRO 中,所要最小化的 DDPG 邻近误差就变成了: 

同时,为了使用离策略的经历,高层策略使用了离策略修正来进行训练。其思想是:为了提升样本效率,我们希望使用某种形式的重放缓存,就像 DQN 一样。但是,过去的经历不能直接用于训练高层策略。这是因为低层策略会持续学习和改变,所以就算我们设置了与过去经历一样的目标,低层策略还是可能表现出不同的动作 / 转换。HIRO 中提出的离策略修正是为了回溯性地修改在离策略经历中看到的目标,从而最大化所观察到的动作序列的可能性。换句话说,如果重放经历表明过去的智能体采取动作 (x,y,z) 能达成目标 g,那么我们就寻找一个目标 g̃,使得它能让当前的智能体最有可能采取同样的动作 (x,y,z),即能够最大化该动作序列的对数概率(如下式)的动作。

 

然后使用 DDPG 的一种变体在这些动作、新目标和环境奖励 R 上训练高层策略。

HIRO 当然不是唯一一种 HRL 方法。FeUdal 网络是一种更早的相关研究(https://arxiv.org/pdf/1703.01161.pdf),其使用了一个学习到的「目标」表征而不是原始的状态观察。实际上,研究中的很多变体都源自学习有用的低层子策略的不同方法;很多论文都使用了辅助的或「代理的」奖励,还有一些其它研究实验了预训练或多任务训练。不同于 HIRO,这些方法中很多都需要某种程度的人工设计或领域知识,这从本质上限制了它们的通用性。近期也有研究在探索使用基于群体的训练(PBT,https://arxiv.org/abs/1711.09846),这是另一个我个人很喜欢的算法。本质上讲,内部奖励被当作了附加超参数进行处理,通过在训练过程中「演进」群体,PBT 能学习到这些超参数的最优演化。

HRL 是当前一个非常受欢迎的研究领域,而且也非常容易与其它技术组合到一起,比如这篇论文将 HRL 与模仿学习结合了起来:https://arxiv.org/pdf/1803.00590.pdf。但是,HRL 的核心只是一个非常直观的思想。HRL 是可扩展的,具备神经解剖学上的相似性,能解决强化学习领域内的一些基本问题。但和其它优秀的强化学习方法一样,它的训练难度颇高。

记忆和注意

现在来谈谈用于解决长期信用分配和稀疏奖励信号问题的其它方法。具体而言,我们要说的是最明显的方法:让智能体真正擅长记忆事物。

深度学习中的记忆总是很有意思,因为不管研究者怎样努力(而且他们确实非常努力),很少有架构能胜过经过精心调节的 LSTM。但是,人类记忆的工作方式却与 LSTM 完全不同。当我们在处理日常生活中的任务时,我们会回忆和关注与场景相关的特定记忆,很少有其它内容。比如当我回家并开车到当地的杂货店时,我会使用我在这条道路上驾驶了数百次的记忆,而不是如何从 Camden Town 驱车到伦敦的 Piccadilly Circus 的记忆——即使这些记忆刚刚才加入我的经历,仍然活灵活现。就此而言,人类的记忆基本都是根据场景进行查询的——取决于我们在哪里以及做什么,我们的大脑知道哪些记忆对我们有用。

深度学习中,这一观点催生了外部的基于关键值的记忆。这并不是一个新思想;神经图灵机(https://arxiv.org/pdf/1410.5401.pdf,这是我读过的第一篇而且是最喜欢的论文)使用了一种可微分的外部记忆存储来增强神经网络,可以通过指向特定位置的向量值的「读」和「写」头来访问。我们可以很容易想到将其扩展到强化学习领域——在任意给定时间步骤,智能体都会获得其环境观察和与当前状态相关的记忆。这就是近期的 MERLIN 架构的所做的事情:https://arxiv.org/pdf/1803.10760.pdf。

MERLIN 有两个组件:一个基于记忆的预测器(MBP)和一个策略网络。MBP 负责将观察压缩成有用的低维「状态变量」,从而将其直接存储到键值记忆矩阵中。它也会负责将相关的记忆传递给策略网络,然后策略网络会使用这些记忆和当前状态来输出动作。

这个架构可能看起来有些复杂,但要记住,其策略网络只是一个输出动作的循环网络,而 MBP 也仅做三件事:

  • 将观察压缩成有用的状态变量 z_t,从而传递给策略。

  • 将 z_t 写入记忆矩阵

  • 获取其它有用的记忆并传递给策略

其工作流程看起来是这样的:输入的观察首先被编码并被输入一个 MLP,这个 MLP 的输出会被添加到下一个状态变量的先验分布上,从而得到后验分布。这个后验分布基于所有之前的动作 / 观察以及新的观察,然后会被采样以产生一个状态变量 z_t。接下来,z_t 会被输入 MBP 的 LSTM,其输出会被用于更新先验分布以及通过向量值的「读取键」和「写入键」来对记忆进行读取 / 写入——这两者是以作为 LSTM 的隐藏状态的线性函数得到的。最后,下游的工作是策略网络使用 z_t 以及从记忆读取的输出来得出一个动作。

其中一个关键细节是:为了确保状态表征有用,MBP 也经过了训练以预测当前状态 z_t 的奖励,这样所学习到的表征就与当前任务存在关联。

MERLIN 的训练有一些复杂;因为 MBP 的目标是用作一种有用的「世界模型」,这是一个难以实现的目标,所以它实际上的训练目标是优化变分下界(VLB)损失。(如果你不熟悉 VLB,可以参考这篇文章:https://xyang35.github.io/2017/04/14/variational-lower-bound/ ;但就算你不理解,也不妨碍你理解 MERLIN。)这个 VLB 损失包含两个成分:

  1. 在这下一个状态变量上的先验和后验概率分布之间的 KL 距离,其中后验分布还额外有新观察的条件。最小化这个 KL 距离能确保新状态变量与之前的观察 / 动作保持一致。

  2. 状态变量的重构损失;我们试图在这个状态变量中重现输入的观察(比如图像、之前的动作等)并基于该状态变量预测奖励。如果这个损失很小,说明我们就找到了一个能准确表征该观察的状态变量,而且它还可用于产生能得到高奖励的动作。

下式就是我们最终的 VLB 损失,其中第一项是重构损失,第二项是 KL 距离:

这个策略网络的损失是我们上文讨论过的 A3C 的策略梯度损失的稍微更好的版本;它使用的算法被称为「广义优势估计算法」,其细节超出了本文的覆盖范围(但能在 MERLIN 论文附录的 4.4 节找到),但其看起来就类似于下面给出的标准的策略梯度更新:

一旦训练完成,MERLIN 应该就能通过状态表征和记忆来预测性地建模世界,其策略也应该能够利用这些预测来选取有用的动作。

MERLIN 并不是唯一一个使用外部记忆存储的深度强化学习研究。早在 2016 年,就有研究者将这一思想用在了 MQN(记忆 Q 网络)中来解决 Minecraft 中的迷宫问题:https://arxiv.org/pdf/1605.09128.pdf ;但使用记忆作为世界的预测模型的概念具有一些独特的神经科学方面的推动力。有一篇 Medium 文章(https://goo.gl/cVjQK5)很好地解释了这一思想,所以这里就不再重复了,只说说其关键论点:不同于对大多数神经网络的解释,我们的大脑很可能不是以「输入 - 输出」机器的方式运作的。相反,其工作方式类似与一个预测引擎,我们对世界的感知实际上只是大脑对于我们的感官输入的原因的最佳猜测。神经科学家 Amil Seth 对 Hermann von Helmholtz 在 19 世纪提出的这一理论进行了很好的总结:

大脑被锁在颅骨中。它所接受的都是模糊和有噪声的感官信号,这些信号仅与世界中的物体存在间接的关联。因此,感知必然是一个推理过程,其中非确定性的感官信号会与对世界的先前预期或「信念」结合起来,以构建大脑对这些感官信号的原因的最佳假设。

MERLIN 的基于记忆的预测器的目标正是实现这种预测推理。它会对观察进行编码,然后将它们与内在的先验结合起来,从而生成一个涵盖输入的某些表征(或原因)的「状态变量」,这些状态会被存储在长期记忆中以便智能体之后能基于它们采取行动。

智能体、世界模型和想象

有意思的是,大脑类似预测引擎的概念会将我们带回我们想要探究的第一个强化学习问题:如何从环境中有效地学习?如果我们不能直接根据观察得到动作,那么我们又该如何最好地与周遭环境交互并从中学习呢?

强化学习领域,传统的做法要么是无模型学习,要么是基于模型的学习。无模型强化学习是学习直接将原始的环境观察映射到价值或动作。基于模型的强化学习则是首先学习一个基于原始观察的环境的过渡模型,然后使用该模型来选择动作。

图中外圈表示基于模型的强化学习,包含「direct RL」的内圈表示无模型强化学习

比起无模型学习中单纯的试错方法,基于模型进行规划的样本效率要高得多。但是,学习优良的模型往往非常困难,因为模型不完美造成的误差往往会导致智能体表现糟糕。因为这个原因,深度强化学习领域内很多早期的成功研究(比如 DQN 和 A3C)都是无模型的。

话虽如此,1990 年的 Dyna 算法(https://goo.gl/5zrqES)就已经模糊了无模型和基于模型的强化学习方法之间的界线,其中使用了一个学习后的模型来生成模拟的经历,以帮助训练无模型策略。现在,已有研究将这两种方法直接组合到了一起,即「想象力增强的智能体」算法(I2A,https://arxiv.org/abs/1707.06203)。

在 I2A 中,最终策略是一个与无模型组件和基于模型的组件相关的函数。基于模型的组件被称为该智能体对世界的「想象」,其由该智能体内部的学习后的模型所产生的想象轨迹组成。但是,其关键的地方在于基于模型的组件的末端还有一个编码器,它会将想象轨迹聚合到一起并解读它们,使得智能体能学习在有必要时忽略自己的想象。也就是说,如果智能体发现其内部模型投射的轨迹是无用的和不准确的,那么它就可以学会忽视该模型并使用其无模型分支进行处理。

上图展示了 I2A 的工作方式。观察一开始就会被传递给无模型组件和基于模型的组件。在基于模型的组件中,会根据在当前状态可能采取的 n 个动作来想象 n 个不同的轨迹。这些轨迹是通过将动作和状态输入其内部环境模型而得到的,从而能够过渡到新的想象状态,然后取其中能得到最大化结果的动作。一个蒸馏后的想象策略(与通过交叉熵损失的最终策略相似)选择下一个动作。经过固定的 k 个步骤之后,这些轨迹会被编码并被聚合到一起,然后会与无模型组件的输出一起输入策略网络。关键的地方在于,这种编码能让策略以最有用的方式解读想象轨迹——如果不合适就忽视它们,在可用时就提取出其中与奖励无关的信息。

I2A 的策略网络是通过一个使用优势的标准策略梯度损失训练的,类似于 A3C 和 MERLIN,所以这应该看起来很眼熟:

此外,在实际策略和内部模型的想象策略之间还添加了一个策略蒸馏损失,以确保想象策略选择的动作接近当前智能体会选择的动作:

I2A 的表现优于包含 MCTS(蒙特卡洛树搜索)规划算法在内的很多基准。即使在其基于模型的组件被故意设计得预测结果很差时,它也能在实验中得到出色的表现,这说明它能权衡所要使用的模型——在有必要时也会使用无模型方法。有意思的是,内部模型较差的 I2A 的表现实际上还稍微优于有较好模型的 I2A——研究者将其归因于随机初始化或有噪声的内部模型能提供某种形式的正则化,但很显然这还是一个有待进一步研究的领域。

不管怎样,I2A 都很出色,因为它在某些方面也体现了人类在世界中的运作方式。我们总是在根据对我们所处的环境的某个心智模型来规划和预测未来,但我们也都清楚我们的心智模型并不完全准确——尤其是当我们处在新环境中或遇到我们未曾见过的情形时。在这种情况下,我们会进行试错,就像是无模型方法一样,但我们也会使用新的经历来更新我们内在的心智模型。

目前有很多研究者都在探索如何有效结合基于模型的方法和无模型方法。Berkeley AI 提出了一种时间差分模型:https://bair.berkeley.edu/blog/2018/04/26/tdm/;其也有一个非常有趣的前提。其思想是让智能体设置更多时间上抽象的目标,即「在 k 个时间步骤内处于 X 状态」,然后在保证最大化每 k 个步骤所收集到的奖励的同时学习这些长期的模型过渡。这能为我们提供对动作的无模型探索和在高层目标上的基于模型的规划之间的平滑过渡——如果思考一下这种方法,你会发现这又会将我们带回分层式强化学习

所有这些研究论文都关注的是同样的目标:实现与无模型方法同样(或更优)的表现,同时达到基于模型的方法那样的样本效率。

总结

深度强化学习模型确实很难训练,这一点毫无疑问。但正是由于这样的难度,我们才被迫提出了那么多的策略、方法和算法,以便能借助深度学习的强大力量来解决经典(或非经典)的控制问题。

这篇文章对深度强化学习的近期研究进行了不全面的介绍——还有大量研究没有提及,甚至还有很多研究我根本就不知道。但是,希望这里介绍的一些记忆、分层和想象方向的研究能够帮助读者了解我们着手解决强化学习领域内一些长期挑战和瓶颈的途径。


原文链接:https://towardsdatascience.com/advanced-reinforcement-learning-6d769f529eb3

理论Deepmind强化学习DQNA3C
7
相关数据
DeepMind机构

DeepMind是一家英国的人工智能公司。公司创建于2010年,最初名称是DeepMind科技(DeepMind Technologies Limited),在2014年被谷歌收购。在2010年由杰米斯·哈萨比斯,谢恩·列格和穆斯塔法·苏莱曼成立创业公司。继AlphaGo之后,Google DeepMind首席执行官杰米斯·哈萨比斯表示将研究用人工智能与人类玩其他游戏,例如即时战略游戏《星际争霸II》(StarCraft II)。深度AI如果能直接使用在其他各种不同领域,除了未来能玩不同的游戏外,例如自动驾驶、投资顾问、音乐评论、甚至司法判决等等目前需要人脑才能处理的工作,基本上也可以直接使用相同的神经网上去学而习得与人类相同的思考力。

https://deepmind.com/
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

神经图灵机技术

神经图灵机(NTMs)是Alex Graves等人发表的一种递归神经网络模型。NTM将神经网络的模糊模式匹配能力与可编程计算机的算法能力相结合。一个NTM有一个神经网络控制器连接到外部存储器资源,通过注意机制与外部存储器资源进行交互。 记忆交互是端对端可区分的,可以使用梯度下降对其进行优化。 具有长期短期记忆(LSTM)网络控制器的NTM可以从输入和输出示例推断简单的算法,例如复制,排序和关联回忆。

深度强化学习技术

强化学习(Reinforcement Learning)是主体(agent)通过与周围环境的交互来进行学习。强化学习主体(RL agent)每采取一次动作(action)就会得到一个相应的数值奖励(numerical reward),这个奖励表示此次动作的好坏。通过与环境的交互,综合考虑过去的经验(exploitation)和未知的探索(exploration),强化学习主体通过试错的方式(trial and error)学会如何采取下一步的动作,而无需人类显性地告诉它该采取哪个动作。强化学习主体的目标是学习通过执行一系列的动作来最大化累积的奖励(accumulated reward)。 一般来说,真实世界中的强化学习问题包括巨大的状态空间(state spaces)和动作空间(action spaces),传统的强化学习方法会受限于维数灾难(curse of dimensionality)。借助于深度学习中的神经网络,强化学习主体可以直接从原始输入数据(如游戏图像)中提取和学习特征知识,然后根据提取出的特征信息再利用传统的强化学习算法(如TD Learning,SARSA,Q-Learnin)学习控制策略(如游戏策略),而无需人工提取或启发式学习特征。这种结合了深度学习的强化学习方法称为深度强化学习。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

感知技术

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

神经科学技术

神经科学,又称神经生物学,是专门研究神经系统的结构、功能、发育、演化、遗传学、生物化学、生理学、药理学及病理学的一门科学。对行为及学习的研究都是神经科学的分支。 对人脑研究是个跨领域的范畴,当中涉及分子层面、细胞层面、神经小组、大型神经系统,如视觉神经系统、脑干、脑皮层。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

规划技术

人工智能领域的「规划」通常是指智能体执行的任务/动作的自动规划和调度,其目的是进行资源的优化。常见的规划方法包括经典规划(Classical Planning)、分层任务网络(HTN)和 logistics 规划。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

后验概率技术

在贝叶斯统计中,一个随机事件或者一个不确定事件的后验概率是在考虑和给出相关证据或数据后所得到的条件概率。同样,后验概率分布是一个未知量(视为随机变量)基于试验和调查后得到的概率分布。“后验”在本文中代表考虑了被测试事件的相关证据。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

长短期记忆网络技术

长短期记忆(Long Short-Term Memory) 是具有长期记忆能力的一种时间递归神经网络(Recurrent Neural Network)。 其网络结构含有一个或多个具有可遗忘和记忆功能的单元组成。它在1997年被提出用于解决传统RNN(Recurrent Neural Network) 的随时间反向传播中权重消失的问题(vanishing gradient problem over backpropagation-through-time),重要组成部分包括Forget Gate, Input Gate, 和 Output Gate, 分别负责决定当前输入是否被采纳,是否被长期记忆以及决定在记忆中的输入是否在当前被输出。Gated Recurrent Unit 是 LSTM 众多版本中典型的一个。因为它具有记忆性的功能,LSTM经常被用在具有时间序列特性的数据和场景中。

模仿学习技术

模仿学习(Imitation Learning)背后的原理是是通过隐含地给学习器关于这个世界的先验信息,就能执行、学习人类行为。在模仿学习任务中,智能体(agent)为了学习到策略从而尽可能像人类专家那样执行一种行为,它会寻找一种最佳的方式来使用由该专家示范的训练集(输入-输出对)。

强化学习技术

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

推荐文章
暂无评论
暂无评论~