斯坦福-CS25-Transformer-原理笔记-二-
斯坦福 CS25 Transformer 原理笔记(二)
P4:4.决策变换器 通过序列建模进行强化学习 - life_code - BV1X84y1Q7wV
我很高兴今天能谈论我们最近关于使用变换器进行强化学习的工作,这项工作是与一群非常优秀的合作者共同完成的,他们大多在加州大学伯克利分校,有一些在 Facebook 和 Google。我应该提到这项工作是由两位才华横溢的本科生李晨和凯文·布鲁领导的。
我很高兴能展示我们所取得的成果,所以让我们来动机为什么我们甚至关心这个问题。在过去的三四年里,自 2017 年引入变换器以来,已经在人工智能的许多不同领域中占据了重要地位。
我们看到它们对语言处理产生了重大影响,看到它们被用于视觉处理。最近,视觉变换器在《自然》杂志上尝试解决蛋白质折叠问题,很快它们可能会取代计算机科学家,自动生成代码。
随着这些进展,似乎我们越来越接近于为人工智能建立一个统一的决策模型。但人工智能不仅仅涉及感知,还涉及如何利用感知知识做出决策。这就是本次演讲的主题。但在我深入探讨如何使用这些模型进行决策之前。
这里是我认为询问这个问题重要性的动机。因此,与强化学习模型不同,当我们查看变换器在感知模式上的表现时,就像我在前一张幻灯片中展示的那样,我们发现这些模型非常可扩展,并且具有非常稳定的训练动态。因此,只要你有足够的计算能力和越来越多的可获取数据,你就可以训练越来越大的模型,并且可以看到损失平滑下降。
整体训练动态非常稳定,这使得从业者和研究人员构建这些模型并学习更丰富的分布变得非常简单。因此,正如我所说,这些进展迄今为止主要发生在感知方面,而我们在本次演讲中关注的是如何从感知转向。
我们需要观察图像、文本和各种感官信号,然后进入实际采取行动的领域,让我们的智能体在世界中做出有趣的事情。😊,啊。在整个演讲中,我们应该考虑为什么这种视角能够让我们实现可扩展学习。
就像我在前一张幻灯片上展示的那样,也为整个过程带来了稳定性。😊。因此,顺序决策是一个非常广泛的领域,我今天要特别关注的是通往顺序决策的一个路径,即强化学习。
所以简单介绍一下,什么是强化学习。我们给定一个处于当前状态的代理,该代理将通过采取行动与环境进行互动。通过采取这些行动,环境将给它返回一个奖励,以评估该行动的好坏,以及代理将转移到的下一个状态,这整个反馈循环将继续进行。
啊。这里智能代理的目标是通过试错来实现。所以尝试不同的动作,看看什么奖励能够引导,学习一种将状态映射到动作的策略,以便最大化代理在时间跨度内的累积奖励。
所以你进行一系列动作,然后根据你为这一系列动作积累的奖励来判断你的策略有多好。这次讲座还将特别关注一种名为离线强化学习的强化学习形式。
所以这里的想法是,和我之前谈论在线学习的图像相比,在线强化学习的变化在于,现在不再是主动与环境互动,而是拥有一组交互的日志数据。想象一下某个机器人在田野中收集了一堆传感器数据,并且你已经记录了所有这些数据,利用这些日志数据,你现在想训练另一个代理,也许是另一个机器人,仅仅通过查看日志数据来学习关于该环境的有趣信息。
G,因此没有试错成分。这目前是该框架的一个扩展,将会非常激动人心,所以我将在讲座结束时谈谈为什么思考如何扩展这个框架以包括探索成分并进行试错是令人兴奋的。
好的,不再具体讨论股票的激励挑战,既然他们已经引入了 ArL。那么我们来看看一些统计数据。大型语言模型拥有数十亿的参数,今天它们大约有 100 层的 Transformer。它们在使用监督学习和风格损失时非常稳定。
这些是自回归生成的构建块,例如,或者用于大规模语言建模的 B 模型。这是一个每天都在增长的领域,斯坦福大学有一门课程,我们都在参加,因为它对人工智能产生了巨大的影响。
嗯。另一方面,强化学习策略,尤其是深度强化学习,其最大参数量大概在 2000 万个参数和 20 层之间。嗯。更让人不安的是,它们的训练非常不稳定,因此目前的强化学习算法主要基于动态编程,涉及解决一个非常不稳定的内循环优化问题。在强化学习中,实践者经常看到这样的奖励代码,所以我希望你能看到在 RL 中我们得到的回报的方差非常大,即使在进行多轮实验后,这往往与代码本身的复杂性有关。
我们的算法学习检查需要更好的改进,以便在复杂环境中实现稳定的性能。因此,这项工作的目的是引入变换器。我会先在一张幻灯片中展示这个模型的具体样子,然后深入讲解每个组件。我有个好问题。是的,我可以快速问一个问题。好的。
谢谢,我好奇的是,为什么强化学习(RL)通常参数量比其他方法少几个数量级?
这是个好问题,通常当你考虑强化学习算法时。😊。特别是在深度学习中,最常见的算法例如,有不同的网络在任务中扮演不同的角色,你会有一个网络扮演演员的角色,试图找出策略,还有一个不同的网络扮演评论者的角色。
这些网络在自适应收集的数据上进行训练,因此与感知任务不同,在感知中你会有一个巨大的交互数据集来训练模型,而在这种情况下,架构甚至在某种程度上环境都非常简单,因为我们试图训练非常小的组件,我们训练的函数,然后将它们结合在一起,这些函数通常是在不太复杂的环境中训练的。
这涉及到不同的问题,我不会说这纯粹与学习目标有关,而是与我们使用的环境、每个神经网络预测的目标的组合有关,这导致网络的规模比预期要大得多。
我们目前看到的倾向,正因为如此,强化学习中使用的神经网络通常层数要比感知任务少很多。谢谢。你想问个问题吗?是的,我想知道为什么你选择离线强化学习而不是在线强化学习?
这是另一个很好的问题,问题是为什么离线强化学习(R)与在线强化学习(RL)对立,简单的原因是,因为这是第一次尝试研究强化学习,所以离线 RL 避免了探索的问题。你得到了一个交互的日志数据集,不能进一步与环境交互,因此仅从这个数据集中,你试图挖掘出最优代理的策略。如果你进行在线 RL,难道不会给你这个探索的机会吗?基本上会,但技术上更具挑战的是,探索会更难编码。因此,离线 R 是第一步,没有理由不研究为什么在线 RL 不能做到,只是它提供了一个更封闭的设置,其中来自变换器的想法将直接扩展。
好的,听起来不错,那么我们来看看模型,它故意做得非常简单。我们要做的是查看我们的离线数据,基本上是以树形结构的形式呈现的,离线数据看起来像是多个时间步中的状态序列、行动、回报。这是一个自然的序列,可以直接作为输入提供给变换器,在这种情况下,我们使用的是因果变换器,这在 GPT 中很常见。
所以我们从左到右,因为数据集带有时间步因果性的概念,这里比用于感知的一般意义更具意图。这实际上是如何从时间的角度看待因果关系。我们从这个变换器预测的,是基于序列中该令牌之前所有内容的条件下的行动。
所以如果你想预测在这个 t 减一的步骤中的行动,我们将利用之前所有的信息。在 D 减二的时间步,以及在 D 减一的时间步中的回报和状态。好的。所以我们将深入了解这些是如何被编码的。但从本质上讲,这就是一条线,它从离线数据中提取悲惨的预数据。
将其视为一个令牌序列,经过因果变换器处理,得到一系列行动作为输出。那么,我们到底如何在网络中进行前向传播呢?
因此,这项工作的一个重要方面是 U 状态的行动和这个称为“返回”的量。因此这些不是直接的奖励。这些是未来回报,让我们看看它们的真正含义。这是一条作为输入的轨迹,未来回报是从当前时间步到该剧集结束的奖励总和。因此,我们希望变换器能够更好地使用目标返回。
这就是你应该如何看待未来回报作为决定采取什么行动的输入。这种视角将有多个优势,它将使我们能够做更多的事情,超越离线 RL,并通过仅改变未来回报来泛化到不同的任务。
在这一点上非常重要,因此在时间步长一,我们将仅拥有整个悲惨梦境的总体奖励之和;在时间步长二,我们减去采取第一行动所获得的奖励,然后获得悲惨梦境其余部分的奖励之和。
好的,这就是我们如何质量转向的方式,像是你需要积累多少更多的奖励来实现你在开始时设定的返回目标。输出是什么?输出是预测行动的序列,正如我在上一张幻灯片中展示的。我们使用因果变换器,因此我们按顺序预测所需的行动。注意力。
将在变换器内部计算,关键的一个重要超参数是上下文长度。我们在感知中也看到了这一点,接下来在整个讲座中,我将使用符号 K 来表示我们在过去需要关注多少个标记以预测当前时间步的行动。好的,再深入一点代码。
决策变换器与普通变换器的操作有一些微妙的差异。首先,这里的时间步长概念将具有更大的语义,扩展到三个标记。因此在感知中,你只需考虑每个单词的时间步长,例如在 NLP 中,或每个补丁在视觉中。
在这种情况下,我们将有一个时间步长包含三个标记,一个用于状态,一个用于行动,一个用于奖励。然后我们嵌入每个标记,并添加污染嵌入,正如在变换器中常见的那样,然后将这些输入提供给变换器;在输出时,我们只关心这些费用标记中的一个,在那些默认的实验中,我会说即使其他标记可能对目标预测感兴趣,但现在让我们保持简单。
我们想要学习一个策略,这个策略试图预测行动。所以当我们尝试解码时,我们只会关注从预先定义层中的隐藏表示得到的行动。好的。这是前向传递,那么我们用这个网络做什么?我们训练它,怎么训练呢?😊。抱歉,关于语义的一个快速问题,如果你回到上一张幻灯片。这里的加号。
语法意味着你实际上是在逐元素添加值,而不是将它们连接在一起。是这样吗?没错。公。好的,那最后一个函数是什么?我以为是连接,为什么我们只是加它呢?抱歉,你能回去一下吗?好的。我认为这是一个设计选择,你可以在其中进行模式操作,可以添加它。
这导致了不同功能的编码,在我们的案例中是版本化的 O。你为什么尝试另一个,而它不起作用?或者说,为什么这样?因为我觉得直观上串联似乎更有意义。因此,我认为它们在编码功能上有不同的用例,一个是真正混合状态的嵌入并基本上进行位移,如果你把状态的嵌入视为一个向量,添加某些东西实际上是在位移。
而在串联的情况下,你实际上是在增加这个空间的维度。😊。是的。所以这些是做着非常不同事情的不同选择,我们发现这个效果更好,我不确定我是否记得如果你将它们串联,结果是否会有显著差异。
但这是我们使用的这个。如果你是对的位移,那么如果你对一个状态进行嵌入,并且假设你执行某些操作,然后又回到同一状态。你希望这些嵌入是相同的,然而现在你处于不同的时间步骤,所以你进行了位移,那么这不是更难学习吗?
所以在你所说的基本上,有一个更大且有趣的问题。我们是否在失去马尔可夫性质?因为如你所说,如果我们在不同的时间步骤回到相同的状态,难道我们不应该执行类似的操作吗?答案是肯定的,我们实际上是非马尔可夫的。这在最开始可能看起来非常反直觉,为什么非马尔可夫性在这里很重要。
我想提到另一篇论文,它与这个研究非常相关,实际上更详细地展示了这一点,并且基本上说,如果你试图预测过渡动态,那么你实际上可以在这里构建一个马尔可夫系统,这样效果也会很好。
然而,从实际预测行动的角度来看,考虑之前的时间步骤是有帮助的,尤其是在有缺失观察的情况下。例如,如果你的观察是实际状态的一个子集,那么查看之前的状态和动作可以帮助你更好地填补某种意义上的缺失部分,这通常被称为部分可观察性,通过查看之前的标记,你可以更好地预测在当前时间步骤应采取的行动。
所以非马尔可夫性是故意的,而且是反直觉的。但我认为这是将这个框架与现有框架区分开来的事情之一。因此,它实际上会帮助你,因为强化学习通常在无限问题上表现更好,对吧?从技术上讲,按照你所制定的方式,它在有限问题上表现会更好,我假设是因为你希望根据历史采取不同的行动,考虑到现在你处于不同的时间步骤。
是的,如果你想在 In Verorizon 上工作,或许折扣政策在这种情况下也能起到类似的效果,我们使用的折扣因子是 1,基本上就是没有折扣。但你说得对,如果我们真的想将其扩展到 In horizonizon,就需要更改折扣因子。
谢谢。好的,问题。哦。我想在聊天中刚刚回答了,但我还是想问。我可能错过了,或者也许你要谈论它。收集的离线数据,使用了什么政策进行收集?这是一个非常重要的问题,我会在实验中提到。
所以我们使用的是针对我们场景存在的基准,基本上这些基准的构建方式是。你使用在线强化学习训练一个代理,然后在某个时间步查看它的重放缓冲区。因此,在训练时,作为一种中等水平的专家,你收集了它的转移经验,作为离线数据。我们的框架对你使用的离线数据是非常不敏感的,所以我尚未讨论过,但在我们的实验中是基于传统基准的。明白了,我问的原因并不是因为我不相信你的框架能够容纳任何离线数据。
但我觉得你即将展示的结果将严重依赖于数据收集政策。确实,确实如此,我想我有一张幻灯片展示了一个实验,其中数据量在我们与基准比较时可能产生差异,尤其是当离线数据较少时,变换器特别闪耀的地方。
知道。好的,酷。谢谢。好的,伟大的问题,所以让我们继续。我们已经定义了我们的模型,它将关注这些树结构,现在让我们看看如何训练它,所以非常简单,我们试图填充动作。我们将尝试将它们与数据集中已有的动作匹配,如果是连续的,就使用均方误差;如果是离散的,我们可以使用交叉熵。
😊,嗯。但是这里对我们的研究有很深的意义。因为这些目标在训练时非常稳定且容易正则化,因为它们是为监督学习开发的。相较之下,R 更常用于基于贝尔曼方程的动态规划风格目标。
而这些最终会变得更难以优化和扩展。这就是你看到结果中存在很多差异的原因。好的,那么这是我们训练模型的方式,现在我们如何使用模型,这就涉及到为模型进行回放的问题,这里将类似于自回归生成,其中一个重要的标记是“未来回报”。
我们在评估时需要设置什么,假设我们想要专家级表现,因为那将有最高的回报。所以我们设置初始回报为进行。不是基于悲惨树,因为现在我们没有悲惨树,我们将生成一个悲惨树,所以这是在入口时。
所以我们会将其设置为暴露项。例如,在代码中,这整个过程的样子基本上是将这个回报标记设置为某个目标回报,并将初始状态设置为来自初始状态分布的一个。
然后你只是推出你的决策变换器。这样你就得到了一个新的动作。这个动作也会给你环境中的状态和奖励。你将它们附加到你的序列中,你得到新的回报,并且只取上下文和关键,因为这是变换器用来做出预测的,然后将其反馈给远程变换器。所以这是常规的自回归生成,但要注意的关键点是你如何为强化学习初始化变换器。
所以在这里添加一个问题。那么在专家目标书写方法上,这个选择有多大?是否必须像平均专家奖励那样,还是可以是需求中可能的最大奖励?
😊,那么,这个数字的尝试真的重要吗?这是一个很好的问题。我们通常会将其设置为稍高于数据中的最大回报,所以我认为我们使用的事实是 1.1 倍,但我认为我们在这个范围内进行了很多实验,而且它对你使用的选择相当稳健。例如,对于 hopper 专家,回报大约为 3600,我们发现从 30 开始的表现非常稳定。
从 5400 甚至高达 5000 的数字都有效。嗯。是的,不过我想指出的是,这在常规强化学习中通常并不需要,比如知道暴露回报,而我们实际上是超越常规强化学习,可以选择我们想要的回报,因此我们确实需要知道暴露回报是什么。
到那时。谢谢。还有一个问题。是的,所以是的,这只是你。你不能在常规油上,但我很好奇。你是否也限制这个框架仅限于离线油成本。如果你想在在线油中运行这种框架,你必须事先确定回报。因此,这种框架我认为仅限于离线油。你觉得呢?是的,我认为是的,早些时候也问过这个问题,是的,我认为现在这是第一项工作。所以我们专注于离线强化学习,这些信息可以从离线数据集中获取。
啊。可以考虑一些策略,想想你如何在线获得这些信息,你需要一个课程,所以在训练初期,当你收集数据时。当你进行推出时,你会将你的专家回报设置为数据集中看到的任何内容。
然后随着我们开始看到变换器实际上可以超越该性能而递增。因此你可以认为,从慢到快为 Biitzitchu 回滚指定一个课程,决策变换。我说太好了。谢谢。所以是的,这就是关于模型的内容。我们讨论了这个模型是什么,输入是什么,输出是什么。
训练该模型使用的损失函数是什么,以及我们在测试时如何使用该模型。这个框架与通常称为概率推断的实例化方式有联系。因此我们可以将强化学习公式化为一个图模型问题,其中使用这些状态和行为来确定下一个状态。为了编码最优性概念,通常还会有这些额外的变量,01。
02 以及其他隐含表示编码某种奖励的内容。基于这一最优性成立,强化学习的任务是学习一种策略,即从状态到行为的映射,以实现最优行为。如果你仔细观察,你会发现这些最优性变量和决策变换器实际上是通过返回值进行编码的。
😊,所以如果我们在回滚期间给予一个足够高的值,比如专家返回,我们实际上是在说,基于这一点。最优性的数学量化形式。希望你能实现这个条件。
这就是我想谈论模型的全部内容。你能解释一下吗?
你在决策变换器中所说的最优性变量是什么意思,返回值又是什么意思?
对,所以我们可以在更简单的上下文中将最优性变量视为立法或二进制。一个是如果你达成目标,另一个是如果你没有达成目标。在这种情况下,你也可以考虑在测试时编码返回值。我们可以将其设置为一,这基本上意味着基于最优性的最优性。
将达成目标视为一。生成一系列行动,使其成立。当然,我们的学习并不完美,所以不能保证我们能做到这一点。但我们已经训练了变换器,以一种方式将返回值解释为某种最优性概念。如果我正确理解的话,基本上可以说。
展示一个最优转换序列是什么样子的。因为你已经学习到模型已经学习了成功和不成功的转换。确切地说,正如我们将看到的一些实验,对于二元情况,它要么是最优的,要么不是,但很少情况下它可以是连续变量,而在我们的实验中确实如此,因此我们也可以实验性地观察其间的情况。
😊,哦。好的,让我们进入实验,有很多实验,我挑选了一些我认为有趣的,给出论文中的关键结果,但随时可以参考论文,获取我们模块某些组件的更详细分析。
首先,我们可以看看它在离线 RL 上的表现。对于 Atari 套件环境和 OpenAI Gym 有基准测试,还有一个特别难的环境 Keyto Door,因为它包含通道,并要求你进行信用分配,稍后我会谈到这一点。
但是我们看到,这种沉默的变换器在这个案例中与最先进的无模型离线 RL 方法具有竞争力。这是为离线 RL 设计的 Q 学习版本。当涉及长期分配时,它能表现出色,而传统的基于 T 学习的方法则会失败。是的,所以这里的要点不应该是我们已经可以用决策变换器替代现有算法。
但是这强有力的证据支持这个基于变换器的范式将允许我们更好地通气和改进模型,希望能够均匀超越现有算法。而且在需要长期信用分配的更困难环境中也有一些早期证据。
我可以在这里问一个关于基线的问题,具体是 TD 学习吗?
我很好奇,因为我知道很多 TD 学习代理都是前馈网络,这些基线是否有递归结构。是的,保守的双重学习基线确实有递归。但我不太确定,可以在离线时再查一下,回头告诉你。好的,没问题,谢谢。还有一个快速的问题。
那么,你是如何在实验中评估决策变换器的,因为你需要提供目标回报。你是否使用了最优策略来获取最优回报?在这里,我们基本上查看有用的离线数据进行训练。我们设定了离线数据中的最大回报。
目标回报略高于此,所以使用了 1.1 的系数。我明白了,关于表现,抱歉我不太明白我们看到的是什么,但这里的表现是如何定义的,是你实际获得的奖励吗?是的,你可以指定目标回报。
但没有保证你所采取的实际行动能够实现那个回报,所以你需要根据实际环境回报进行衡量。我明白了,但我好奇这些表现百分比是如何计算的,比如你从中恢复了多少。
接下来的几个月,是的,这些不是百分比。这是我们对回报进行规范化,使其在 200 之间。是的,我明白了。那么我只是想知道,学生变换器实际回收了多少奖励,比如说如果你指定。我想要 50 个奖励,它能得到 49 个,还是有时能更好一些?
这是一个很好的问题,我的下一个问题。在这里,我们将精确回答这个问题:如果你输入目标回报,它可以是专家的也可以是非专家的,那么模型实际上在实现这一点方面表现如何?
😊,所以 x 轴是我们指定的目标回报,y 轴基本上是我们实际获得的程度。作为参考,我们有这条绿色线,即神谕线,这意味着。😊。无论你希望得到什么,这个学生变换器都能给你,所以这将是理想情况。
所以这是一个对角线。我们还因为这是离线 RL,所以有橙色的。哪个是数据集之间的最佳项目,所以离线数据并不完美。我们只是绘制了离线数据性能的上限。在这里我们发现大多数环境都是如此。
目标回报与我们输入的目标回报和模型实际表现之间的契合度良好。我还想从这一幻灯片中提取一些其他观察结果。因为他们可以变化这种奖励的概念。从某种意义上说,我们可以通过奖励条件返回进行多任务 R,这并不是进行多任务平行的唯一方法,你可以通过自然语言指定任务,或者通过目标状态等等。
但是这是一个概念,其中任务的概念可能是你想要多少奖励。嗯。另一个需要注意的是,这些最小值偶尔会外推,这不是我们一直看到的趋势。我们确实看到一些迹象,所以如果你看一下例如 Sequest。😊,在这里,最高的回报三清数据集相当低。
如果我们指定一个比这更高的回报。对于我们的决策变换器。我们确实发现模型能够实现。因此,它能够生成比它以前在数据中看到的更高的回报树。嗯。我确实相信,未来在这个领域的工作应考虑如何使这一趋势在不同环境中更加一致,因为这将真正实现离线 RL 的目标。即在次优行为下,如何从中获得最佳行为?
但仍需观察这个趋势在不同环境中能否保持一致。我可以插入一个问题吗?是的,所以我觉得最后一点非常有趣,你们偶尔看到这个真不错。我很好奇会发生什么。所以这都是你作为输入给出的条件。你想要什么回报,它就会尝试选择一系列能够提供的行动。
我很好奇,如果你给它一些荒谬的输入会发生什么,比如说,你知道这里的回报数量级大概是 50 到 100。如果你输入 10000 会怎样?好问题,这是我们早期尝试过的事情。我不想说我们是否尝试过 10000,但我们确实尝试过一些很高的回报,这连专家都无法获得,通常我们会看到这种性能水平的现象,所以你可以在 Half Cheetah 和 Pong 等游戏中看到一些迹象,或者在 Walker 中,在你观察最后时刻时,事情开始饱和。
😊,所以如果你超过了某个阈值,这个阈值通常对应于最佳的回报阈值,但并不总是如此,超出这一点后,所有的回报都是相似的。因此至少有一点好事是,它的性能不会退化,所以如果你指定一个 10000 的回报而得到的回报是这样的,那就会有点令人担忧。
Train0 或其他一些新的东西。所以稳定化是好的,但这并不是说它会持续不断地增加,因此会有一个点,性能会达到饱和。好的,谢谢。我也很好奇,通常对于迁移模型,你需要很多数据。那么你知道需要多少数据吗?数据的规模和性能之间的关系是什么?
是的,所以在这里我们使用了标准的数据,比如 D4RL 的墨西哥基准,我认为有数百万的转移数据。对于 Atari,我们使用了重放缓冲区中的一部分,这个规模小于我们用于 Mujoco 基准的数据。我在下一张幻灯片中有一个结果,显示了在数据较少时,变换器特别有用。
所以是的,我想在你继续之前问一个问题。在上一张幻灯片中,你再次提到的多任务部分的回报条件是什么意思?是的,所以如果你考虑测试时的目标回报,你必须作为起始标记输入的那一个。作为一个标记,指定你想要的策略。
喂,这样的多任务怎么理解?所以它是多任务,因为你可以通过改变目标回报来获得不同的策略,实质上是在编码不同的行为。例如,想象一个跳跃者,你指定一个非常低的目标回报。
所以你基本上是说,给我一个代理,它只会停留在初始状态,而不会进入未知领域。如果你给它非常非常高的目标回报,那么你要求它执行的传统任务就是跳跃并尽可能远地移动而不摔倒,但你能否对那些多任务进行量化,因为这基本上意味着你的回报条件是它记忆的提示,对吧?这通常是多任务的一个陷阱。
所以我不确定这是否是任务标识符,这正是我想说的。我不确定这是否是记忆化,因为我认为这个目的。就是说,拥有一个固定的离线数据集基本上是在说,如果你有相同的起始状态并采取相同的动作,并且有相同的目标公平收益,这将是非常特定的。
这将被视为记忆化。但在测试时,我们允许所有这些东西发生变化,实际上它们确实会变化,所以你的初始状态会不同,目标收益可能与训练期间看到的完全不同。
是的,因此本质上模型必须学习在不同的初始状态和目标收益值下生成该行为,这与训练期间看到的情况可能不同。如果动态是随机的,即使你记住了动作,也不能保证得到相同的下一个状态。
所以你实际上会与动态性能有不良相关性,因为动态也是随机的。另外,我很好奇训练商业变换器需要多少时间?一般来说,大约需要几个小时,我想说大约是 45 小时。这取决于使用的 GPU 质量,但这是一个合理的估计。
所以实际上在进行这个实验和项目时,我们想到了一个基线,我们很惊讶在之前的传统离线 RL 中并不存在,但它非常有意义,我们还想考虑决策变换器是否在做一些类似的事情,而这个基线我们称之为个人行为克隆。
行为克隆的作用基本上是忽略收益,简单地通过尝试映射当前状态下的动作来模仿代理。这在离线数据集上不是一个好主意,因为它会有低收益和高收益的项目树。传统的车辆克隆,通常被视为离线 RL 方法的基线,除非你拥有非常高质量的数据集。
这对于离线 RL 来说并不是一个好的基线。然而,有一个我们称之为 Per BC 的版本,这实际上是有意义的。在这个版本中,我们从离线集中过滤出收益最高的项目树。
你知道每个转移的奖励,你计算项目树的收益,保留收益最高的项目树,并保持一定的百分比,这将是超参数。一旦你保留了这些最高比例的项目树。
然后你只是要求你的模块模仿它们。因此,模仿学习也特别使用,尤其是在行为规划的形式中。它使用监督学习,基本上是一个监督学习问题,因此如果你执行这个过滤步骤,实际上也可以得到监督学习的目标函数。
哦。我们发现,实际上在中等和高数据情况下,最近的变换器与 Pu 和 VC 非常可比,因此这是一个非常强的基线,我认为所有未来的离线 Rs 工作都应该包括这个。实际上,上周有一篇提交的 eyeC 文章对此基线进行了更详细的分析,这在本论文中有所介绍。
我们发现,在低数据情况下,变换器的表现远远优于行为克隆。这是针对 Atari 基准测试的,正如我之前提到的,我们的数据集要小得多。与 Mojoko 环境相比,我们发现即使在不同的百分比超参数变化下,通常也无法达到变换器的强性能。
所以 10% DCc 基本上意味着我们过滤掉并保留前 10% 的轨迹,如果你再低一些,起始数据集就会变得相当小,因此基线变得毫无意义。但是对于合理的范围,我们从未发现性能能匹配变换器在这些 Atari 基准测试中的表现。
嗯,我可能注意到了。在第三张表中,例如,这不是论文前面的那张表。这里有关于 CQL 性能的报告,这让我觉得在直觉上与百分比 BC 相似,意思是你选择表现良好的轨迹,并尽量保持在相似的策略分布内。
这是状态空间分布。我对此感到好奇。你是否知道 CQL 性能相对于这里的百分比 BC 性能如何?
所以这是个好问题,问题是即使对于 CQL,你也依赖于这种悲观的概念,在选择更有信心的轨迹时,并努力确保策略保持在该区域。所以我没有这个表中 CQL 的数字。
但是如果你查看 Atring 的详细结果。我认为他们肯定应该有 SQL,因为这就是我们在这里报告的数字,所以我可以告诉你,SQL 性能实际上相当不错,而且竞争力很强。当决策变换器针对 aary 时?所以这里的 TD 学习基线是 SeQ。因此,从财务角度来看,我想它的表现会比 B 个人更好。是的。
如果之前提到过,我表示歉意,我只是错过了。但是如果你有感觉,这基本上是 CQL 在外推方面的失败,或者说在拼接轨迹的不同部分时存在问题。而决策变换器能够进行这种外推,比如第一段轨迹非常好,第二段轨迹也很好,因此可以将它们拼接起来,而 CQL 可能做不到,因为连接这些的路径可能未被行为策略良好覆盖。
是的,是的,这实际上涉及到一个我没有强调太多的直觉,但我们在论文中讨论了,基本上我们为什么期望变换器或任何模型查看次优的离线数据并得到生成最优负载的策略?
直觉是,如斯科特提到的,你或许可以将次优轨迹中的良好行为拼接在一起,而这种拼接可能会导致比数据集中单个轨迹更好的行为。
这是我们在小规模图实验中早期发现的证据。我们也希望变换器在这方面表现良好,因为它可以关注非常长的序列,因此能够识别这些行为片段。
当拼接在一起时,会给出最优的行为。所以,很可能这在变换器中是独特的,而像 CQL 这样的模型可能做不到,因为它过滤掉的数据是自动限制的,无法进行这样的操作,因为这些良好行为的片段可能出现在整体回报不高的轨迹中。
但是如果你将它们过滤掉,你就失去了所有这些信息。好的,我说过这里的超参数是上下文和 K,和大多数感知模型一样,变换器相对于其他序列模型如 LSTM 的一个大优势是它们可以处理非常大的序列。从表面上看,这可能看起来在 RL 中使用 Markovian 会很有帮助。
这也是之前提到的一个问题。因此,我们进行了这个实验,比较了上下文与 K 等于 1 的性能,这里我们有上下文,环境中为 30,乒乓球为 50,我们发现增加上下文长度是非常重要的。
获取良好性能非常重要。好的。那么到目前为止,我给你展示了变换器中的这些内容,这非常简单,我没有哪一张幻灯片是深入探讨动态编程的,而动态编程是大多数 R 的关键,这只是纯粹的监督学习,在自回归框架下取得了良好的性能。嗯。那么在什么情况下这种方法实际上开始超越一些传统方法呢?所以为了进一步探讨,我们开始研究稀疏奖励环境,基本上我们只是拿现有的 mojoku 环境,然后不是为每个过渡提供奖励信息,而是在轨迹结束时给予累计奖励,所以每个过渡的奖励为零,只有在最后才能一次性获得全部奖励,这就是一个非常稀疏奖励的表现场景。
在这里我们发现,哦。与原始密集结果相比,DT 的延迟结果会稍微恶化,这是意料之中的,因为现在你在每个时间步骤都 withholding 了一些更细粒度的信息,但与原始 E 性能相比,下降并不太显著。而对于 CQL 这样的算法,性能下降非常明显,所以 CQL 在稀疏奖励场景中受到了很大的影响。
但远程变换器做得更多。为了完整起见,如果你还看到了行为训练和个人行为克隆的性能,因为它们不看奖励信息,除了个人 BC 可能只是在预处理数据集时看一下。这些对环境是否稀疏并不敏感。
如果你在做在线 R,你会期望这有所不同吗?嗯。为什么会有不同的直觉?我会说没有,但也许我错过了这个问题背后关键的直觉。嗯。我认为因为你是在离线训练,对吧。
就像你的下一个输入在某种意义上总是正确的行动。因此,你不会偏离轨道,因为你只是不知道。所以我能理解在线环境会非常困难。基本上因为它什么都不知道,都是在黑暗中摸索,直到可能最终获得成功。
对,对,我认为我同意,这确实是一个很好的直觉。我认为这里因为离线 R 真的在去除试错的方面,而在稀疏奖励环境中会更困难。因此,DT 性能的下降在这里应该更加明显。我不确定它与其他算法性能下降的比较,但这似乎是一个有趣的点。
设置测试 DTN。那么我也许错了,但我对决策变换器的理解是,在训练中你使用奖励进行正确的决策,所以这是不是意味着本质上。
从初始状态出发,根据训练方案,模型可以知道最终结果是成功还是失败,对吧?
但这就是决策变换器训练方案的独特之处,而 CQL 则有所不同。我的理解是,它基于每个转换的训练方案,因此每个转换在某种程度上与最终奖励解耦。这是正确的吗?是的,尽管乍一看,纪律变换器所面临的一个困难是。
最初的标记在整个轨迹中不会改变。是的,因为这是过去奖励的场景,所以除了最后一个标记会突然降到零之外,标记在整个过程中保持不变。但也许我认为你是对的,也许在这个开始的时候就能看到这一点。以一种关注未来奖励的方式进行训练,或许是性能下降的原因之一。
不可察觉。是的,我想这里有一个实验,如果你改变训练方案,使得只有最后一个轨迹有奖励,但我在考虑这是否会被注意机制弥补。
反之也是对的,如果你将奖励信息嵌入到 CQL 训练过程中,我很想知道会发生什么。是的,这是一个很好的实验。好吧,关于这个,还有另一个我们测试过的环境,我在早些幻灯片中给你简要预览了结果。这个环境叫做 keycudo 环境。😊,它有三个阶段。
在第一阶段,代理被放置在一个有钥匙的房间里。一个好的代理会捡起钥匙,然后把它放在一个空房间里。在第三阶段,它会被放在一个房间的门口,实际使用在第一阶段收集到的钥匙来打开门。😊,所以本质上,代理将获得一个绑定奖励,取决于它在第三阶段是否到达并打开了门。
这是基于它在第一阶段是否捡起钥匙的条件。因此,你想要将功劳分配给过去发生的事件,这是一个相对抽象的概念,所以这非常具有挑战性。如果你想估算模型在长期功劳分配上的表现,这在现实场景中是非常合理的。我们在这里发现,我们测试了不同数量的项目树。
在这里,项目树的数量基本上是看你实际上看到这种行为的频率,而听力变换器在这两种基线行为上表现得更好,实际上比其他模型要好得多,其他模型在这方面很挣扎。哦,还有一个相关的实验也很有趣。
通常,很多口头算法都有演员和评论者的概念。演员基本上是根据状态采取行动的人,想象成策略。评论者则是在实现长期目标方面评估这些行动的好坏,即长期奖励的累积和。
这是一个良好的环境,因为我们可以看到远程变压器作为评论者训练时的表现。我们在这里做的就是,不是将动作作为输出目标,而是将其替换为奖励。
所以这很有可能,我们可以再次使用相同的因果变压器机制,仅关注前一个时间步骤的转变,并尝试玩弄奖励。在这里,我们看到在钥匙到门的环境中出现有趣的模式。
我们确实看到奖励概率在预期中变化很大,因此基本上有三种场景。首先,看看蓝色场景,其中代理没有捡起钥匙并且付出了代价。因此,奖励概率都大致相同,但随着代理不去捡钥匙变得明显。
奖励开始下降。然后在整个剧集中保持接近零,因为未来阶段您无法拥有钥匙来打开门。如果您捡起钥匙,有两种可能性。哦。在第二阶段,您在一个空房间中,这只是一个干扰因素使剧集变得很长。但在最后。
两种可能性是,一种是您拿到了钥匙并且实际上到达了门,这就是我们在这里看到的橙色和棕色部分,您会看到奖励概率上升。😊 另一种可能性是您拿到了钥匙,但没有到达门,在这种情况下,预测的奖励概率开始下降吗?
所以这次实验的主要结论是,任务变压器不仅仅是优秀的演员,这在我们从优化策略中看到的结果中已经很明显。它们在执行这项长期任务和稀疏奖励的任务时,也展现出非常出色的批评能力。那么,为了确保,您是预测每个时间点的奖励吗?还是这像是每个时间点的奖励?
但是您在预测。因此,这里的奖励是走向,而我也可以检查我的印象,在这个特定的实验中,预测走向奖励或实际奖励并没有什么区别。但我认为 Lu 对此更感兴趣。那么,您是如何获得奖励的概率分布的?是通过评估很多不同的剧集并只计算奖励,还是您明确预测某种分布?
哦,所以这是一个二元奖励,这样你就可以有一个概率结果。哪的。我有个问题。是的。通常,我们会称某些东西预测状态值或状态实际值为评论员。但在这种情况下,你要求决策转换器仅预测奖励。那么你为什么还要称其为评论员呢?我觉得这里的类比通过“未来收益”变得更清晰。
就像如果你想想“未来收益”,它确实抓住了你想看到未来奖励的本质,所以我的意思是它只会预测未来收益,而不是单步奖励。对吧?是的,好的,所以如果你要预测未来收益,对我来说有点反直觉,因为在第一阶段。
当代理仍在钥匙房间时,我认为如果捡到 K,它应该有很高的未来收益。但在图中,你知道,在钥匙房间,代理捡到 K,而没有捡到 T 的代理却有相同水平的未来收益。所以这对我来说相当反直觉。我认为这反映了一个良好的特性,就是你的分布。就像如果你解释。
它朝着正确的方向前进。在第一阶段,你不知道这三种结果中哪些是实际可能的,而第一阶段我也在谈论非常大的意义。你会慢慢了解它,但基本上在第一阶段,如果你看到所有三种可能的未来收益都是一或零,那是同样可能的。而所有三种可能性,如果我们尝试评估预测的。
这些可能性的奖励不应该是相同的。因为我们真的不知道在第三阶段会发生什么,对不起,这是我的错误,因为之前那个盐水绿线是代理,没选到。但结果是蓝线是代理,没选到。好的,所以是的,这是我最好的理解,好的。这对我有意义。谢谢。论文中似乎并没有完全清晰。
但是你做过实验,比如预测动作和未来奖励,结果如何?😊,K 候选者表现是否有所帮助?实际上我们做了一些初步实验,但没多大帮助。不过,我确实想再次提到一篇同时发表的论文,“悲剧性转换夏季”,他们尝试预测状态、动作和奖励,实际上这三者都是在一个基于模型的设置中进行的,这样也有意义。
尝试学习每个组件,比如转移动态、策略,甚至可能在它们一起的设置中学习评论员。我们没有发现任何显著的改进。因此,为了简单起见并保持模型自由,我们没有尝试将它们一起预测。明白了。好的,总结一下。我们展示了决策转换器。
这是尝试基于序列建模来接近 R 的第一项工作。之前方法的主要优点在于其设计简单。希望通过进一步扩展,我们会发现它的扩展能力远远优于现有算法。训练是稳定的,因为我们使用的损失函数经过了大量测试和优化。
研究和感知。未来,我们也希望由于架构和训练之间的这些相似性,如何进行基于感知的任务的实施。如果可以轻松地将它们集成到这个循环中,以便状态、动作或甚至感兴趣的任务。
它们可以基于感知来指定。或者你可以通过自然语言指令来指定目标任务,因为这些模型可以很好地处理这些类型的输入。希望它们能够轻松集成到决策过程中。而且,我们在离线 R 设置中看到强劲的表现。
尤其是在需要我们进行长期任务的场景中表现出色。所以还有很多未来的工作,这绝对不是结束。这是重新思考如何构建能够扩展和概括的智能体的第一步。嗯。我挑选出了一些我觉得非常令人兴奋的扩展点。
首先是多模态性,所以追求这些模型的一个重要动机是我们可以结合不同类型的输入,无论是在线还是离线。真正构建像人类一样的决策智能体。我们处理周围的多种输入,并对此做出反应,因此我们做出决策,我们希望在人工智能体中也能实现同样的效果,也许决策变换器是实现这一目标的重要一步。多任务,因此我在这里描述的多任务形式非常有限。
这是基于期望的回报。但在指定命令给机器人或理想的目标状态方面,它可以更丰富,例如,甚至是视觉上的。因此,更好地探索这个模型的不同多任务能力也是一个有趣的扩展。最后,多智能体。作为人类,我们从不孤立地行动。
我们总是在一个涉及许多其他智能体的环境中进行操作。在这些场景中,事物变得部分可观察,这恰好发挥了变换器设计上非马尔可夫性质的优势。因此,我认为探索多智能体场景的巨大可能性,变换器能够处理比现有算法更长的序列,这可能有助于构建更好的环境中其他智能体的模型并做出反应。
所以,是的,这里有一些有用的链接,以防你对项目网站感兴趣,论文和代码都是公开的。我很乐意回答更多问题。好的,我说过了。感谢精彩的演讲,真的很感激。大家在这里都很愉快。诶。我认为我们快到课堂限制了,所以通常我会为发言者准备一轮五个问题,这些问题通常是学生们知道的。
但如果有人很着急,你可以问一些一般性的问题,大家。😊。在我们停止录音之前,如果有人想提前离开,现在请随意提问。否则,我将继续进行。那么你认为变压器在强化学习中的未来是什么?你认为它们会像已经在语言和视觉领域那样占据主导地位吗?
你认为在基于模型和模型驱动学习中,你会在强化学习文献中看到更多的变压器出现吗?是的,我认为我们会看到大量的研究,甚至可能已经出现了。今年的眼动大会上有很多使用变压器的研究。话虽如此。
我觉得需要解决的一个重要环节是探索。这个问题并不简单,我猜你将不得不放弃一些我提到的变压器在损失函数方面的优势,以真正实现探索。
因此,尚不清楚那些修改过的损失函数在探索中是否会显著影响性能。但只要我们无法突破那个瓶颈,我认为,我不想承诺这确实是我们的未来。
没问题,你的问题当然。我不太确定是否理解这一点。所以你是说,为了在强化学习中应用变压器进行探索,必须有特定的损失函数,而它们出于某种原因很棘手。你能多解释一下修改过的损失函数是什么,以及它们为什么看起来棘手吗?
所以在探索中,你必须做与开发相反的事情,这与你无关。而且目前在变压器中没有任何内置机制来鼓励这种随机行为。在状态空间中寻求不熟悉的部分。这是传统算法中内置的内容,通常会有某种熵奖励来鼓励探索,如果想将这些变压器用于在线强化学习,那么这些修改也是需要考虑的。那么,如果有人,我是说,简单假设我有这个完全相同的设置,而我采样行动的方式是以 epsilon 贪婪的方式采样,或者创建一个 Boltzmann 分布并从中采样,那么会发生什么呢?看起来似乎会。
这就是强化学习所做的事情。那么会发生什么?自适应强化学习比这多做了一点。它确实做了那些事情,例如改变分布,你的邮政分布是从中采样的。但同样,正如我所说,魔鬼藏在细节中,这也与如何控制探索与利用的组件有关。
😊,这是否与远程变压器兼容还有待观察。我不想过早下结论,但我会说,初步证据表明,它并不是完全可以直接转移到在线案例的,这是我们所发现的。必须进行一些调整以适应,但我们仍在弄清楚。
我问这个的原因是,如你所说,魔鬼藏在细节中,所以像我这样天真的人可能会直接尝试做强化学习。我想听听更多关于这个的内容,所以你是说在强化学习中有效的方法可能在决策变压器中并不适用。
你能告诉我们为什么吗,像哪些病理会出现?那些“魔鬼”是什么?隐藏在细节中。同时提醒你,我们已经超时了,所以当然可以,随时跟进,但对我来说,这真的很令人兴奋,我相信这很棘手。
是的,我再问两个问题,然后就结束了。第一个是,埃里克,你认为像这种变压器是否可以作为解决石油中的 k 中心问题的一种方法,而不是使用某种折扣因子?😊,这能否请你重复一下问题,抱歉。
我认为通常我们需要在某种失调中允许编码奖励,但变压器能够在没有这个的情况下进行信用分配。所以你认为像这样的书是你应该这样做的方式吗?
例如,不是使用某种折扣,而是直接预测奖励。所以我想说,折扣因子在一般情况下是一个重要的考虑因素,并且它与纪律变压器并不相互排斥。所以基本上会有什么变化,我认为代码实际上提供了这种功能,其中返回值将作为折扣奖励的总和进行计算。
因此,这在很大程度上是兼容的,在某些情况下,我们的上下文长度仍然不足以真正捕捉到我们进行信用分配所需的长期行为。也许可以借用传统技巧来解决这类问题。
明白了。是的,我在阅读距离变换工作时也想到了有趣的事情。你没有固定的伽玛,伽玛通常是一个超参数。你没有固定的伽玛,所以你认为可以学习这个吗?这是否可能?你能否为每个手势有不同的伽玛?
这实际上会很有趣,我之前没有想到过。但也许学习预测折扣因子可以是这项工作的另一个扩展。😊,你认为这种决策变压器的工作与 Q 学习兼容吗?如果你有像 EQL 这样的东西,你也可以实现这些损失函数吗?😊,在决策变压器之上。
所以我想,也许我可以想象在这里编码悲观主义的方法,这对 CQL 的工作原理至关重要,实际上大多数算法也是如此,包括基于模型的那些。我们在这里故意关注简单性,因为我们认为,散乱的学术文献部分原因在于,大家都试图解决不同的子问题。
😊,关注 IDOs,它们非常适合解决像你在线或离线、模仿、进行多任务等各种不同变体的问题。因此,我们的设计并没有想要直接包含当前算法中的确切组件,因为那样看起来就会更像是架构的变化,而不是更概念性的变化,转向思考 RS 序列建模。非常一般地说,是的,就这样。
你认为我们可以使用某种像 3 学习目标而不是监督学习吗?
诶,这可能是的,也许我说,对于某些情况,比如在线 RL,这可能是必要的。😊,不过,我们很高兴看到它并不是必需的。但对于变压器模型或其他模型是否变得必要,仍需进一步观察。哦,也好。感谢你的时间,这真是太好了。
P5:5.专家混合(MoE)范式和开关变压器 - life_code - BV1X84y1Q7wV
今天,埃尔温和我将进行一场关于通过稀疏性扩展变压器的演讲,我们今天要讨论的稀疏性是指,每个输入可以获得不同的权重集或应用不同的计算量。
奥伦,你想先开始吗?是的,我想这项工作的整体动机是,社区意识到规模可能是获得强大性能的最重要途径之一,目前不同实验室和机构之间几乎存在一种持续的军备竞赛。
各种实验室之间争相训练最大的模型。这可能可以追溯到 2020 年初,OpenAI 的一篇名为“Scing Gs for No languageage Model”的论文,其中发现模型性能遵循可预测的缩放法则,随着模型大小呈幂级数增长,无论是计算还是参数。因此,这种缩放法则在多个数量级上进行了概括,给了我们信心,如果我们训练非常大的模型。
我们可以通过推断这些缩放法则来预期稳定的性能。因此在那篇论文中,他们也发现了有趣的观察,即基本上,较大的模型更简单有效。所以,如果你有固定的计算预算,你可以预测最佳模型的大小。
总体观察是,你宁愿训练非常大的模型少量步骤,也不愿训练较小的模型更多步骤。这些模型的缩放是通过基本上增加模型维度来实现的。他们并没有考虑稀疏性,而稀疏性是你可以用来扩展架构的新维度。N DC 算是演讲的重点。这里提到的稀疏性基本上是。
你将会有基于网络输入的激活权重。因此,每个输入将经历大致相同的计算量,但将应用不同的权重。这可以追溯到 1991 年,论文称为自适应局部专家的混合,最近被诺姆·沙泽和谷歌大脑的同事们重新审视。
在 LSTM 中,它们将前馈网络和 LSTM 替换为专家混合。因此,这里的工作原理大致是你将有多个专家来实现,嗯,一个小网络,或者在这种情况下,我认为只是一个 D 矩阵乘法。因此,你还有一个附加的获取网络,在这里以绿色显示,它输出概率分布。
每个专家应当发送信息的优先级分配。因此,这个优先级分配被计算为一个软分布。一旦你得到了它,你就可以选择几个专家。因此有不同的策略。也许我们稍后会讨论这些,而输出就是确保所有选择的专家输出的方式。因此它们在这方面取得了相当大的成功。主要是在翻译方面,但还有一些,嗯。
你知道,一些复杂性在于 Hindu 更广泛地使用于 NLP。因此,切换变压器论文解决了其中的一些问题,并将讨论如何,嗯,如何提高训练能力或降低通信成本,并减少模型复杂性。
好吧,没错,你想去。
嗯,是的。所以我们首先要介绍的一种方法是切换变压器,这有点像简化版的专家混合变体,结合了一些其他改进的训练和微调技术,这使得它能够,嗯。
要稳定训练,并且在完成大量下游任务时表现更好。因此,是的,切换变压器模型的工作方式如下。你有一些变压器模型,具有自注意力和前馈层,想法是我们将每两个或每四个前馈层中的一个替换为切换变压器层。因此,你可以看到左侧是一种层块,它是自注意力,然后是加法,再然后是前馈层。
然后进行反归一化,在这种情况下,我们用切换层替代正常的前馈层,我们可以在右侧看到这个的示意图,所以在右侧我们可以看到该层有两个输入,一个是标记更多,另一个是标记参数,我们可以看到这些嵌入表示将被发送到一个路由器,这正是它在专家混合中的工作方式,因此路由器基本上只是获得所有专家的分布,在这种情况下我们可以看到最高的概率是给四个专家中的第二个专家,然后右侧的标记实际上在第一个前馈权重上具有最高的概率,这就像是第一个专家。
所以我们可以看到,在 Switch Transformer 中,我们要做的很简单,就是将其发送给最高概率的专家。我们可以看到自适应计算在这里的位置,我们会有四组权重,在所有 token 之间共享某些权重和计算。
例如,自注意力层对于更多 token 和参数 token 的计算是完全相同的。但是在稀疏 Switch 层中,我们可以看到输入的浮点运算量是相同的。
实际上,具有不同的权重矩阵。
下一张幻灯片。这就是 Switch Transformer 的高层次想法:与将 token 发送给多个不同的专家相比,这样可以增加通信成本,我稍后会进一步讨论。仅将其发送给一个专家就显著简化了算法。
针对改进的训练方法,我们专注于三个不同的方面,以帮助提升稀疏模型的训练。第一个是选定精度,这样可以让这些稀疏模型以较低精度格式进行训练。这一点非常重要,因为我们训练的大多数模型其实并不希望使用 F 32,因为计算速度较慢,而且在不同进程间传输时也会有很多问题。
由于数量翻倍,其速度是之前的两倍。此外,我们还有一些初始化技巧和训练技巧,可以让它们更稳定地训练,尤其是随着模型规模的增大,采用了一种新的初始化方法和学习率调度的变化。第三,由于我们的模型有更多的参数。
我们确实注意到过拟合动态有明显不同。尤其是在对这些在互联网上预训练过的小任务进行微调时,可能只有 50 到 100,000 个示例,这使得它们更容易过拟合,因此我们还考虑了一些自定义正则化,以帮助防止观察到的过拟合。最后,我们还讨论了我们所做的可微分负载均衡技术。
这让每个专家大致获得相同数量的 token 非常重要,特别是考虑到我们希望在硬件上高效运作。我们希望每个专家接收到的 token 数量相似,因此我们在交叉熵损失中添加了一个额外的负载均衡损失。下一张幻灯片,所以我将深入讲解选定精度。
因此,当我们训练大型模型时,能够以较低精度格式进行训练非常重要。因此,我们希望将每个权重的激活从 32 位缩小到 16 位,我们使用 B float 16 表示法。我们发现,这些模型不稳定,尤其是稀疏模型在训练 1020000 步时,损失会发散,这是我们经常遇到的情况。因此,我们发现的一个关键点是,基本上需要将一部分计算转换为 float 32,以便这些模型能够稳定训练。
我们发现的关键组件是路由计算,基本上我们稍后可以更深入地探讨技术细节。但基本上,每当存在这些指数运算函数时,拥有更高的精度非常重要,因为舍入误差会极大改变某种指数运算的输出。例如,如果你有一个指数函数,将其改变 0.1、0.2 或 0.3。
这可能会极大改变像指数运算的输出,尤其是根据输入的大小而异。所以,是的,这是一件非常重要的事情,基本上不会改变计算,让模型更加稳定。下一张幻灯片。
我们发现,标准的初始化方式使模型更容易不稳定或表现更差。因此,我们采取的一个非常有效的方法是将初始化规模缩小,当我们这样做时,发现质量显著提高,这真是一个非常简单的修复。
下一张幻灯片。第三件事是,由于我们注意到这些模型更容易过拟合,因为它们有显著更多的参数。我们也仅在专家层使用了更多的 dropout,这里可以看到我们有 T5 基础模型,这是一个稠密模型。然后我们在此基础上有多个不同的开关变体,我们发现对这四个不同的微调任务最有效的方式是显著增加专家层内的 dropout 率,我们发现这对于对抗过拟合非常有效。
幻灯片上有个问题,哦,还有关于学生的。好的,让我看看。你想继续吗?我可以问一下,参考之前的表格,你提到的吞吐量和精度让我感到惊讶,似乎能匹配这个 1390 的数字。
我们使用选择性精度,似乎我会预期它是介于某种状态之间。是的,所以这基本上归结为这样一个事实:可能会有一点噪声样本,但速度是唯一我们正在计算的部分就是路由器。
这是一个,也许是计算中的一个微不足道的部分,而且没有任何通信,因此在网络中本质上就像是一个免费操作。所以无论你将其转化为 B 流 16 还是流 32,其实在我们能实际测量的速度精度范围内,根本不会影响速度。
而且,这些架构只有在每个下层都使用快速层时才会生效。所以,嗯,基本上,洪泛 32 个参与者在整个架构中是相当微不足道的。举个例子,我觉得就我所想,进行第一次像稠密层那样的权重矩阵乘法所需的计算量大约是 140 倍。因此,这是一个非常、非常小的部分,而且是的,我们不会像 Erwin 提到的那样频繁使用它们。
明白了,好的,谢谢。是的,然后,嗯,简单说一下这一点。我不会进入一些技术细节,但我们确实,知道。因为我们在硬件上训练这些东西,我觉得混合 X 范式的一个重要部分是这些东西的设计使得它能高效映射到硬件。所以我们希望进行稠密矩阵乘法。为了使这一切顺利进行,我们还希望能够让每个不同的专家接收到大致相等数量的令牌,我认为这对于负载均衡的公式并不是很敏感,我们尝试了几种方法,很多都有效。
但是,是的,基本上在使用稀疏性时,你确实希望添加某种负载均衡损失。是的,下一个幻灯片。嗯,好的,Erwin,请继续。是的,所以,框架,我们使用的库依赖于静态形状。好的,所以我们有 XLA,TensorFlow 的编译器和机器流预期张量的静态形状。然而,Switch Transformers 中的计算是动态的,因为,你知道,因路由器。
对,不同的输入会被路由到不同的专家。所以,我们需要提前指定将有多少令牌发送到每个检查点。因此,我们将引入这个专家容量超参数,以指定这一点。这将是一个静态数字,表示每个专家可以处理多少令牌。
所以在实践中,我们通过引入一个叫做容量因子的量来进行参数化。这里有一个例子。底行是,一堆令牌在一个设备上,然后你需要将这些令牌路由到多个设备或多个专家。如果太多令牌被路由到一个单一的专家停止,一些令牌会被丢弃。
正如我们所说,像是导出有一个固定的容量。因此左侧的例子中,容量因子为 1。这基本上意味着总容量。没有像额外的缓冲。用于写入令牌。因此,我们可以使用一个大于 1 的容量因子。在右侧,你有一个 1.5 的例子。这意味着现在每个专家大约有三个槽位可以处理三个令牌。
因此,这可以防止令牌丢弃,因为我们有更多的容量。但问题是,这意味着更高的,嗯。这意味着设备之间的通信成本更高。是的,好吧,这样可以。是的,请继续。但是是的。因此,我们还实验了一个叫做“没有令牌被落下”的方法。
这个想法如下。由于我们必须为每个专家设定一个固定的批量大小,并且可能会丢弃令牌。我们在想,嘿,丢弃令牌就像有一些令牌没有任何计算应用于它,这可能会损害模型性能。
那么如果我们进行多阶段路由程序呢?首先,你进行正常的路由,即将每个令牌发送到其概率最高的专家。但对于任何丢弃的令牌,你再发送给它们的第二高概率专家,依此类推,你可以基本上重复这个过程,以保证没有令牌被丢弃。
有趣的是,实际上,这种方法在实证上并没有提高模型性能,反而有些损害了它。我们觉得这实际上非常有趣。我认为直觉是,一旦模型学习了,它想把一个令牌发送到一个专家。它真的想将该计算应用于它,而仅仅应用其他计算并没有完全具备相同的特性,实际上可能是有害的。
所以我们觉得这很有趣,因为我们非常乐观这可能会提高性能。但结果并没有真正产生差异,这让我们感到惊讶。我们有一个问题来自。嗯。我觉得这个问题确实涉及到你刚才提到的最后一点。当我考虑混合专家时,通常它们会专注于不同的事情,所以我认为这就像是。
就像很多情况一样,我只是想知道。如果你把它发送给第二好的专家或者其他的。如果所有的令牌都特别适合一个专家,而你只处理,比如说 20%的令牌。这样比重新路由到其他地方要好得多。是的,即使你丢弃了很多令牌,把它们发送到第二、第三或第四个最佳选择也没有好处。而且我们发现的一个有趣特性是。
你知道我注意到这些模型令人惊讶地对令牌丢失非常鲁棒。尤其是在微调期间。所以是的,在标准范式中,我们会先预训练这个东西,我们会有一些负载均衡损失,这使得令牌实际上相当均衡。但在微调期间,我们真的想在一个特定任务上进行微调,我们实际上研究了这个确切的问题,我们在研究是否在微调期间拥有负载均衡损失是否有帮助,如果你有负载均衡损失,是的,这种方式确实鼓励我们为特定任务尝试使用所有专家,而不是关闭它,而是肯定会有一些先前的专业化,实际上最好就是关闭辅助损失,即使是 60%到 70%的令牌被丢弃,实际上表现得比所有令牌均衡要好得多,但负载均衡损失难道不鼓励所有专家学习非常相似的权重,然后随机分配令牌吗?
因为那样一来,发送到哪个专家就无所谓了。所以当我们使用负载均衡损失时,路由机制肯定是学习到的。因此,模型确实被鼓励去选择一个它想要发送的专家,这是正确的,但如果所有专家都学习相同的权重,那么路由器基本上会学习到,哦,发送到哪里都无所谓。
所以如果你鼓励负载均衡,你就是在鼓励。技术上来说,就像你想让任何专家的损失都适配,对吧?我的意思是,这可能是极端行为。如果你有一个非常高的负载均衡系数。但实际上这个系数是可以调节的,我们吸收这些值以获得足够智能的钢铁贷款,比如说有意义的路由。是的,因为这就像是在交叉熵损失和负载均衡损失之间的平衡,一方面是的,你肯定想鼓励模型保持平衡,另一方面你也想要良好的经验性能,是的,模型能够肯定地在一方面学习和专门化专家,使得它们有不同的权重,这样你就能确定某些令牌会发送到特定的专家,但另一方面仍然保持最近的平衡,以便模型能够在现代硬件上高效运行。
Excycl。我们教室里也有一个问题。所以我想问的问题是,似乎这是一个非常实验性的讨论,我们在讨论浮点精度,讨论不同的方法,而这些方法目前表现良好,每当我们处理一组客户时,总会有一个研究问题,我觉得我错过了,所以我们试图通过这些实验回答什么?
是的,我认为高层次的研究问题是,你知道的。我们能否创建一些模型,从自适应计算的角度出发,你知道的,我们能否尝试让模型更好地模拟我们认为模型应该自然使用的动态,也就是不同的输入应用不同数量的计算,赋予它们不同的权重,基本上都是这样。
基本上,我们试图研究并找出如何为这些模型创建一个新的框架,以便训练,而不是像稠密模型那样,对于每个输入始终应用相同的计算,这很有趣,因为当你说应用相同的计算时,人们可能会想象。
对我来说,立即想到的是花多长时间来考虑某件事。我所说的意思是,如果我们想进行可变长度计算,可以想象我可以进行短时间的计算,也可以进行更长时间的计算。
但是这个想法是,为什么我们不考虑不同计算的维度,我是说当然假设这些专家确实需要学习不同的东西,我想你会在后面提到。那么,为什么我们立即想到专门的专家,而不是思考可变长度计算呢?
所以是的,实际上我们稍后会在演讲中深入讨论一些可变长度计算的内容。我觉得这两者都是重要的方向,应该同时推进。我想,是的,我想这有点像,你知道的。我想我并不是要冻结我的问题,而是想理解你为什么决定首先处理这个。
我想了解为什么你的团队首先选择这个方向。是的,绝对如此。所以我认为,从经验上看,稀疏性在深度学习领域所带来的结果比自适应计算要好。我认为我们使用这些东西的方式与我们现代硬件的映射非常好,这也是非常有前景的。我认为我们看待这个问题的方式是,稀疏性是朝着更有趣和更通用的自适应计算迈出的第一步,因为我认为这些东西是复杂的,通常从一些运作良好的东西开始要比尝试一些不太成熟的东西然后再让它运作得很好要好。
所以我认为我们大概是从稀疏性开始的,像 nu Shaser 和其他人在 LSTM 背景下取得了很好的效果。我们对将一些东西移植到变压器上很感兴趣,希望让它们运作良好,然后慢慢开始扩展到你提到的其他自然问题,比如,好的,而不是每个核心有不同的权重。
让我们也许每个核心都有不同的计算,这就是我想我们如何建立自然的进展。我们的研究很好,感谢你。你觉得呢,Errwin,还有什么要补充的吗?嗯,是的。我觉得我有点把自适应计算和稀疏性视为。您知道,相关但又是分开的东西。因此,您知道,特别是每个示例不同参数,自适应计算可能是不同数量的流。
我们有一些与谈话和丢弃相关的内容,但那种。不是的。那不是领域。主要动机,肯定,如巴雷特所提到的。我想说,没有人真正弄清楚深度学习中的自适应计算。而其中一个原因是因为我们有这些。您知道,加速器,对吧,期望,期望像。
不是的。我们需要处理批量数据并行性,对吧?我们所有的加速器和框架都使用这种 SPMD 范式,我们应该将相同的计算应用于两个示例。因此,如果你查看文献,你会看到像普适变压器这样的工作,替换了变压器中的前向适应。
仅仅是一个递归权重,所以它在每个标记上有点像 LSTM,而 LSTM 可以在某些标准上停止于不同的时间和空间,但这些东西的实现方式仅仅是通过遮罩。因为它需要以 SPMD 编程风格来实现。因此,确实,spaity 最开始的工作会更容易。而且还有。
之前在 LSTM 上有一些结果。因此,关于第一个问题,你知道,类似的研究问题就是,哦,我们能否设计出更高效的模型?
而 spaity 是一个尚未得到太多探索的新维度。是的,我认为,您知道,我对这作为研究问题很满意。很好,好的,接下来是下一张幻灯片。是的。哎呀。是的。再一次,把所有内容放在一起。因此,开关变压器层选择一个专家,就只是顶尖的专家,然后结合一堆一般稀疏模型的改进,以便,您知道,让它更好地微调,允许它,您知道,更加规则化。
让它可以用更低精度的格式进行训练,还有很多技术细节需要处理,以使它们能够顺利训练和工作。因此,我们还希望进行一次比较,比较顶级一和顶级二路由,因为顶级二路由是最流行的技术,因此在这里我们可以看到,我们有两个不同的稠密模型以不同的大小进行训练,我们将查看预训练的负对数困惑度。
是的,数字越大越好。接下来的幻灯片中,我们将研究不同容量因子的模型。容量因子为 2.0 基本上意味着每个专家可以接收两个标记的缓冲区。我们将比较如Top-1与Top-2路由。
同时比较它们的速度以及达到某个阈值质量的时间。好的,没错,在容量因子为 2.0 的情况下,我们可以看到MOE模型优于Switch Transformer,这非常合理,因为Switch Transformer仅向每个专家发送一个标记。
专家混合模型发送两个标记,这使得这个额外的缓冲对专家混合模型特别有利。因此我们注意到了这一点,下一张幻灯片,或者说下一个。现在,当我们降低容量因子时,Top-1路由的真正有趣的部分就出现了。高容量因子有许多缺点,其中之一是它确实会增加将标记发送到正确专家的通信成本,同时也会增加计算成本和大量内存开销,因此如果可以降低容量因子,通常是非常有利的。
所以我们在这里看到的是,当容量因子较低时,Switch Transformer实际上优于专家混合模型。我们可以看到,在质量达到阈值的时间上,我们到达得更快,因此即使在两个模型之间也是如此。
容量因子 0 和 1.25 就像我们设置中看到的那种Pareto 最优,在较低容量因子的情况下使用Switch Transformer是最优选择,因为尽管在单步的质量上稍微差一些,但运行速度更快,因此这是一个Pareto 最优的决策。下一张幻灯片。
我们还可以看到,在容量因子为 1.0 的情况下,这确实对Switch Transformer带来了不成比例的好处,甚至在Annaparto的观点上优于 1.25 的容量因子。有趣的是,由于MOE也进行了一些额外的计算,我们也可以在模型的其他地方增加计算量。
我们可以看到,这是一种更高效的计算分配。所以,总体而言,我们的结论是,使用Top-1路由的较低容量因子比在较高容量因子下使用Top-2路由更加Pareto 高效。
下一张幻灯片,Oran,你可以接手了。好的,接下来我们来看一下Switch Transformer如何随着开关层中专家数量的增加而扩展。
所以在右侧,你会看到一个展示复杂性的图表。Vus 训练步骤针对不同的切换架构,范围从 Tfi 基线,也就是基本上没有专家或单个专家到 128 个专家。你会看到随着我们增加专家的数量。
也增加了稀疏参数的数量,你会得到某种速度提升,你知道。你会得到稠密基线的速度提升和所有那种边际收益递减。通过增加专家的数量,之前的图表是查看复杂性与强度步骤的关系。
在这里我们查看复杂性与强度时间的关系。这包括,你知道,拥有更多专家时的额外通信成本。你知道,与稠密基线进行比较。因此这是针对基于切换的或 T5 基线的,我们观察到相对于我们的 T5 基线,有高达 7 倍的提升。嗯。所以,你知道,仅仅是。
也许需要将这些数字进行背景化。你知道,7 倍的速度在规划中是很难获得的。因此,我认为这是其中之一,你知道,这是一个结果,可以激发对体育模型的极大兴趣。即使现在只是为了预训练,拥有那个数字就像,你知道。
也许它确实有。这里可以获得显著的东西。好的,所以体育缩放法则。因此在这里我们会看看。所以它的哲学与。稀疏矿物参数,通过增加专家的数量来提高。因此,与那种神经缩放法则的论文相似。
我们观察到,当你增加参数时,即稀疏参数,并保持 flops 固定时,你会得到持续的收益,但收益逐渐递减。好的,所以现在我们要比较专家并行性和模型并行性。因此,我们引入稀疏性或专家并行性作为扩展模型的新维度。但是,当然。
还有另一个针对稠密模型的,它简单地是模型并行性,你知道。模型权重在调用上进行分区,一旦它们超过单个核心可以处理的最大大小。好的,所以。是的。左边的广告是优先展示的。是的,所以本质上我们所做的是比较基于切换的模型与稠密空间,并且我们还与使用模型并行的更大稠密模型进行比较,我们可以看到,你知道,基本上当我们想要扩大模型的规模时,我们有两个方向可以选择,我们可以通过模型并行性增加 flops 的数量,或者通过稀疏性增加参数的数量,因此我们可以看到,即使与通过模型并行性扩大的稠密模型相比,稀疏性仍然是在扩大模型规模时更有效的方法。
通过模型并行 ism,依然能比这个更大的密集模型实现 2.5 倍的速度提升。酷,所以稍微调整一下幻灯片。基本上,这里 T5 大型是使用其他部分的密集模型。好的,继续。好的。是的,还有一件事我们也想看看的是,如果你拥有很少的计算资源或者只有少量专家,这些专家模型是否有效。
所以通常在设计这些模型时,我们每个核心都有一个专家。但如果你没有一个大型集群来运行这些东西,比如说你只有一个有两个核心的 GPU,那么有两个专家是否比一个密集模型更有效,答案是肯定的。
所以即使只有很少的专家,我们也可以看到相当好的扩展属性。这对这些模型在较低计算环境中使用非常有前景。
下一张幻灯片。或者你想继续。好的,是的,所以。是的,所以看看。你知道。当我们使用不同类型的参数时,它们的表现是什么样的。即通过参数将 exp 添加到模型并进行模型并行,以实现数据并行,这在目前是主流范式。
所以,你知道,我想,在之前的幻灯片中,我们主要谈论了 X 并行,但当然,密集模型和大型密集模型使用模型并行。所以 G3 和其他大型模型,他们所做的就是在不同的核心之间共享模型权重。是的,我们有一个问题。哦,是的,我只是想知道,因为我觉得有。
我不知道你是否在其他地方看到了相关的研究,但我想在某篇论文中提到,专家越多,样本效率越高。我只是希望你能给我们一些关于这个的直觉,因为我。不了解为什么会这样。
所以我想,是的,也许嗯,是的,所以我想,比如说。关于更大模型的所有这些工作都是更有效的。
在这些扩展法则的上下文中,更大意味着更多参数和更多计算量。随着专家数量的增加,参数增多,但计算量不变,但模型在某种意义上仍然更大。
所以我想基于更大模型在样本效率上更高的直觉,实际上并不令人惊讶的是,这些拥有更多专家和更多参数的模型样本效率更高。我想这就是我的高层次直觉。是的,我会说这是可以预期的。
你知道,更多的专家可以提高样本效率。特别是如果你看看训练设置。对,在训练表中。好的,很好。那么我们在哪里呢?是的,所以是的。好的。所以我们看看模型权重在不同场景下的速度。这是第一个数据并行性。这是使用的典型设置。
尤其是对于不需要母体并行的大的太阳网络。所以让我,嗯,让我解释一下。好的,我就直接讲到最后的图,并解释一下如何看这个图。好的,我们有 16 个进程,它们组织成一个 4 乘 4 的网格,对吧?所以每一条虚线。
每个 4 乘 4 的虚线表示不同的核心。在第一行,研究模型权重在核心上的分布,而第二行,它展示了数据。因此,字面上的例子和标记在核心之间被拆分。然后,理解这个图的最后一件事是每个。嗯。是的。
这里每种颜色的阴影方块标识一个唯一的权重矩阵。好的,所以我们从数据并行性开始。对于数据并行性,相同的模型权重在所有核心之间被复制。数据仅仅是在我们的核心之间被划分,所以这对应于。你知道的,如果你喜欢使用图注的描述。
刚才给出的图注说明。所以接下来我们有模型并行性。这有点像一个理论示例,因为在实践中,人们总是将模型并行性与数据并行性结合使用。但是如果你只做模型并行,现在你将有一个被划分到所有核心的单一模型权重,而你的数据将只是被复制。
所有核心说。现在我们有模型和数据并行性。这是大型密集网络的典型场景。因此在这种情况下,模型权重在一部分核心之间被划分,这部分核心处理不同的数据批次。在这个例子中,我们有。
你知道,四个左右,所以这里的第一个子方块表示模型权重被划分到四个核心。而且这在数据并行维度上被复制,大约四次。在模型和数据并行的情况下,数据在模型并行核心之间被复制,并在数据并行核心之间被划分。
接下来我们有专家和数据并行性。因此在那个场景中,这有点类似于数据并行性,但现在每个核心将持有不同的模型权重,这通过不同的颜色来表示。并且在数据方面,数据只是简单地被复制,对不起。数据是在所有核心之间被定位的,就像在数据并行场景中一样。最后。
我们有最右侧的列,我想是的。那是用于更大模型的开关变换器论文中的设置。所以在这里,对于模型,每个专家被划分到多个核心中。因此在那个例子中,我们有四个专家,每个专家对应四个核心。
数据在多个并行调用之间复制,并在数据并行调用中进行分区。因此,这有点复杂,口头上理解起来比较困难。但 Switch Transformer 论文中有一张很好的图,并配有说明来解释这一点。是的,也许我们可以。没有 Barret,我们可以快速添加一些关于这个在实践中如何实现的内容。
所以。有一篇名为 Mesh Transformer 的论文,扩展了批处理或数据并行到更通用的 SPMD 样式编程。因此,不同的实验室有不同的框架,但这篇论文为通用的 SPMD 分布式计算奠定了基础。
这是训练大规模模型所必需的。在网格抽象下,基本上我们有一个过程的网格。ch,这个网格有维度,命名维度。这些命名维度指定了张量维度如何在网格维度之间进行分区或复制。因此,这种简单的抽象支持了你知道的并行性。
还包括模型并行性,尤其是同时进行的导出并行性,因此我邀请任何感兴趣的人查看那篇论文,因为那是有点的。
你知道,这为理解这些事情奠定了基础。好的,Dar 想去吗?好吧,接下来我们要谈谈如何将这些并行策略结合起来,形成一个 1。
6 万亿参数的稀疏模型。
所以接下来的幻灯片。是的,我们在这项工作中训练了两个不同的非常大的稀疏模型,并将它们与最大的 T5 模型进行比较,我们可以看到 T5 XXL。这是一个稠密模型,也是 T5 论文中训练的最大模型,约有 130 亿个参数,这里列出了许多模型维度,比如 D model DF,这些只是张量的各种大小和形状。
层数、头数,重要的是我们还提到了负对数困惑度。在第 250k 步和第 500k 步,因此我们设计了两个稀疏模型来测试,测试扩展与稀疏性、扩展与稀疏性以及 flops 之间的关系。所以首先让我谈谈 Switch XXL,它在每个 token 上的 flops 数量与 T5 XXL 相同,但有 64 个专家,这使得它的参数约为 4000 亿。
我们可以看到,在步骤基础上,它的性能相当不错,实际上超越了 T5 XXL,差距相当大。有趣的是,我们设计的第三个模型 SwC 有 1.6 万亿参数,但每个 token 的 flops 明显少于以上两个模型,几乎少了 10 倍 flops,因此通过减少 flops 来换取更多的稀疏参数。
我们可以在每个步骤中看到,switch C 模型的表现很好,但实际上没有更高 fl 模型那么好。然而,在一个以 TPU 小时为 X 轴而不是步骤的 Pareto 轴上,switch C 模型的表现实际上超越了两者,差距相当大。因此,对于预训练性能,我们看到,拥有大量稀疏性和较少交换实际上是非常有利的。
😊,下一页。是的,所以这两个稀疏模型实际上是在试图探讨诺姆·肖尔的假设。就是说,参数在知识推理中是有用的,而计算aK flops
则对智能有益,因此我们将通过不同的稀疏模型来深入探讨这个问题,并在不同任务上进行微调。
其中一些任务更需要知识,而其他任务则更依赖推理。对于我们想要给出的任何手动定义来说,都是如此。好的,固定一下,能不能回到上一页?抱歉,好的。对于一个固定的上游预训练任务,参数的独立性是否重要?
我们将关注两个任务,其中一个是 super glue lu,这是一种推理任务,另一个是类似于 Trivia QA 的知识任务,你只需给出一个问题并得到答案。
好的。在这里,我们将查看 superglue 质量,所以 X 轴是预训练性能,Y 轴是微调后的 superg 分数。有趣的是,我们可以看到,稀疏模型在固定的预训练困惑度下表现得确实不错。
微调时效果较差。这一点在图的右上部分尤为明显,那里密集模型的微调效果确实优于它们的稀疏对应模型。下一页。有趣的是,当我们在知识密集型任务上进行研究时。
在固定的预训练困惑度下,稀疏模型的表现出奇地好。所以对于一个大致上有相同困惑度的模型,我们在这些知识密集型任务上获得了很大的提升,这非常有趣,同时也显示了仅在预训练指标上比较的风险。这些模型在预训练指标上可能完全相同,但在微调不同任务时却有很大的差异。
下一页。有趣的是,这里所有的 switch 模型都是各种模型,它们仍然有相当数量的 flops,但红色模型实际上是 1.6 万亿参数的稀疏模型,尽管它的 flops 很少,但参数却非常多。我们可以看到红点在这里,与其他同样具有良好困惑度的稀疏模型相比,它的表现确实差得很离谱。
所以是的,这确实非常有趣,显示出在预训练期间具有较多稀疏性的模型,在某些需要更多推理的指标上表现不佳,但在知识密集型任务上却表现出色。下一页。是的,因此我们可以看到,它在预训练的困惑度上是一个巨大的异常值,在下游的问答任务中表现得非常出色。
下一页。
是的,好的,还有一件事,我们打算做的是观察稀疏模型在不同规模下的微调特性,看看它们的表现。下一页。是的,在这里我们尝试了两种不同的模型,一个是 T5 基础版,然后我们制作了一个平坦匹配的稀疏对比模型,当他们说平坦匹配时,就意味着每个 token 的计算量是相同的,但现在我们只使用专家,所以我们对基础版和大版都进行了这个实验,实际上我们看到几乎所有任务中,除了两个架构任务,稀疏模型的表现相当不错,这无疑是个好兆头,因此我们看到这些模型非常稳健,预训练效果良好,经过适当扩展后微调效果也不错,通过增加计算量和稀疏性,而负面结果通常是当稀疏性过大而计算量不足时。
下一页。是的,我们还想关注多语言训练,因此我们之前都是在仅限英语的情况下进行研究,我们还想看看稀疏性在多语言环境中的作用,因为我们觉得这将是稀疏性表现良好的非常自然的地方,专家可以跨语言进行专业化。
我们确实看到了强劲的结果,因此在 91% 的语言上。我想到大约 100 种语言,我们看到超过至少 a4 的性能超越了 MT5 稠密模型。下一页。还是你想继续?不,继续。好的,是的。我们还想讨论的是蒸馏。
这些稀疏模型的一个缺点是它们会有更多的参数,这意味着,如果你要提供这些模型,可能需要高吞吐量的用例,或者你可能需要将其蒸馏回更小的稠密模型。
所以我们在这里所做的是查看 T5 基础模型和转换基础模型,并关注它的预训练性能。然后我们进行一些不同蒸馏技术的消融实验,发现通过最佳技术,我们可以保持约 30% 的稀疏性质量提升,同时将其蒸馏回稠密模型。下一张幻灯片。是的,然后我们在多个尺度上进行研究,结果显示,从稠密模型到稀疏模型,再蒸馏回稠密模型时,约 30% 到 40% 的收益可以被保留,因此你可以去掉多达 99% 的参数,同时仍然保留大约 30% 的改进。
这是非常有前景的。下一张幻灯片,等等,抱歉。好的,抱歉。你能再说一遍最后一句吗?你说你可以保留教师利益的 30%。😡 是的,基本上是的,所以是的,正是这样,我们在说,我们训练一个稀疏模型,然后将其蒸馏回稠密模型。
与从头训练稠密模型相比。当你查看从头开始的稀疏和稠密模型之间的差距时,再与蒸馏后的稠密模型之间的差距进行比较,你有什么发现?你继续。哦,是的,可能让我再做一个快速的高层次总结。所以我们将进行的比较是从头训练一个稠密模型。
我们将从头训练一个稀疏模型。然后我们还会进行第三个实验,将稀疏模型蒸馏成稠密模型。蒸馏是什么意思?我们基本上是想要匹配教师的 logits。就像是标准的做法,匹配每个 token 的 logits 或软概率之类的。如果可以的话,我可以插入我的问题,我在挣扎的是。
我如何解释作为教师和性能的百分比的对齐?是的,好吧。基本上是查看稠密模型和稀疏模型之间的差距。因此,我们会让稠密模型获得一些性能,让稀疏模型获得一些性能,然后稠密模型与稀疏模型之间的蒸馏结果将位于这个范围内,我们基本上是说这是 30% 的范围。
所以在 0 到 1 的区间内,稠密模型到稀疏模型大约是 0.3 的位置。我明白了,所以这并不是说教师性能的百分比并不意味着如果教师使用教师的猜测或预测作为真相。
这并不是说蒸馏模型与教师模型匹配的概率是 33%。不,不,确切地说。基本上是在说你获得了大约 30%的质量提升。是的,确切地说,好的。那么如果我们可以倒回幻灯片,我有一个不同的问题,但我不想在谈论所有这些不同的 T5 基础时打断。
我对 T5 了解不多,我很好奇你知道 T5 在训练时,损失函数中是否有权重惩罚。有没有办法进行限制?没有。没有办法在那些稀疏或密集模型中进行限制。我很好奇,那密集模型与开关模型相比,添加一些激励去除无用权重的权重正则化时表现如何。
所以某种程度上,可能像 L1 项或者类似的东西,快速了解一下。嗯,我只是想知道,因为我们在谈论稀疏性的好处,我在想,这种稀疏性带来的好处有多少是因为某些因素。
实际上,开关模型所做的,如果我理解正确,也许我并不完全理解,是在前馈层中的开关模型。就像你将一些权重固定为零,这就是稀疏的意思。嗯,实际上我们确实是在努力注入更多的权重。所以我们实际上有点像是在做一些,可能是有些悖论,因为我们说的是开关变换器,但我们的想法是这样的。
嘿,我们实际上想要显著更多的权重。并不是说你会将权重归零,而是在一个更大的权重矩阵中,这样说合理吗?我明白了。所以对我来说,似乎一个相关的基准就是问,如果我有密集矩阵,但我激励它,比如说对权重施加 L1 或 L2 惩罚,那会发生什么?我想知道这与之比较如何。是的,我们没有进行这个实验,但这也会消除密集模型中的权重,所以如果有的话。
所以是的,是的。最后一点是,如果你仅仅添加像 L1 惩罚损失。你不会得到结构稀疏性。就像这里,我们知道。这不是在你庞大的权重矩阵中随机的权重是 0,而是,实际上是像块一样,取决于每个 expo 的块。
没错,这种结构允许整个通信的东西,是的。正是因为你有多个关系在这里。所以我完全同意那个块结构,我想说的是开关模型有这种非常丰富的结构,它不仅仅是稀疏的。它还具有这种丰富的结构,我试图在我的脑海中理清楚,是稀疏性提供了优势,还是你所建立的额外结构,这就是性能提升的原因。所以这就是我问的原因。
所以,这个结构是使得你能够利用你有多个调用的事实。但是如果你没有这种结构,你仍然需要路由到所有内容,因此会产生更多的通信成本等等。然后你第一个问题是什么,抱歉。
我不太确定是否有问题,我想我想说的是我在尝试澄清。是的,不管怎样。但我同意,这有点奇怪,因为稀疏性本身是有意义的谱系。对吧,比如说,压缩和模型剪枝就是一种稀疏性。但开关变压器和 ME 也被称为稀疏性,这两者是相关的。
但绝对是动态的,针对不同的目标,所以这是一个非常有趣的稀疏性概念。可是你有更多的参数,我需要再考虑一下,谢谢。是的。就像是在这个巨大的权重矩阵中的一个点,正是这样。是的,是的,我之前没有意识到这一点。谢谢你指出这一点。
我对消融部分有很多问题。是的,首先好的,如果你把它再提炼回去,现在你有了一个技术上来说是密集层架构,对吧?那么整个专家的概念是,某些令牌将被发送到不同的专家,因为它们在理解这个令牌的某些方面上更加专业。那么如果你回到这个密集层,你不就基本上只能服务于你基于这个密集层的专家吗?这些令牌可能表现良好,而其他的令牌则被抛在了后面,对吧?
是的。实际上我很抱歉,我觉得我没有完全理解你的问题。那么,你是在询问,我们是否只是针对特定数据集进行调整,以便弄清楚如何使用它?是的,或许具体来说,比如对于超级胶水,假设你想要提供一个能够很好地处理超级胶水的模型,我认为这个想法是将稀疏模型提炼成一个密集模型。这样你就得到了一个压缩的密集模型,它的表现要比从零开始训练或从预训练的密集模型进行训练更好。然后你是想说再说一遍。
你必须选择一个专家,对吧?不,不,不。你可以把所有的都提炼出来,因为你只是在匹配模型的输出。所以你可以把稀疏模型视为一种黑箱。我们所做的就是让密集模型匹配实际的最终输出。
令牌预测。哦,天哪,关于这个。好的,抱歉我不太熟悉这个“消融”的概念。所以我想这就是我整个困惑的来源。好的。是的,当然,因为我想这里的一个动机是,拥有专家可能会让服务变得有些困难,因为这需要更大的拓扑结构。
假设你有八个经验。你需要像……好吧,我想你可以在更少的调用中拥有多个导出。但是,你知道,假设这稍微难一些解决。所以如果我们能够从每次训练中获得好处,然后使用蒸馏将其转化为一个稠密模型进行服务,这样会有益处。因此,我认为这就是那个实验的动机,对吧,Eric?是的,没错。
好吧,我们不是这样吗?是的,继续吧,Ben,我刚刚说。我想还有一个书面的问题,所以是的。继续吧,真高兴你问。哦,是的,听起来不错。是的,你们到目前为止的讨论,问题是想知道你是否认为在构建模型方面有没有任何有趣的方向,比如显式优化并行训练的模型。我想 moE 模型在这里做得很好,而且在推理时,它的计算量也很少,这样会非常有用。
但是或者在前向传递时,我想你认为在分布式训练方面是否有任何有趣的方向,其中你可能会有一些明确架构为具有许多并行头或其他像是你知道的那种明显可并行化的特征的模型,还是仅仅使用标准的那种呢?
通过增加更多层来扩展模型,然后仅仅依靠模型和数据并行性就可以很好地工作。是的,所以我认为,让我确保我完全理解。所以是的。我认为目前为止,我们的模型确实是与硬件进行协同设计的,以及形状和其他方面。你知道,所以我认为从高层来看,是的。
我认为在代码与硬件、分区算法和模型方面有很多有趣的研究。😊 我认为,鉴于我们有这种 SPMD 网格样式的分区,我们已经在某种程度上设计我们的模型,使其能够很好地适配它。所以例如。
当我们想要扩展模型时,我们第一个扩展的维度就是内部隐藏维度。扩展这个维度确实有一些很好的特性。基本上它在某种程度上变得与你的一些通信成本是独立的。当我们查看这些计算设备上的计算与内存操作时,这一点是非常好的。
是的,没错。就像我觉得在设计这些模型时,我们实际上是在设定一些维度,以便它能够很好地映射到硬件上。所以几乎就像是,你知道,鉴于我们有这种模型数据并行性,我们实际上是更有针对性地设计模型。但我也觉得有很多新的有趣的分布式算法等等。
这使得模型设计变得非常有趣。我觉得一件非常酷的事情是微软的零分区工具。这也为模型设计和扩展等方面带来了一些新的有趣的影响。所以,我认为这是一个非常丰硕的研究方向。如果这回答了你的问题的话。是的,这非常有帮助而且有趣。嗯。😊。
是的,我对我们在硬件、模型、分区策略等方面的未来非常乐观,因为要想做到很好,你需要了解这三者,并将它们的发展相互交织。是的,是的,这听起来很棒。
很酷,是的,总结一下,切换变压器相对于专家混合来说是一种很好的简化,我们看到在许多非常强大的 T5 模型上,预训练的速度提升非常显著,而这些模型是非常强的基线,我们看到我们可以有效地将稀疏模型蒸馏回密集模型。
而且你知道,通过我们所讨论的一些新技术,得到了改进的预训练和微调。我们也看到这些模型在多语言数据上有效地工作,而且我们现在可以很容易地成功训练到 1。
6 万亿参数的模型,这非常有前景。下一张幻灯片。因此,我们还想谈两张幻灯片关于一些新工作的内容,实际上是使用这些类型的模型进行计算机视觉,实际上也涉及到它们如何用于某种程度的自适应计算。
这不仅使每个输入获得不同的权重,而且有时不同的输入将应用不同的计算量。是的,所以谷歌苏黎世团队在这方面有一些很好的工作,他们基本上在图像分类方面看到了类似的扩展属性,增加专家数量并利用稀疏性使他们在图像分类上获得良好的性能。
下一张幻灯片。有趣的是,他们讨论的一个内容是能力因子。所以我们在讨论像 1、1.25、2.0 这样的值,这意味着在 2.0 的值下,每个专家有两个 token 的缓冲区。但他们实际上研究了低于 1 的情况,这意味着在 0。
这意味着只允许一半的 token 数量。而且好的一点是,他们在图像分类中做了这个,而且在图像中有很多冗余,他们注意到通过只允许最多 1/10 的图像部分通过稀疏层处理,实际上可以获得非常好的性能。
所以是的,我们认为这是一个非常好的方向,结合稀疏性和自适应计算。😊,而且是的,非常感谢你们的邀请。就是这样,演讲结束。确实比其他人有趣。抱歉其他人来这里,所以你知道。道。所以我会问一堆问题,然后我们可以在课后为学生举行一个开放式问答环节。
有一件事是你有没有尝试使用更线性的注意力机制,比如改革者之类的东西来扩展计算?
我个人可能没有,我还没有亲自做过这个。是的,所以。你知道。我想我们可以评论一下。你知道,注意力。来自注意力图的成本并不是。这些大型变换器中的主导曲线。所以,你知道,使用 Millar 注意力的动机是它减少了注意力图的二次成本。
对吧?嗯。但到目前为止,至少,在典型的 NLP 设置中,比如超级 gly far 等。随着模型的扩展,大部分内存来自模型权重,而不是来自注意力图。这也是因为你知道,使用非常长的。上下文或序列长度并没有改善这个结果,所以你知道,使用普通的自注意力机制已经是一个非常强的基线了。
明白了,好吧。另一个问题是你认为这种机制是否更具可扩展性。比如你能否构建像 10 万亿参数模型这样的东西,你觉得呢?
是的,我绝对认为,老实说,最大的限制之一是你知道的。这甚至不一定是限制,只是你必须把参数放在某个地方,而设备上的存储是有限的。
但是如果你有足够的设备,你知道,是的。你可以分区权重,我觉得没有什么能阻止它。明白了,那你觉得你个人的方向是什么?像变换器的扩展会走向哪里?是否会有更多的研究尝试使用这样的变换器机制来构建专家,还是你认为社区需要其他东西?
是的,我确实认为专家混合方法应该找到它的出路,或者至少你知道像切换转换那样的稀疏层,但我肯定认为它们会融入未来的大型模型中。我认为它们确实带来了很多好处,而且在高吞吐量应用中也非常出色。所以我认为,稀疏性的一个缺点是,如果你看看每个模型权重的性能,它们总是会比稠密模型差。因此,如果你真的受到限制,想要设计一个尽可能适合小设备的最佳模型,那么它们可能不是最佳解决方案,因为稀疏权重的效果不如用于所有内容的稠密权重。
所以我认为这真的取决于应用,但我对在预训练期间使用大量数据并行训练这些模型时非常乐观,然后在更高吞吐量的示例中为它们提供服务。我觉得这实际上可能会是一个相当大的胜利。
所以这就是我对稀疏性在其他方面应用的看法,是的,我认为我不知道有很多令人兴奋的研究,你知道从许多线性注意力的东西,自适应计算,新预训练目标,你知道,未来会是什么样子很难预测,但有很多令人兴奋的事情可以期待。听起来不错,现在我们可以进行一轮学生提问,所以完全可以投票。
P6:6.DeepMind 的 Perceiver 和 Perceiver IO 新数据家族架构 - life_code - BV1X84y1Q7wV
所以今天我将讨论我们在 DeepMind 进行的一些最新工作,开发我们称之为“感知”的这一系列架构。我将以我们发展的通用架构目标为动机,所以我想直接阐明我们为什么关心通用架构,第一两个理由都是相当务实的。
但基本上这个想法是,如果我们考虑到在世界上可能收集的所有数据,其中很多基本上涉及我们认为的传统感官方式。这些东西可能包括从触觉、前庭感知到回声定位,以及你需要以任何想要的格式摄取文本的那种感知,甚至还有更奇特的事物,比如基于事件的摄像头。
触觉与其他感官的结合,包括嗅觉、深度感知,以及我们在考虑科学感知时真正关注的感官模式。基本上,如果我们考虑到所有数据的完整集合,以及实际上对每种不同的感官模式进行建模所需的东西,尝试为每一个模式工程归纳偏见几乎是不切实际的。因此,我们不想一个个地进行工程设计,这种方法在某种程度上确实有效,也许合理地描述了我们如何考虑为不同问题开发新架构,但这根本无法扩展。作为一个社区,我们无法承担为每一个模式手动设计归纳偏见的成本,因此,我们希望构建至少在初步上能处理所有事物的架构。
还有一个关于为什么我们应该研究通用架构的实用论据,那就是这将使我们能够构建更简单、更统一的系统。如果你查看复杂的多模态数据流在感知计算机视觉或模式识别文献中的典型处理方式,实际上,通常的做法是利用我们知道适用于单个模态的归纳偏见,然后工程设计结合这些不同子系统的方法。这可能意味着为每一个模态构建特定的输入模块,然后尝试各种不同的组合方式。
所以这可以起作用,但它给我们提供的系统原则上只会在一个或少数几个领域内有效,并且这些系统维护起来非常困难,往往脆弱,依赖于输入模态的特定处理假设。因此,我们希望朝着拥有统一黑箱架构的方向发展,这种架构可以更方便地工作。这里的想法是,如果我们能达到这一点,我们就可以抽象出架构构建过程,真正关注其他更高层次的问题,这就是这项工作的动力所在。
我们要做到这一点的方法当然是通过使用到目前为止最通用的架构,也就是变换器。你们都会非常熟悉变换器的基本构建块,但从一个非常高的层面来看,我们可以考虑它们的功能。
变换器使用通用的归纳偏差,因此它们是非局部的。这意味着它们不会对哪些点应该相互比较做出领域特定的假设。相反,它们在注意力聚焦上倾向于全球性。它们将位置作为特征,而不是架构的硬性约束。
这与基于 MLP 的架构或典型工作方式的卷积网络形成对比,它们将位置作为架构组件来限制计算的发生。当然,最后,它们在设计上有广泛的权重共享,并且由于它们关注矩阵运算,它们通常对 TPU 和 GPU 友好,因此这是变换器工作方式的一些优点。
当然,另一方面,它们在计算内存扩展方面表现很差,这有两个组成部分。因此,注意力本身的扩展是平方的,变换器的核心是这种大 O 的 m 平方 L 复杂度。我喜欢以这种方式书写,因为它真正强调这是一个属性,基本上是随着你增大模型,无论是输入大小还是深度。
这个问题只会变得更糟,因为你还涉及到深度的扩展。这里还有另一个实际的问题,因为我们进行的计算量与输入大小成正比,因此在标准变换器的工作方式中没有瓶颈,即使线性扩展也会成为一个问题。因此,在实际应用中,对于非常非常大的变换器,这通常是一个真正重要的瓶颈,但这两者都在这里起作用,所以我们确实希望抑制这两者,从而使我们拥有真正通用的架构。
我们不能仅仅有一些原则上通用的函数。我们必须有一些实际可以在我们关心的尺度和数据类型上使用的函数。因此,对你们来说这可能都是旧的,但标准的 QKV 注意力的工作方式基本上是这样的。
所以这全是关于矩阵乘法的。我们有一些输入,通过一维卷积和一乘一卷积计算查询键和值,然后计算注意力,注意力得分是一个矩阵乘法,具有以下这些形状。然后我们使用这里的输出来计算。
权重,以计算注意力模块的实际输出。最后,我们通过一个额外的多层感知机(MLP)运行这个,应用卷积来获取输出。这是我们在这里工作的起点。让我简要重申一下,为什么我们会想要这些标准变换器的优势。
所以非局部性是我们这里的两种归纳偏差原则之一,我认为将其与有效局部性进行对比是有用的,这在卷积中意味着什么。如果我们基本上从深度的角度来看,哪个输入可以看到其他输入,这意味着表达两个输入点的函数有多容易。假设我们看一下输入中的这个黄色和紫色点,我把它们尽可能地分开,但我们可能会问,有效计算必须多深才能处理这两个点,如果你看一下三乘三的卷积。
你必须基本上等到网络的最后,才能将这些东西一起处理。这意味着你能够表达的函数实际上看起来非常浅,因为它们必须建立在这个非常深的堆栈之上,而这个堆栈仅提供局部性。实际上,如果你看看例如 ResNet 的工作方式,你会发现初始块有一个七乘七的卷积,然后之后是三乘三的卷积,直到最后,你需要 283 个三乘三的卷积,才能使图像中的 224 乘 224 像素互相查看。这意味着在 ResNet 50 中,像素边缘的点实际上从未看到彼此。我发现这一点有点违反直觉,但它表明我们确实在很大程度上限制了这些模型中容易表达的函数,因此有些图像函数你根本无法用 ResNet 50 捕捉到。
另一方面,如果你看一个在整个输入上具有全局注意力的架构。因此,变压器,如果可以这样缩放,或者说我们将讨论的感知。所有像素都可以相互作用,因此模型基本上可以捕捉这些东西,并更容易地表达这些功能,这些功能可以以将局部性放在首位的方式来表达。我们还发现这些架构的另一个有趣属性是位置被特征化,这基本上意味着我们不再对某物的架构位置进行编码,以确定它相对于其他物体的位置,这允许网络基本上使用它想要的任何位置信息。
但也可以根据需要丢弃,这是标准的做法。当然是在使用傅里叶或正弦特征的架构背景下。但这里有很多灵活性。好的,那么现在考虑一下卷积与变压器在对立端的关系。可能看起来我们在可扩展性与通用性之间有一种权衡,因此如果我们观察卷积的应用方式,通常我们可以认为它们是在网格结构数据上使用。
当然,它们是可以应用于具有更有趣拓扑的数据集的卷积的广义,但通常我们可以认为它们在某种空间的网格上操作。而变压器适用于通用集合,因此从这个角度来看,变压器更为通用。另一方面,它们的缩放要差得多,因此卷积在输入点上是线性的。
该架构的过滤器大小和层数。而变压器具有这种平方缩放,且在深度上仍然是线性的。因此,从这个角度来看,我们在感知工作中的兴趣在于缩放变压器,但保持通用性属性。所以我们希望有一些介于这两种极端之间的东西。
我们这样做的方法是观察自注意力,并在某种程度上修改它,以便更好地进行缩放。因此,为了理解自注意力在标准变压器中实际上做了什么。我们取输入数组,这里以索引形式写出,表示标记的数量或像素的数量,基本上是输入单元的数量以及数量和通道。我们有一个一维卷积,因此这是关于 QK 和 V 的 O(M)。
然后,我们使用该操作的输出计算注意力图。这给我们带来了一个矩阵乘法,这是平方缩放的来源。最后,我们用另一个矩阵乘法计算输出特征。这里我们已经受到速率限制,因为即使是标准分辨率的图像也相当大,所以大约是 50。
对于标准的 imagenet 图像,大小将会非常小,因此如果我们想要深度架构,这种情况是行不通的。所以我们所做的是在架构的输入处进行替换。我们将自注意力层替换为交叉注意力层,这基本上是通过一个学习到的查询来实现的。因此,我们只替换输入中的查询,使用一个学习到的组件,这些索引和通道可以被看作是基本上作为 RNN 的学习初始状态。
在文献中,这个想法有很多不同的名字。我们将它称为某种潜变量,但有时也称为诱导点或其他名称。基本思想是我们学习查询的输入,并保持它的键和值相同。这样做的好处是,当我们在此之后计算注意力图时。
现在我们基本上将其从一个方阵转换为一个矩形矩阵,并将矩阵乘法的复杂度降低到 MN。因此,现在它在输入大小上是线性的。第二个矩阵乘法也具有相同的特性。因此,从二次变为线性,这一点很酷。交叉注意力的复杂度是线性的,但输出实际上更小,所以我认为这里更重要的一点是,这使我们能够将一些非常大的东西映射到一个与输入无关的大小上。我们对此有完全的控制,这是一种超参数,这使我们能够在此基础上构建深层网络,因为这是一个可以控制的小尺寸。
我们可以在此基础上承受二次复杂度。所以我们使用这个想法,对不起,我仍然有点困惑,你们是如何在第二步中将查询转化为矩形的。是因为你们将查询替换为一个学习到的东西,而这个东西的大小相比于第一步的输入大小要小得多吗?是的,正是如此。如果你看看这里的基本矩阵乘法,它写作 QK 转置,所以外部维度的形状是 n,这由查询决定,因此通过缩小查询,我们只是在改变矩阵乘法的输出。
好的,谢谢。嗯。😊,是的,我想。对不起,请继续。好的,所以基本上你只对查询这样做,对吧?所以键和值仍然保持原始大小的矩阵。对吗?没错,好的,但基本上。嗯,我不太明白,基本上对我来说,问题是对于一个查询,现在在我脑海中我在寻找。假设我现在有 I token,现在没有 IF 查询了。这不会导致问题吗?
就像我在尝试使用它时一样。并且要计算得分。是的,所以这里发生的事情是你会比较,你会有一个较小的子集,因此如果你从比较每个查询与每个键的角度来看,而不是从矩阵乘法的角度来看,在正常的自注意力机制中,我们对每个键都有一个查询,因此每个点都与其他每个点进行比较,对吧?所以在这里我们所做的是,不是将每个点与其他每个点进行比较,而是我们有一组可以想象成“聚类中心”的东西,所以这是一个较小的数量,我们将每一个聚类中心与每一个输入点进行比较。
但我们不知道哪些标记技术上属于哪些聚类,对吧?
没错,所以它必须是学习的,没错。所以我们可以这样思考这里发生的事情:在正常的自注意力和变换器中,通过对所有点进行比较,我们可以说,好的。我知道这个点的特征,我想让它关注相似的特征。在这里我们所说的是,我们正在学习一组补充点,这些点应该与某个输入子集尽可能相似。
如果我说错了,请纠正我,但这本质上是在进行某种硬性约束,你是在说,比如说,不是对所有点进行查询,而是选择一些我们认为是重要且相似的点,并且只对这些点进行所有的注意力。
这样加固是指你选择的点,对吧?
是的,所以它们是相关的,这可以是一种思考方式,但这种想法的稍微修改是,它们基本上生活在一个抽象空间中。因此,它们并不是一一对应于某个输入查询或某个输入点,而是某种程度上是学习得来的,所以它们可以在中间某个位置,但我认为这是一个好的思考方式,这是一种良好的直觉。
但是我想我在这里有些困惑的是,你这里有索引和两个矩阵(紫色和绿色)的索引,在最左边。但这些索引不一定对应于输入,例如在 NLP 领域,这些不一定是标记,对吧?这些只是一些随机的标识。
但是在这种情况下,影响矩阵是某种从输入标记映射到 N 维矩阵的结果。是这样吗?不,实际上它基本上就像是,它是一个学习的权重集,这可以是一种思考方式,所以它的功能与学习的位置编码完全相同,因此它基本上只是一种学习的嵌入,但并不是基于任何条件的,它只是一种。
这只是一组权重。好的,这样更有意义,谢谢你。好的。如果没有其他问题,我将继续,但当然请随时打断我。基于这个想法,我们有这个学习的潜在数组,它的功能有点像 RNN 的初始状态,或者说它是一组权重。
我们基本上是随机初始化,然后利用它来关注输入的字节数组,因此这里的字节数组是像 ImageNet 这样的像素平面集合。而这个输出将与潜在数组处于相同的空间中,即相同的索引空间。
并且在意图层的方式中有残差连接。因此,一旦我们进入这个空间,就可以通过使用标准的变换器,在潜在空间中构建一个架构,而不是在输入空间中,这将使我们基本上能够因为我们将输入提炼到较小的空间中,仍然灵活地允许所有这些点进行交互,所以这仍然应该与普通变换器一样具有表现力,而且这里的每个模块现在的潜在大小是二次的,而不是输入大小,所以这是我们可以相当控制的。
所以在程序的原始版本中,我们发现增加交叉注意力是非常有帮助的。这绝对是你可以做的事情,背后的直觉是如果这个瓶颈相当严重,我们无法保持所有输入的信息,因此我们希望这些查询现在在某种程度上依赖于过去,能够回顾输入点。因此,这在为第一篇论文进行调优时被发现非常有帮助,但我会说的警告是,我们不再推荐这作为最佳实践,因为这些交叉注意力最终是相当沉重的,但如果你希望有更多的条件查询,或者希望能够交叉关注新输入,这绝对是你可以探索的事情。
在数据集有有限数据量的背景下,我们发现另一件非常有帮助的事情,针对这些架构(包括 INe),是允许在深度中共享权重。因此,这基本上只是意味着将不同的交叉注意力和自注意力层的权重绑定在一起,因为它们是重复的,所以这最终看起来像是在深度中注册的 RN。
从高层次来看,这为我们提供了一种可以应用于图像的架构,但不对图像结构做任何假设。因此,你可以在其他地方使用它,我们基本上通过使用位置编码提供有关输入空间结构的信息,这里我们使用 2D 傅里叶特征位置编码。为了给你一个概念,每个输入点基本上会被分配一个位置,我们在 2D 中使用正弦和余弦特征,这基本上是 2D 输入位置的傅里叶合成。我们发现,如果我们取样的频率是信号的最大频率,我们的表现会比使用较低版本的频率要好,这基本上是因为这将使每个点都能意识到每个不同的点。
图像中的每个点,而如果你在较低频率下取样,可能会出现混叠。因此,并不是所有点都会清晰可读。我们还发现,较密集地采样频谱往往有助于对比,在我们开发这项技术时,与 Nerf 相比,Nerf 在早期实现中使用的频带数量相对较少,我们发现增加频带数量能显著提高效果,因此一般来说,这是一个需要关注的方面。
最后,与语言不同,通常你会将嵌入与正弦或位置编码相加,但我们发现连接它们的表现一直更好。这可能是因为内容嵌入的定位不像语言中那样稀疏。
我们并不完全确定,但这是我一贯观察到的事情。在我转向结果之前,我想将其与在图像上下文中使用变换器的其他一些方法进行对比。因此,这里显而易见的先例是视觉变换器,我认为这项工作在图像上下文中特别出色。但关于它有一些限制,使其不太适合更通用的用途。
所以,视觉变换器确实使用了输入的 2D 卷积。这通常被描述为输入补丁,2D 变换器的特殊情况。因此,这限制了你可以使用的输入类别。而且因为我们基本上将这种补丁或卷积构建进来了。
这意味着这种方法在非网格数据上实际上是不够的。还有其他方法可以调整它,但这是你需要为每个领域特别处理的事情。最后,由于我们有这种输入,告诉架构在初始分组中应该首先关注什么,这确实意味着消除了非局部性假设,但不太清楚这样做一次会有多大差别。
但这是在考虑这种架构时需要注意的事情。最后,交叉注意力在视觉文献中被广泛使用。因此,我只想强调几个例子,比如来自 Facebook 的一个物体检测方法。
基本上有一个卷积主干,然后用于生成输出特征图。这被传入一个变换编码器-解码器,当然,每当你想到编码器-解码器时,就会想到交叉注意力,因为从编码器到解码器有一个交叉注意力步骤。
所以他们基本上使用交叉注意力将某些特征图表示转换为更像物体边界框的东西。关于学习自监督或无监督物体分割模型的研究也相当不错。
在这项工作中,他们做了非常类似的事情,使用了一个卷积主干。他们然后使用我们在这里引入的潜在变量,称之为“槽”,基本上是将一些输出像素分配到不同的槽,以便在分割模型中对槽进行独立的互补解码。还有很多其他内容。好的,我首先会补充一下,现在我将带你们了解这个模型的结果。嗨,我可以哦,你先说,我在你之后。好的,抱歉,你能回到几张幻灯片吗?你知道的,就是输入是如何流入的,我想是那张,对,就那张。好的,有两个问题,潜在变换器基本上是自注意力,对吗?
是的,潜在变换器是一个完全自注意力的变换器,明白了。为什么像关键和价值直接流入交叉注意力,同时查询也流入,但潜在数组是并行流入交叉注意力的,能解释一下吗?
是的,这里只是想描述残差连接,因此交叉注意力被描绘为一个交叉注意力模块,交叉注意力本身具有注意力和残差连接,然后还有一个 MLP,这就是这部分的意思。好的,但基本上是 QKV 标准。
好的。谢谢。😊,我有一个稍微相关的问题,如果我们可以继续这张幻灯片。关于这个事情我认为有趣的一点。抱歉,我失去了。你在打断我。它主要由注意力层组成,无论是自注意力还是创建图像变换器。你能听到我吗,传过来了没有?不,信号有点卡顿,但我想,最近的。哦。
好的。我应该打字吗,是的,我觉得这是个好主意。我会打的,谢谢,抱歉。好的,随意进行,我会慢慢打。
听起来不错,听起来对我来说也很好。实际上,我可以插嘴吗,德鲁,当你在那张幻灯片上时,这些残差连接我其实不知道交叉注意力是如何依赖这些的,这些序列交叉注意层对残差连接的依赖程度如何。
是的,这里。在初始阶段,我会说两件事,在初始的交叉注意力中,这其实并没有什么区别。我们在制作 proIO 版本时进行了消融实验,在解码器的交叉注意力中也做了同样的事情,这可能会有一些区别,具体取决于你在做什么。我认为在使用这种重复交叉注意力时,实际上是必需的,所以当你有这种迭代结构时,原因在于,实际用于条件查询的东西基本上是你目前架构状态的完整表示,因此跳跃连接是在查询通道中,处于潜在空间中。这基本上使你能够得到这种密集且稳定的架构。
谢谢。😊,嗯。😊,好的。那么,关于 imagenet,实际上我们在标准的 imagenet 处理过程中,基本上是比较几个基准,所以这个信息在目前来看有点过时。但对比一下 Res 50,以及当时纯粹在 imagenet 上表现最佳的视觉变换模型,我们绝对在合理范围内。
在你最先进的结果中,但这是一个架构,它同样没有使用任何二维卷积,因此能够做到这一点让我们感到非常惊讶。这个架构有一个很酷的地方是,因为它没有对输入图像的空间结构做出任何假设,我们可以查看置换的 Imagenet,在这个架构的第一个版本中,我们基本上使用二维位置计算特征,因此二维位置是固定在像素上的,然后我们将其全部洗牌,这基本上会让你感受到基线对输入图像结构的依赖性。所以如果我们观察变换器,由于构造原因,它们不会改变,因此这不是一个经验发现,而是模型的一个特性,但我们发现 Resnet 50 的性能下降了大约一半,而 VIT 只有一层依赖于空间结构。
此外,它大约有 15 个点的下降,这表明它在相当程度上依赖于第一个以提供有关结构的一些信息。我们可以通过不依赖于二维傅里叶特征而完全学习位置编码来推动这一点,基本上这是一个现在完全没有关于输入结构信息的架构,所以洗牌并再次学习是完全等效的,我们发现这个架构也能推动大约 70%,而且我们在这里得到了稍微更好的数字,总体来说,这似乎效果更差,但二维信息是有用的,能够得到五六年前与当时最先进技术相当的数字,真是很酷。
抱歉,我有点迟钝,你是说最后两行之间的区别在于倒数第二行有一个二维的投注位置,而最后一行本质上有一个一维的投注位置。我说得对吗?所以它是被学习的,基本上它会是我相信的一个 256 维的向量。
但它的意思基本上是模型本身对输入的空间结构没有任何信息。因此,我们使用的二维位置编码最终大约有 200 个。这是 200 多个特征,具体取决于你在看什么,但它们能给你非常详细的信息,关于输入的二维结构,因为它们是基于输入空间的 480 个组成。
好的,这有道理,谢谢。嗨,德鲁,我可以问一个关于你用来生成那些传感器波的频率的问题吗?是的,就像之前的封面幻灯片。
是的,是的,没错。他们喜欢。所以基本上,我确实在信号处理方面上过一些课。我知道如果我。
想要避免,你知道的,别扭。我需要至少按我的频率进行采样。因此,我很好奇为什么要使用从 1 到奈奎斯特频率的频率,而不是从微频率开始到非常高的频率。哦,我明白了,所以使用的最大频率总是奈奎斯特,因此任何超过奈奎斯特的频率都会产生混叠,因此实际上无法解析,因为它是在像素空间中。因此,采样 1 基本上只是给你一个覆盖整个图像的振荡,这基本上是为了采样非混叠频率的全范围。
啊,好吧,酷。谢谢。很好。是的。好的,接下来在图像结果之后。我们想尝试在其他领域,尤其是我们对如何在多模态领域中应用这项技术感兴趣。一个挑战或在这些领域中遇到的问题是,来自不同模态的数据最终会有不同的特征,且语义总是不同。因此,如果你将位置编码加上视频的 RGB,你会得到一定数量的通道,而如果你有对应的音频,数据可能是成对的,但特征往往较少,且只有 1D 位置编码。我们处理这种情况的方式基本上是学习模态特定的位置编码,这些编码是专门为每种模态学习的嵌入。这基本上为来自音频或视频的特征打上标签,使网络能够学习并区分它们。鉴于这些填充的特征向量,我们随后将它们连接在一起,这就是我们处理多模态数据的方式。因此,架构的输入看起来仍然像一个大数组,只是构建时我们知道其中一些特征和行是这样。
Aray 来源于视频,有些来自音频,但模型本身并没有关于这些的具体信息,除了它所学习的内容。我们还有一些很好的问题,所以可以先问。返回转向?是的,抱歉。我以为是这样,但没错,当然。如果你能听到我,这只是一个原因。就像正式开始很多变换的东西。我只是不知道那是哪个位置。哦,那我们的位置是什么?是的。
所以基本上,位置嵌入是一个特征,表示这个东西,最简单的思考方式是在文本中,所以文本的输入是一维的,事物生活在某个一维序列中,对于每个点,你会表示它在那个序列中的位置。最简单的方法是如果你有负一到一的完整范围,它实际上表示它在那个序列中的位置,但我们通常会想要特征化,使其维度超过单一维度,因此傅里叶变换,傅里叶分解是一种方法,可以提供关于高频结构的特权信息,但我们也可以仅使用位置来索引某个嵌入数组,这就是我们在更多学习中所做的,基本上它只是一个权重集,添加到该点的特征上,给网络提供关于它在基础序列中位置的信息。
如果你想继续?嗯,抱歉,我得找个静音按钮。解除静音。好的,我实际上有两个问题,关于特征较少的部分,我想你们是均匀采样还是说你们喜欢学习这些特征?
是的,所以基本上我们线性地对它们进行采样,基本上我们取完整空间,并用预算线性采样,在各种设置中,我们实际上尝试学习这些,所以你可以初始化一个数组,然后学习它,有时确实有帮助,你也可以尝试更复杂的策略。
好的,酷,我的后续问题是,我觉得你的研究的卖点基本上是你不做任何结构假设,对吧?你可以接受任何格式,但是对于编码来说,维度不会影响吗?例如,如果是文本就是一维,对吧?如果是图像就是二维,而如果是视频就是三维,你会有更多的维度。
就是位置编码会有更多的点,对吧?这不会固有地透露输入的本质吗?是的,确实如此,我完全同意,你说得对,从这个角度来看,我们学习位置编码的版本是最纯粹的。
所以这基本上给了它关于真实空间结构的信息非常有限。它给模型的是什么呢,当你进行学习的位置编码时,它会说,比如图像 1 上的点 K 和图像 2 上的点 K 之间存在对应关系。因此,这基本上是你能给它的最少信息,同时仍然允许它理解输入点之间的结构关系。这是我们一直在推动的方向,通常让架构访问这样的真实结构信息,比如这个点在二维上的位置是有帮助的。所以这里有几件事,从实际的角度来看,如果你想要好的结果,你需要利用这些东西,利用这些东西是有帮助的,但我们确实想朝着减少依赖这些东西的方向发展。
所以这基本上是我们正在积极研究的内容。好的,明白了,谢谢。所以我认为她在聊天中发布了她的问题。我也看到你举了手,所以如果你想的话,可以试试,如果不想的话,我会读出问题。好的,我会尝试,告诉我如果有点卡顿。是的,所以现在还不错吗?哦,好,太好了,我很好奇看着你提到的感知图,它是很多注意力层,对吧,比如交叉注意力和自注意力。我觉得最近的视觉变压器工作中有一种小趋势,试图用卷积替代最后几个层,而不是使用注意力,以不同的方式解决这个注意力扩展问题。这里的感知架构正试图让自注意力成本更低,他们只是想替代它,并且避免了这个问题。
所以我很好奇,我看到有些论文是两种方式的,有些试图做你提到的那样,还有一些也在尝试这样做。在我看来,每个人总是有好的结果等等。所以我好奇你是否认为有理由去做其中一种,还是你觉得这种替代方法也很有前景,或者有没有理由研究应该朝着某个方向发展。
是的,在我看来,主要的权衡是一个……视觉文献我认为在这些混合体方面已经爆炸性增长,人们写在 Pato 曲线上速度和性能的最佳平衡点。但是他们基本上主要关注视觉特定的问题。因此,计算机视觉社区通常并不会自我规范,以避免那些不适用于视觉的问题。
所以你最终会得到在视觉问题上非常高效和表现出色的东西。我认为从这个角度来看,这是一个极其重要的研究方向,这可能是正确的做法。我们所追求的,是尽可能通用,同时仍然保持高效。
明白了,所以这种事情是关键的。哦,抱歉,你继续。没有,没有,请继续。我想说这种事情很重要,简而言之,你觉得关注注意力很重要,因为这对 NLP 至关重要;你不能仅仅在最后放入一个卷积来解决问题,但或许可以,这样理解对吗?
这其中的一部分是,视觉和 NLP 并不是唯一两个领域。所以我们真正关注的,是我们想用这个解决的问题,包括事件驱动相机、细胞生物学、蛋白质等这些方面,我们可能没有正确的卷积归纳偏置来知道如何构建这些东西,或者它们最终成为整个研究项目,比如基于网格的卷积工作。
哦,Co,谢谢你。我还有一个关于架构的问题。所以我看到你提到的。我很抱歉如果你说过这个而我没听到,但你提到的交叉注意力,然后是变换器,再到代价注意力。我很好奇,如果你把这些层中的自注意力替换为交叉注意力,会发生什么?这会影响你的准确性吗?这甚至可行吗?这是一个有效的问题吗?是的。
所以你可以做的事情是修改它,使其具有某种层次结构,这样就会有多个阶段的交叉注意力。我们还没有让这个工作,但这并不意味着这不是一个好主意。所以,可能有一种正确的方法来做到这一点,而我们还没有找出正确的方法。
但我们试了一点点,哦,酷,谢谢你,我很感激。是的,没问题。好吧,让我。我们时间不多了,也许我可以跳过一些内容。嗯。好吧。所以,在我们花太多时间之前,我想至少谈谈我们为使这个架构更通用而做的修改。因此,我们在这里看到的第一个架构的问题是,它基本上适用于任意输入,但仅设计用于分类和回归任务输出,因此我们希望看看是否可以使用相同的交叉注意力策略进行解码,结果证明是可以的,这种方法相当有效,几乎可以直接使用。我们的想法是,如果我们有交叉注意力输入和自注意力来进行处理,我们可以引入一组额外的查询,这些查询基本上为每个你试图解码的点提供语义。
我们将这些输入传递给另一个交叉注意力层,该层的配置基本上与编码器交叉注意力的配置相反。所以现在查询将是潜在的大,而键和值则来自这个潜在空间,这基本上让我们保留了原始感知的所有优点,因此我们有一个线性扩展的编码器和一个处理阶段。
这种潜在自注意力独立于输入大小扩展,我们现在有一个解码器,保持解耦,但与输出大小呈线性扩展,因此通过这样做,我们基本上可以将相同的方法应用于密集输出任务。
为了让你更直观地理解它的工作方式。如果我们对这张小狗的图像进行自编码,基本上我们的做法是编码处理,然后解码。我们取一个对应于每个点的查询,然后将其传递给这个解码器,这样我们就可以查询其中一个点。
我们获得一个像素查询,再来一个,直到获得所有 10000 个点,这就是我们如何进行重建的。而这件事的酷点在于,它开启了一些新应用,我们可以通过改变查询的方式得到不同种类的输出。
所以,如果我们想做一些多模态自编码,比如我们有一些输出是视频,我们使用相同的构造技巧来获取位置,得到具有相关语义的查询,尽管这些不同数据的大小,即点的数量差异很大,在这篇论文的多模态自编码实验中,我们同时进行了视频、音频和标签的处理。
所有的输入都被传递到统一网络中,然后逐个解码。但我们现在也可以通过对序列中的位置进行条件处理来进行大规模语言建模。我们可以通过基本上提供一个索引来进行多任务分类,指示你正在从网络查询哪个任务。我们还可以通过传递输入特征以及位置来处理光流。
所以我将跳过几个不同的部分。我可以在之后将这些幻灯片分享给大家供大家查看。这些内容中有些相当酷,但我想快速谈谈语言和光流。因此,关于语言,我们想做的是看看是否可以用它来替代标记化,以及为什么我们关心去掉标记化。首先,我们主要使用标记化是因为变换器在序列长度上扩展较差,而标记化将序列长度减少了四倍。
但是,出现了各种各样的问题,那么我们为什么要关心去掉标记器呢?
首先,标记器在处理稀有单词时表现不佳。所以如果你比较基于字节的分解和基于 TF 的 UTF8 编码输入序列,你会发现基本上每个输入字符在内存中都有均匀的点分配。
例外或变音符号会导致它被拆分为两个,但如果你查看句子片段的标记化,就会发现“pepper”是一个标记,而“jalapeno”在这种情况下被拆分为五个。这基本上表明你分配的容量取决于单词的稀有程度,这可能导致次优编码。
它们还容易受到细微扰动的影响,一个著名的例子是,如果你玩过 GPT-3,你会注意到输出对在末尾添加或省略空格非常敏感。这基本上是因为空格可能会被分解成标记化的不同部分。这儿还有其他问题,但这是其中一个原因。
最后,标记在不同语言间不转移。因此,如果你想拥有一个可以在许多不同语言上使用而不需调优的模型,标记器就是一个障碍。所以如果我们能去掉它们,将简化管道,还会使事情变得更不脆弱,进而希望能导致更通用的模型。我们进行大规模语言建模的方式与我在那个示意图自动编码实验中展示的方式相同。
因此我们掩盖了约 15%的输入,这大致是标准的魔法数字。然后我们在被掩盖的位置进行解码,并要求模型解码在这些位置掩盖的字符。一旦我们有了这个模型,这就是我们进行预训练所做的。然后我们可以通过将解码器替换为多任务解码器来微调它,后者接受我们在下游评估设置中使用的任务,并训练模型按任务基础重构 logits。
好的,为了查看这个模型的表现,我们基本上首先将其与 Bt basease 进行比较,这只是一个我们非常了解的可靠基准。首先通过查看两个模型匹配的 flops,我们可以看到 perceive IO 和 Bt basease 的表现相当,你会看到这里存在不同的权衡,因此为了获得相同数量的 flops,基本上我们让 perceive IO 更深,这最终导致了更多的参数。
但在每 flop 基础上,它的表现基本上相同。另一方面,如果我们从 Bt 中去除 tokenizer 并保持 flops 不变,我们会看到参数的数量和深度急剧下降,这是因为 Bert 在序列长度上扩展得相当糟糕,因为它使用了普通的 transformer。但如果我们使用没有 tokenization 的 perceive,我们可以看到在 flops 计数上参数的减少只是轻微的。
但性能几乎完全相同,这意味着在这种设置中 perceive 的表现与有无 tokenization 基本上相同,它学习了不同的策略,使用了不同的参数,但它基本上可以达到相同的性能。
然后我们可以通过深入了解 tokenizer-free 设置中发生的事情来进一步扩展这个模型,我们看到我们也可以获得适度的性能提升。我认为在语言设置中,查看注意力图也是有用的,这里可视化的内容基本上是针对某些潜在特征,我们在输入序列中查看它关注的地方,其中一些最终是局部的,指向句子中的特定点。
其中一些是周期性的,因此它们看起来会在序列的重复点上,而其中一些看起来也像是提取了句法特征,这非常不错,因此它们基本上提取感叹号、大写字母或其他从序列开始就很有用且可解码的标点符号。
我们也基本可以在光流上使用完全相同的架构,而光流基本上是计算机视觉中的一个重要经典问题,给定视频中的一对帧,我们基本上想要跟踪所有的点,以便从一帧到另一帧计算每个点的运动,因此光流通常使用这些底部显示的彩色图像进行可视化,这基本上给你提供了每个点的速度的逐像素指示。
你可以看到,角色手中的刀刃向右移动,而她身后的生物则是向下移动。因此,光流存在几个有趣的挑战,所以它是一个密集任务,基本上涉及长距离的对应关系,但标准的训练协议中基本上没有大规模的真实训练数据,因为标记真实场景中的所有像素并找出它们的去向是非常困难的,因此通常的做法是先在一些合成数据上进行训练,然后在更真实的场景中进行评估。此外,光流也很有趣,因为它基本上是文献中一些最复杂的视觉架构的核心,所以之前的最先进结果是一个叫做 RAFT 的方法,它在去年 DCCCVE 上获得了最佳论文奖,我强调这一点是为了让你了解人们在手动设计这些架构上付出了多少努力,因此这是一个非常巧妙设计的架构,基本上包含了像显式计算的全局关联体积这样的东西。
不同的偏移量基本上允许模型推理不同尺度的事物是如何相互移动的。它还具有局部邻域聚合操作以及更新模块,以跟踪每个特定关联模块内发生的情况。
最后,开发了一些特定于流的上采样操作。因此,与此相对,我们基本上想看看 PerceivedIO 在这里的表现如何,只是为了让你了解我们对这一点的预期。
我们想,也许 PerceivedIO 抛弃了很多结构,所以我们希望能够得到一些好的结果,但它可能会过拟合,并且这里存在领域转移的问题,但另一方面,自注意力似乎是匹配这种对应关系的合理方法。
我们实际上发现,仅仅通过这里非常、非常简单的预处理,即提取每个像素周围的一个补丁,然后使用标准的感知 IO 架构,我们能够在这里获得最新的结果,因此这基本上验证了这种尝试采用通用架构以便进行迁移的总体方法。因此,基本上在最小调整下,我们能够在这两种 Cel 评估方法上获得令人信服的基准结果,并在 Kity 上获得可比结果。
这些是标准指标。我们还可以可视化在真实世界数据上应用此方法时发生的情况。所以这里没有基准,我们不能真正进行比较,但仍然有助于看到它是如何移动的,从定性上看,它能够捕捉到很多细微的结构,并能正确表示那些明显在特定方向移动的事物。我们也可以看看它是如何成功表示小结构的,这段视频正在播放。
可以的。好的,很酷,这里需要关注的是那些在鸟飞过时飞翔的细小水滴,因为我们在每个输出点进行解码。架构能够表示这些,因此能够捕捉到非常细微的变化。
非常细致的分割,如果你在这里使用卷积上采样器,就很难捕捉到这些。好的,所以我只是想提到这个房间里的灯光熄灭了。嗯。我也很感兴趣你是否尝试过其他任务,比如深度估计,特别是看起来它在那种模式下也能很好地工作。是的。
所以我们还没有发布任何内容,但一些内部结果表明这确实有效。基本上似乎没有什么令人惊讶的事情。我们有点不确定的是这个潜在空间中将包含多少信息,因为基本上你在抽象很多,并且它本身并没有任何 2D 结构,但似乎它能够很好地表示事物,这些解码机制似乎也能做到这一点。
当然。所以我现在出于时间的考虑,跳到结论。我有一个关于你分享的光流指标的问题,表格中的数字像是中心最终清洁实体,这些是不同的数据集,还是说这些是针对不同数据集的相同指标,或者是这三个不同的指标?
是的,这些是三种不同的数据集,所以 Cintelcle 和 Stel final 基本上是 Cintel 的最终渲染的两种方式,在所有情况下,这些方法仅在光流数据集上进行训练,因此它们是在这种一般用途的奇特合成运动数据集上进行训练的,然后我们在这些不同领域上进行评估,而没有进行微调。
好的。是的,流量的数据集相当小,因此一般来说甚至在微调时也会有问题。谢谢。嗯。好的,简单总结一下,没错。那什么是找到端点误差的真实情况呢?是的。这种方式是 Cintel,这是一个计算机生成图像,基本上是一个相对高质量的 CGI 电影,基本上是开源的,因此他们实际上有真实情况的依据,如果你知道真实的 3D 状态,就可以计算每帧之间的像素对应关系,这就是在 Cintel 上使用的,然后 Kity 基本上有一个 LiDAR 传感器,用于确定所有点的深度,然后计算对应关系,所以真实情况实际上是光流的真实情况,但一般来说,获取密集光流是很困难的,收集成本非常高。
很好,谢谢。嗯。😊,好的,基本上总结一下,感知器是基于张力的架构,能够线性扩展,并在多种设置中作为变压器的替代品。它们似乎也能够在性能上与依赖于 2D 卷积的模型相媲美,但当然这里有权衡,所以要非常注意一般性与速度以及特定领域之间的关系,正如在可以使用 2D 卷积的设置中所指出的那样。
将它们纳入循环中当然是有益的。这基本上是一个统一的架构,允许对不同大小的不同模态进行联合建模,整体来看,它似乎是一个相当灵活的架构,能够在各种不同领域产生最先进或接近最先进的结果。在这两篇论文中,我们研究了许多我没有提到的其他领域,包括 3D 点云建模,替代在《星际争霸》中使用的变压器,以及其他一些行为克隆代理,因此我们有很多证据表明这种通用方法似乎在广泛应用中有效,并且还有很多事情我们尚未尝试,所以我们非常希望推动这一点,并且始终欢迎建议等。
我们依赖于大量相关工作的基础,因为我们从许多不同的领域汲取灵感。这些是一些亮点,我只想感谢我的合著者们。当然,我乐意进一步讨论。谢谢,是的,非常感谢。我有一个问题:你认为像感知模型的未来会是什么样的?你觉得这些模型会在变换器社区中被更多使用,以替代卷积网络等其他东西吗?
是的,我认为,从广义上讲,我认为感知模型现在是一种选择,因为我们知道如何很好地将它们适应于我们对如何构建架构没有很清晰想法的领域。这种归纳偏差,我认为这是一个非常强有力的案例。
所以在你并不确切知道如何构建问题的情况下,我也认为这些方法可以与需要领域无关的内容结合使用。但我认为多模态和新领域确实是显而易见的选择。你觉得目前在这方面有哪些瓶颈?如果你不介意的话,能否透露一下你在这方面的下一步工作是什么?
所以我不能谈论太多细节,但有几个领域,首先,我们对如何在小规模数据上使用它们并没有很好的把握,所以数据的数量不足以恢复归纳偏差,我认为这是一个非常重要的领域。另一方面,我们还没有讨论的事情,但你可能会想象我们会考虑的是如何同时在多种模式或多种事物上进行训练,因此现在所有这些架构都是孤立训练的,但有很多机会可以一起解决问题并在所有问题上使用单一架构。
明白了,我不确定你是否尝试过,但你能否将其用于表格数据?是的,因此该架构将任何输入数据视为表格数据,所以我认为这正是思考的正确方式。课程听起来不错,谢谢你的提醒。我会为学生们提出一般性的问题。所以我们开始录音。
P7:7.自注意力与非参数变压器 (NPTs) - life_code - BV1X84y1Q7wV
非常感谢,很高兴来到这里,祝大家万圣节快乐。我认为这次演讲将分为两个部分,所以我会先花大约 10 到 15 分钟讨论变压器的一般情况,但我假设你们大多数人都熟悉它们,我们可以继续讨论 MPT,Ya 和 Neil 会做介绍。
😊。
那么我们来看看,我打算快速介绍一下变压器的概况,并可能在变压器的历史上花一点额外的时间,或者稍微讲述一下这个故事。我认为这可能会更有趣。嗯。就变压器架构而言,它首次引入的两种主要概念是多头注意力和自注意力,然后将这些与快速自回归解码结合在一起。所以在变压器之前,几乎每个人都在使用 LSTM 及其带注意力的 LSTM,我会尽量解释自注意力和多头注意力之间的区别。
所以最初你会有两个序列,然后你会有一个注意力模块,它会从源序列关注到目标序列,因此源序列中的每个令牌或每个词都会与目标序列中的一个元素的软近似相关联。
因此,最终得到的结果像这样,但具有自注意力。我们不再使用两个单独的序列,而是让它们相同。这样,你就可以在序列中将每个元素与另一个元素关联起来。这里的想法是你在学习句子中词语之间的关系。
所以你可以想象有一个形容词被应用于一个名词,因此你想要将这个形容词与名词关联起来,比如“蓝色的球”。你想通过学习序列中的模式将“蓝色”与“球”关联起来。
嗯。抱歉,我在肯尼亚做过这个演讲,所以我在这里使用 Kewa Heley,但使用多头注意力。这个概念是每个词都用一个嵌入表示,在这里是深度维度,然后你有一个单词的句子。你把它分成几组。所以在这里我在深度上分成了四组。
你对每一组独立应用注意力,当你得到结果后,可以将它们连接在一起,回到你的模型维度表示。这让你能够做到的是,如果每个注意力头现在可以专注于学习一种模式。
所以也许注意力头一正在学习形容词与名词之间的关系,而第二个注意力头可以学习一些不同的东西,这样我们就可以学习一个层次或不同关系的列表。好的,这就是自注意力。另一个部分是快速自回归解码。
我真的想深入探讨这个吗?好吧,我会的,重要的是,如果你在进行正常的自回归解码,你会生成第一个标记,然后基于第一个标记生成第二个标记,基于前两个生成第三个,依此类推。
但这超级慢,对吧,就像一个循环一次又一次地应用这个东西。因此,我们可以做的是在代码中假设我们的模型始终生成正确的内容,然后生成一个预测,仅仅提前一个标记,所以这个过程看起来是这样的。你还好吗?嗯,为什么这里有个帽子?抱歉,再一次。
输入到输出,你有你的输出,即 y,你有你的目标,即 Y hat。你所做的是输入那些黄金目标,这样你就不需要实际执行这个循环。因此,不再假设生成第一个标记后将其反馈到架构中,生成第二个标记,而是输入整个目标序列,并假装生成所有正确的标记,直到位置 k,然后预测 K+1,并计算该位置的损失。
实际上,你的模型可能在训练开始时生成了一些无用的内容,但你得到的损失却仿佛模型已经看到了所有正确的标记,现在只是在预测下一个标记,这一点有些微妙,但对训练速度影响巨大,因为所有这些都可以并行进行,这正是让变压器模型如此可扩展的原因。
好吧,为了成功做到这一点,如果你只是简单地输入所有正确的标记,会发生什么呢?你的模型将能够向前看并“作弊”。你输入了所有的真实目标,也就是你希望模型预测的内容。如果这是你计算损失的依据,它就能向前看并说,好的,我只需抓取那个,它就会轻松获得零错误,因为你给了它所有正确的答案。因此,我们需要在架构内部实际防止注意力机制查看它不应该已经看到的标记。这个过程的方式是创建一个注意力掩码。
嗯。😊,所以抱歉,这是一个简单的注意力示例,如果你没有正确地掩盖你的注意力,它将只会向未来看,直接抓取你告诉它预测的标记并复制过来,因此它学到的东西是简单的,不会真正推广。因此,我们所做的是。
实际上,为了防止模型关注那些标记,我们阻止它关注未来的内容。对于源序列中的每个位置,我们屏蔽了所有它不应该看到的内容。所有未来的内容,然后随着我们向下移动,逐渐解除屏蔽,让它可以开始看到过去。嗯。所以这些就像是变压器的三个主要组成部分之一,自注意力机制。
多头注意力,以及快速解码黄金目标的部署。嗯。在故事上,这可能更有趣。嗯。变压器。2017 年我在谷歌时是 Lukash Kaiser 的实习生,我坐在 Noam 旁边,Sheish 在我们几排之外。
而且令人难以置信的是,这个项目基本上在三个月内完成。我在谷歌时,Noam 一直在研究 Autoag 模型,Ashish、Yaakov 和 Nikki 也是,他们一直在探索这个领域。与此同时,Lukash 和我在工作一个名为 Tensor to Tensor 的框架。嗯。这个框架是专门为多模态学习和自回归学习而创建的,Lukash 在这一领域是个高手。
跟踪领域中发生的所有事情并加以采用。因此,在 tensor to tensor 中,有这些。可能一篇论文提到过的一些新兴小东西,像 layer norm,但其实还没有流行起来,学习率预热的所有这些小部分都是默认开启的。
所以当 Noam、Ashish、Nikki 和 Yaak 过来并采用 tensor to tensor 时,所有这些功能都是默认开启的。因此很多人,当他们查看变压器论文时,似乎有很多任意的小东西被加入,而现在这些已经成为许多不同训练算法的标准,比如学习率预热。
我们初始化的方式,所有这些部分都已成为规范。但那时它们刚刚被引入。因此,我们花了很多时间进行消融实验,试图弄清楚哪些是必要的部分,是什么让它有效的。如果你们中的任何人尝试过训练变压器,并试图去掉学习率预热或更改任何这些小部分。
你会发现,它确实在优化上产生了影响,实际上确实会影响性能。例如,去掉 layer norm,类似的事情。嗯。我总觉得很有趣,Lukash 随意添加的所有这些随机功能,结果却是至关重要的,都是默认开启的。嗯。所以,无论如何,我记得是在三个月内,一切真的开始在最后阶段汇聚。
就在 Nup 截止日期之前。我仍然记得坐在微型厨房,某个同事告诉我,像我这样的小实习生,跟我说这将是一个大事件,我当时心想,好的,我真的不知道发生了什么,我只是出现了。
他当时说,不,伙计,这实际上很重要,你知道吗。我们提升了蓝色三分,我心想太好了,随便吧。嗯。😊。然后我记得在提交截止日期的前一晚。那时是凌晨两点,某个同事是办公室里最后一个留下的人,我们仍在移动数据和调整东西,然后我去睡觉了,但她继续熬夜,而我则在一个小小的电话亭里睡觉。
然后在我提交的另一篇论文中,我忘记按提交,但幸运的是。有位女士在早上打开电话亭的门,打了我一下头,就在截止日期之前,我把论文提交了,所以我得感谢那位女士那年提交到 N,不过没关系,我认为关于 transformers 的疯狂之处在于,所有的事情都在三个月内聚集在一起,绝大多数想法都是在那段时间发生的,这就像是朝着 N 截止日期的冲刺。
嗯,我认为团队中的其他成员。Yaka Lukaash 她们知道这有多重要,但对我来说,我是。 我不知道。我真的没有意识到它的影响,但回想起来,社区是如何团结在一起并采纳它的,真是太惊人了。😊我认为这大部分归功于优化的便利性。
似乎对超参数选择非常稳健,所以你不需要花费很多时间去调整细节。而另一方面,它非常适合我们运行的加速器。所以它非常易于并行处理,超级高效,因此它适合那种迅速流行的规模法努力。好吧,除非有任何问题。
我们都很兴奋,所以我们同时解除静音。是的,太冷了。是的。这是我的部分,如果有任何问题我很乐意回答,否则。我们开始讨论 NP。NPptTs 就像我认为的那样。有一个很好的下一个层次的架构抽象。所以你可能看到了,Transformers 被应用到新的领域的趋势。
首先是视觉、视频和音频。但这就像回到一个更抽象的层面。我认为表格数据,嗯,我不知道,我会让 Yna 和 Ne 从这里接手,但我认为 MPT 是一个非常棒的项目。感谢 A 的介绍,感谢所有人的邀请,我们非常高兴能在这里,Neil 和我现在将告诉你关于我们数据点间自注意力论文的内容,我们引入非参数变压器架构,我们将从一些动机开始,解释架构细节,展示实验,这基本上是对论文的逐步解读,但可能会在这里和那里提供一些额外的见解。
好的,正如承诺的那样,动机和简要总结。所以我们将开始思考一些我们不常考虑的事情,那就是从封 seal 到变压器,大多数监督深度学习依赖于参数预测。这意味着我们有一些自我训练数据,我们想要学习从输入 X 预测结果 y,为此我们设置一些带有可调参数 theta 的模型。
那么我们优化这些参数以最大化训练集上的预测似然,或者说我们等价于最小化某些损失。然后在训练后,我们得到了这组优化的参数 theta,然后在测试时我们只需将这些参数放入模型中,并用这些参数对新测试数据进行预测。因此,关键是,我们在测试时的预测仅依赖于这些参数。
对,参数化。这也意味着,给定这些参数,预测完全独立于训练数据,那么我们为什么要进行参数预测呢?
这非常方便,因为我们从训练数据中学到的所有内容都可以在参数中总结,因此在预测时我们只需要这些最终参数,而不需要存储可能非常庞大的训练数据。另一方面。
我们通常有模型可以并行预测一堆数据,想想小批量处理和现代架构,实际上像批量处理这样的东西已经使这些数据相互作用。因此我们在这里的想法是,如果我们反正有所有这些并行数据。
没有理由不利用它,因此我们挑战卡尔梅里克预测作为深度学习中的主导范式,我们希望在进行预测时给予模型使用训练数据的额外灵活性。
更具体一点。😊 我们引入了非参数变压器架构。这将成为一个通用的深度学习架构,意味着我们可以应用于多种场景。
NPTs 将尽可能将整个数据集作为输入。然后,NPTs 关键地学习从数据点之间的交互中进行预测。为了实现这一点,我们使用多头自注意力。这正如 Age 向我们介绍的,已经真正确立为一种通用推理层。
我们还借鉴了自然语言处理社区的另一项内容,使用随机掩码机制,告诉实体样本在哪里进行预测,并且也对其学习任务进行正则化。去年,当然,我们希望能够证明最终效果很好。
这个简单的想法,学习从输入的其他数据点进行预测,实际上工作得很好。因此,非常简要地总结我们已经听到的内容,A,我们输入 NPptTCide 数据集。然后 B,假设为了这个幻灯片的目的。
我们只关心在那一绿色行中预测橙色问号。然后,我们可以将实体点与参数预测进行比较,经典的深度学习模型将仅从该单个网格输入的特征中预测这个目标值,为此它将使用参数θ。
这些将依赖于我们所看到的任何训练数据等,但在测试时我们只关注那一行,我们关心的预测。😊。相比之下,NPpts 明确预测输入中所有样本的依赖关系,它们可以超越那单个绿色感兴趣的数据,查看所有其他样本并考虑它们的值进行预测,因此这呈现出一种完全不同的方式来思考我们如何学习预测机制,有人在推特上称之为 Canan 2。
0,这在论文中没有写,但也许是思考 NPTs 如何学习预测的一个不错的方法。😊!
所以,当然,无参数模型已经存在,我们并没有发明它们。
我在这里将它们定义为对训练数据的显式依赖预测,这无疑是 MPptTs 所做的。经典的例子如高斯过程、邻域方法、核方法,这些可能对你来说是熟悉的。😊。也有努力将无参数和表示学习的好处结合起来,类似于我们在实体中所做的。
😊,然而,这些方法在某种意义上通常受到限制,与机会相比,它们往往更多地受到统计学界的驱动,通常需要更精确的近似推断方案,限制了它们可以学习的交互或类似的事情。
😊,我们真的认为 NPTs 很出色。也许是这些非参数预测方法中最通用和应用最广泛的,但这正是我们明确想要的,我们希望有一种真正易于使用的方式,适用于许多场景,并且效果很好。
所以在这一点上,我会把话转给 Neil,他将告诉你有关非参数变换器架构的所有细节。你还有一个问题,嗨,Jen,您能否回到上一张幻灯片?
之前的幻灯片。是的,没错。这一幻灯片。是的。在问题定义方面,我认为这与某些元学习问题相似,基本上是学习从数据点和数据集到某些预测的映射。那么,请问您能指出您问题设置与元学习问题设置之间的任何区别吗?
我实在是无法找出这两个问题之间的任何区别。嗯,我认为这真的取决于您想要的框架,所以我会说元学习是当我试图在多个数据集上进行预测时。因此,当我试图学习某种预测模型,或者我可以插入不同的数据集时,它会几乎自动地为我提供在这种不同数据分布上的新预测。但这根本不是我们所做的,对吧?我们是在为固定数据集训练单个模型。
所以这就是为什么我不想称其为元学习,因为我们正在做的事情是,我们试图在所有监督深度学习或任何监督机器学习方法试图准确预测的相同任务上进行预测。前提是你使用相同的测试集来测试你的趋势模型,对吧?我的意思是,呃。所以。基本上在 MI 学习中,我们将在不同的元测试集上进行测试。
但是在您的情况下,您只想使用一个与您的训练集分布相似的测试集,对吧?
是的,绝对如此,我们稍微探讨了一下数据集分布的变化。我认为这是一个非常有趣的场景,而元学习不同的数据集也是一个有趣的场景,对吧?当你有这个模型时,可以输入不同的数据集,但就本文的范围而言,训练集和测试集来自同一分布,我们只是试图在标准设置中进行监督学习,这真是太酷了,谢谢。
😊,感谢您的提问。
是的,我想我可以补充几点。我理解的元学习问题定义的目标更倾向于能够在新数据上表现良好,并且在该数据集上只需少量额外的梯度步骤。所以,我认为有一些有趣的方式可以在元学习的设置中考虑应用 NPTs,我们稍后会更深入探讨这个问题。例如,假设我们已经在许多不同的数据集上进行训练,现在添加一个新数据集,我们可以进行一些类似于零样本元学习的操作,基本上不需要额外的梯度步骤,因为我们基本上是以类似于现在 NLP 文献中的提示方式进行预测。
无论如何,是的,我认为我们会更详细地讨论这个问题。我想补充的是,我并不认为每种元学习算法都是基于优化的,像你现在描述的那些算法也是黑箱型的,不需要进一步的细化。我认为主要的区别似乎在于单任务与多任务的元学习。
是的,我也这样认为,主要的问题是是否有多个数据集。很好。好的,太好了。如果没有其他问题,我将更深入地探讨架构。
太棒了,NPpts 有三个关键组成部分。我将首先从高层次陈述它们,然后我们将更详细地讨论每个部分。因此,首先,我们取整个数据集。所有数据点作为输入。例如,在测试时,模型将同时使用训练数据和测试数据作为输入。
我们通过小批量来近似处理大数据。😊。我们在数据点之间应用自注意力,例如,在测试时,我们建模训练点、测试点之间以及两组之间的关系。最后,我们有一个基于掩蔽的训练目标。
这是一种类似随机掩蔽的烧录,关键点在于我们实际上在特征和训练目标上都使用它,稍后我们会讨论为什么这导致了一种有趣的预测机制。好的。那么首先从数据集作为输入的这个想法开始。
组成 NPT 输入的有两个部分,一个是以矩阵 X 形式的完整数据集,另一个是掩蔽矩阵 M。因此,Yick 对这个数据集矩阵进行了稍微描述,我们基本上有数据点作为行,列是属性,每个属性在所有数据点之间共享某种语义意义。例如,如果你正在进行单目标分类或回归,最后一列将是目标,其余的矩阵将是输入特征,例如图像的像素。
我们还有一个掩码矩阵,所以假设你知道我们在考虑大规模语言建模,大规模的标记会告诉我们在哪里隐藏单词,以及我们在哪里反向传播损失,我们在这里做类似的事情,我们使用这个二进制掩码矩阵来指定哪些条目是被掩盖的。
目标是从观察值中预测掩码值。我看到有一个关于处理不同长度输入的问题。在我们考虑的数据集中,我们将在结果部分讨论这一点,但大多数数据集基本上都是表格数据和图像数据,其中每个数据点的长度是相同的。
但它的工作方式就像填充,这将是一个合理的方法,并且还有一些有趣的,嗯,继续。对此我不确定“长度”是指列还是行,实际上我们不关心行的数量,长度填充之类的会是一个选择。是的,我的问题正是关于列的,所以这有道理,我想。
是的,我是说,这与整个元学习讨论有关,我认为如果我们想适应每个数据集具有不同数量数据点的数据集,你知道,我们可以利用自注意力在这方面的优势。酷。
所以继续下去,接下来讨论的是我们如何进行嵌入,更明确地说,我们有这个数据矩阵,它有 n 个数据点,称为 X,所有数据点都有 D 个属性,我们有二进制掩码矩阵 M,我们将它们堆叠在一起,然后进行线性嵌入,具体来说,我们对每个数据点独立地进行相同的线性嵌入,我们为每个属性学习不同的嵌入。
我们对属性的索引进行了位置编码,因为我们并不真的关心在列上是均匀的。如果是表格数据,你当然想要以不同的方式对待所有这些异构列,最后我们对列的类型进行了编码,因此无论是连续的还是分类的。
这最终给我们带来了这个输入数据集的表示,维度为 n x D x E。NPpts 的第二个关键组成部分是数据点之间的张力。为了实现这一点,我们首先将我们拥有的表示展平为 n x d x e 的表示。所以基本上,我们将这些 d x e 大小的行视为令牌表示。
我们实际上要用多重自注意力来完成这个操作,你知道我们已经多次审查了这个。但好的一点是,我们知道在语言建模中,我们可以多次堆叠它,建模这些数据点之间的高阶依赖关系,这实际上是该架构的关键优点。还有其他实例使用注意力来处理类似的事情,例如注意神经过程,很多时候他们只使用单层作为表示查找,我们认为这实际上限制了表达能力,通过多次堆叠,你可以学习数据点之间更复杂的关系。
有很多问题。那么你可以先问。哦,太好了,谢谢,我有一个问题,比如你们如何进行嵌入,是否总是像卷积滤波器或线性层这样的属性,或者你们使用的嵌入类型是什么?是的,我尝试回到幻灯片,我认为对线性现在不是很满意,但对于 Tular 数据,我们实际上只用了线性嵌入。
你知道,我们可以深入讨论类别和连续特征化的细节,但实际上,对于类别特征,你会进行独热编码,然后学习与该属性特定的嵌入;而对于数值特征,我相信我们只是进行了标准化,对于图像数据我们最终使用了。
一个用于 C4 10 的 Resnet 18 编码器。然而,我认为我们会在结果中稍后讨论这一点,但这个嵌入有点任意。你可以做任何事情,架构的关键部分是数据点之间的注意力。所以在你实际想要嵌入每个属性时,这取决于你。谢谢。
我认为另一个问题,和 Victor Tos 的问题一样。太棒了。这里我们完成了数据点之间的注意力。那么我们也可以在属性之间进行这种注意力。我们将其重塑为 N 乘 D 乘 E 的表示,然后我们可以独立地对每一行应用自注意力,换句话说,对单个数据点进行自注意力。我们这样进行嵌套的原因是,我们试图为数据点之间的交互学习更好的每个数据点表示,这实际上只是普通的自注意力。
正如你在语言建模或图像分类中看到的,属性在这里是令牌。最后,我们只需挖掘并重复。所以我们究竟从中得到什么,总结一下,我们在学习数据点之间的高阶关系?
我们正在学习单个数据点的变换。重要的是,NPT 对数据点的排列是等变的。这基本上反映了一个直觉:数据点之间学习到的关系不应该依赖于你接收它们的顺序或观察数据集的顺序。NPptTs 的第三个关键组成部分是基于掩码的字符串目标。
所以回想一下,我们的目标是从观察到的条目中预测缺失的条目,而这些缺失的值可以是特征或目标。因此,经典的应用,比如掩码语言建模,就是对一系列标记进行自监督学习,你可以认为在我们的设定中,它与特征略有不同,因为我们使用随机特征掩码以某个概率掩盖特征值,然后我们还使用这个概率对训练目标进行掩码。如果我们写出训练目标。
我们仅仅是对目标和特征的负对数似然损失进行加权求和。当然,在测试时,我们只会对测试点的目标进行掩码和计算损失。为了进一步分解这一点并指出一些有趣的部分,现在右侧突出显示的就是与特征相关的术语。
这就是特征掩码,基本上我们发现这有一个良好的正则化效果,模型现在可以在任何地方进行预测,使得任务变得稍微困难一些,并引入更多的监督。在对表格数据集进行消融实验时,我们发现这对八个数据集的效果都很好。
然后还有另一个有趣的术语,这就是随机目标掩码,想法是:在训练时,某些训练目标实际上不会被模型掩盖。这意味着 NPptT 可以利用其他训练数据点的目标以及所有训练特征来预测某些训练数据点的掩码目标。因此,这意味着你实际上不需要在参数中记忆训练输入和输出之间的映射。
你可以将模型的表示能力用于学习使用其他训练特征和目标作为输入的函数。因此,这有点涉及到类似学习 K 和 N 的想法。显然,我们可以从中学习更复杂的关系查找等内容。但你可以想象一个这样的案例:我们有一堆测试数据点进入。
我们将查看它们的特征,并利用这些特征将其分配到训练数据点的聚类中,然后我们对这些点的预测仅仅是相应聚类中训练目标的插值,这就像是这个机制让 NPptTs 学习的一个例子。
好的,如果有任何问题,我们现在可以提问。否则,我很乐意在讨论中或者其他时候回答。好的。那么,让我们讨论一下,当你使用整个数据集时,这是否限制了你能使用的数据集类型,因为数据量的大小?是的,在实践中。
我们进行随机小批量处理作为一种近似,所以这个想法是,如果你有一个相对较大的小批量,你会从中受益,因为如果类别数量合理,你可能会基于特征和目标学到一些有趣的映射。在实践中我们发现,确实能够利用数据点之间的关系进行预测,对于我们进行小批量处理的数据集,我们也并没有发现需要非常大的批量大小才能做到这一点,但我认为这是一个普遍且重要的观点,这也指引我们去研究稀疏变换器文献,以尝试在不假设小批量处理的情况下扩展到一些更大的数据集。
很好,谢谢。如果我可以加一句,我们在没有小批量处理的情况下,可以容纳大约 8000 个点的数据集。所以这已经占据了相当一部分我认为的表格数据集,但我们也处理了 1100 万个点的数据集,显然我们那时就需要 resort 到小批量处理,所以了解我们讨论的数据集大小是非常重要的。
我对此很感兴趣,我觉得这很令人兴奋,我感觉你通常不会听到变换器被应用于小于 8000 的子集。U。我很好奇,我们可以在覆盖其他材料后再讨论一下,如果你发现样本效率是这里的关键收益之一,或者只是一般在小数据上工作的变换器的经验。不过,我很乐意将这个问题的答案留到后面。😊,是的,我想这会很不错。
这真的很不错,可以聊一聊。而且一般来说,我想我会说,NPT 在小数据集上是多么稳健,令我们惊讶的是我们并没有需要调整很多参数。但我们可以稍后深入细节。😊,太棒了。那么,让我们开始实验。我们非常关注表格数据,因为这是一个非常通用的设置。
这在深度学习中也是众所周知的挑战。因此我们知道,基于树的提升方法,如 XGBoost 非常占主导地位,这也是一个与行业相关的领域。所以我们对在这一点上做得更好感到兴奋。
所以我们选择了广泛的数据集,涵盖几个不同的维度。你知道的,正如我们提到的,从数百到数千万个实例,特征数量的广泛范围,特征组成在类别或连续性方面,涉及各种类型的任务。
二分类和多分类以及回归。正如我所说,基线是针对表格数据的常见方法,XGBoost、CatBoost、GBM 到 MLP 和 Tnet,这是一种针对表格数据的变换器架构。
所以为了得到这里的结果,我展示了我们在各种子任务中表现良好的平均排名,针对像 CatBoost 和 XGBoost 这样的专为表格数据设计的方法,事实上我们发现 NPT 在这十个数据集中四个是表现最好的,在我提到的图像数据上,我们使用了 CNN 编码器,因此我们在 C410 上表现良好。
我们也认为,通常来说,假设说,在小数据上的图像变换器的新工作,这可能仅仅通过线性拼接完成。所以,这种嵌入的方式可能不是关键。尼尔。如果我可以插入两个问题。你能先返回两张幻灯片吗?
有一点小问题,请再退回一张。谢谢。在这里,特征是 50 以上。这里的 plus 意味着什么?我得再确认一下确切的数字,我很确定它大约在 50 左右。我猜是这样的,所以这个 50 其实是个大概的数量,不是说 150 或 5000。是的,没错。我会为你再确认一下,或者你可以在论文末尾的元数据统计中查看。
但不是的,它并不是说,随便有多大,我会这么说。你知道的。我们进行了一些实验,看看是否真的需要属性之间的注意力。我们发现这确实对我们有帮助,但你也可以说,单纯在那个维度上使用一种 MLP 嵌入,并选择一个相对较小的隐藏维度,适应任意数量的特征。
所以我认为,是的,如果你放松属性之间的注意力需求,你可能会在至少那个维度上扩展很多。好的,然后我的第二个问题。如果你能往前推进一张幻灯片。
谢谢你,我不太明白。四个数据集中的十个,十个数据集中的两个,四个数据集是什么意思?这是关于我们所拥有的所有表格数据集。所以哦,我想二分类是针对的,我明白了,好的。是的,正是如此。还有其他问题吗?这里的标准误差,因为我想,只有十个数据集。
对。是的,正确。共有 1010 个表格数据集。是的,但这些是排名好的。是的,这些是排名表现,正确,好的,我只是想知道。在这种情况下,不确定性来源于哪里?是的。对四个数据集的平均排名,所以对于每个特定数据集,我们有所有不同方法的排名,然后我们取平均值,以及每种任务类型在二元分类和多类中的排名差异。
等等。很好。如果你感兴趣的话,我们在论文中也有完整的结果。是的,谢谢。我们还有几个问题。嘿,是的,谢谢。我想我只是发现 KNN 是最差表现者有点惊讶,因为它也是非参数的。你能对此做一下评论吗?是的,是不是 NPT 有某种内在特性使其远超其他非参数方法?
为什么 KNN 在这里表现最差?嗯,我想最终 KNN 仍然是一个相对天真的预测方法,因为你知道它可能只是基于某种聚类均值进行预测。例如,我认为这对所有数据集来说可能都是普遍真实的,但在特征上可能需要进行某种额外的推理,至少达到基本水平。
其中一个数据集是扑克手数据集,它是所有不同扑克手与人们常知道的,例如葫芦之间的映射。因此,这需要对特征进行一些推理,以便能够将事物组合在一起。
所以,仅仅取这些不同手的特征化聚类均值可能不会给你一个好的预测函数。而 NPT 可以做到经典的事情,比如说在特征上有一个 MLP 类型的东西,或者说在特征上有一个树类型的东西。
你可以学习某种复杂的嵌入,但你也可以基于嵌入的聚类进行某种非参数预测。我是说,是的,这有道理。如果你使用什么呢?
从一堆编码器中预训练的嵌入作为你的向量表示用于经典。你觉得这与其他方法相比表现如何?是的,这就像,我的意思是。这种想法有点像深核学习,或者说,是的。我相信深核学习基本上是你独立使用一个多层感知机(MLP)。
所以你在每个输入数据点上学习一个 MLP,然后你对所有这些表示应用一个 G。你得到了这种复杂的嵌入,然后进行查找。该想法与 Ns 之间的关键区别在于,我们还学习数据点之间的关系,因为我们使用这种参数化的注意机制来学习这些关系。
所以我们并不是仅仅独立地学习一个嵌入。我们基本上是通过整个过程进行反向传播,学习我们试图嵌入的方式,以及查找的方式,本质上是潜在的高阶关系。很酷,更多的后续问题。😊,哦,是的,继续吧,酷,好的,谢谢。我想如果 NPT 的优势与数据点之间的关系有关。
那么,如果你知道获取了编码器的表示,然后将其作为输入传递给 10 个最近邻,并且还有一些其他的输入表示,进行加权平均,比如注意力机制的那种方式,依据输入数据点与提供的输入数据点之间的注意力权重对最近邻的向量进行加权,然后将其传递给最终的预测层,你觉得怎么样?
你认为这是否捕捉到了一定程度的关系,还是偏离了?
我认为不错的一点,以及我们对这一切的想法是,某些固定核在特定任务中表现特别好的情况是一种恼人的事情。最终,调优这些类型的东西或试图推导出适合特定情况的预测方法,确实令人沮丧。理想情况下,你会希望能够在数据上进行反向传播,自己学习这些关系。
我其实非常想看看我们是否能够设计一些合成实验,具有这些非常特定的 K 和 N,像预测机制,并看看我们是否能够精确学习这些,并获得零误差与 NPpts。事实上,我们将稍微涉及一些我们所做的干预实验。我们有一些精确的查找函数,NPpts 最终能够学习到这些。
所以我们可以学习有趣的关系函数。😊,酷,没错,非常感谢,太好了。好的。我们还有一个问题来自于。
我只是想澄清一下,基本上在测试时你只是取相同的数据集,然后添加你的测试示例,对吗?然后你也做相同类型的掩蔽,是这样吗?
是的,没错。好的,我明白了。我还有一个问题,就是因为我觉得我误解了你们的 NPT 目标的影响。你介意回到那张幻灯片吗?当然可以。你能再重复一次,是什么让这个如此特别的吗?
是的,所以在特征右侧的正则化器,我会将其视为非常类似于自监督学习,使用标准的 transformer,基本上就是引入更多的监督,即使你只是进行一个监督目标,这在某种程度上就像是对你学习到的特征进行重构,你会学习到更有趣的表示,以及正则化效果。
我们认为这是有趣的,但也许没有这种随机目标掩蔽那么有趣。这种方法是独特的,因为在标准的参数化深度学习中,你的训练过程中不会有将目标作为输入的实例。因此,基本上发生的是,如果你的训练数据集作为输入。
无论如何,你会在训练目标的特征上进行一些随机特征掩蔽操作。你会随机选择一些不被掩蔽,而有些则会被掩蔽。当然,对于被掩蔽的部分,你会反向传播损失,因为你不希望你的模型在实际尝试反向传播损失时能获得这些可用的输入。
但你可以使用其他作为输入,这意味着你可以学习这些像插值函数一样的东西。这就是能够学习 K 和 N 的整个想法。但这难道不允许模型再次作弊吗?是的。这是一个有趣的观点,其实很微妙,所以我认为提出这个问题是非常值得的,首先。
我们从未在模型输入可见的内容上反向传播损失,因此如果。例如,模型确实最终在训练标签上过拟合,我们将不会观察到模型在测试数据上的泛化能力,我们并未观察到这一点,因此显然,这种对在 NPT 输入时可见标签的反向传播阻断是有帮助的。
也有可能在鸟式随机掩蔽中,你也会随机将一些标签翻转为不同的类别。这就像是在鸟掩蔽文本中引入的一种随机细则。我们也这样做。因此,这可能在某种程度上有助于这个。
但这很可能只是因为我们没有在可见的内容上反向传播损失。太好了,谢谢,明白了。😊,如果可以的话,我还有两个问题,能插嘴吗?
是的,抱歉。我们可以去查看度量指标、性能、结果的幻灯片吗?
当然!
我感觉我错过了一些东西。我对此感到抱歉。所以 A U 是。关于二元分类,A U R O C。你能解释一下这些数字的含义吗?它们是 A U ROC 吗?这是关于每个数据集的。那么以一个特定的二元分类数据集为例。
我们将对这些方法进行排名,我们会重复这个过程。所以这些数字在这个特定情况下是四个数据集的相对排名。对,没错,我明白了。所以这些值不是数据集上的 A U R O C 平均值。不是,没错,它们不是。我是说,像所有事情一样,平均可能是有意义的。
但是平均准确率和 RMC 似乎是个坏主意,对吧,因为你可能有一些数据集的准确率都很高,或者 RMC 需要一些完全不同的东西。我明白了,所以这些数字只告诉我们不同方法之间的相对排名,而不是它们实际表现得多好。
我的意思是,它告诉我们它们相对彼此的表现,但并不告诉我们它们表现得多好。我明白了。不过,这不在附录中,我们没有这些信息。我明白了,好的,我一直在这里困惑,为什么 A U R O C 最好的一个是最小的,而准确率,准确率是多少呢?总之,好的。
这让我更能理解。谢谢你们俩。太棒了。😊 好的。所以为了节省时间,我会尽量加快速度。但基本上,你可能会在看完所有这些结果后想,难道我们真的在这些真实数据集上学习到任何数据点的交互吗?因此,我们设计了一个实验来弄清楚这一点。
这个想法是我们要禁止 NPT 在对某一个数据点进行预测时使用其他数据点。😊。
如果我们这样做,并且观察到 NPT 实际上预测或表现显著更差,确实是在利用数据点之间的交互。从中我们可以获得一个微妙的挑战或一种附加的好处,那就是理想情况下,我们实际上不应该破坏批量统计数据。比如说每个特定属性的均值。
如果我们能找到一种方式来进行这个实验而不破坏这些东西,我们可以排除学习到一些与 bash norm 有点相似的东西的可能性。因此,我们的做法是基本上依次查看每个数据点的预测。所以假设在这种情况下,我们正在查看模型对这一特定绿色行的预测,而它会在这个最后一列有一个问号进行预测,我们将独立地对除了这一行以外的所有其他数据点的每个属性进行排列,所以这一行的信息如果它只是像经典参数深度模型那样进行预测依然保持完整,但其他行的信息则消失了,所以这就是我们称之为“干扰实验”的原因。
因此,我们发现,一般来说,当我们进行这个实验时,表现会在大多数方法中急剧下降,我要指出的是,这些方法之间的表现差距相对较小,因此这实际上是相当重要的。例如,在蛋白质方面,我们从所有方法中表现最好的转变为最差,甚至比 KNN 还差。我还要指出,在这些数据集上,如 For、Kick 和乳腺癌,我们实际上观察到性能几乎没有下降,我们将其视为一种有趣的特征,而不一定是模型的缺陷,模型可以发现尝试使用某种关系预测机制来预测数据点并不太值得,反而可以选择学习参数化预测,基本上在预测任一数据点时忽略其他数据点。
所以这可能引发一些有趣的想法,也许你可以进行后期剪枝之类的,消除数据点之间的紧张关系,进行微调。好吧,现在我把时间交给 Y,让他谈谈学习一些有趣的关系。是的,我看到我们接近时间的尽头。
但是我知道有个缓冲计划,或者说可以通过这个实验,我们可以更深入地讨论,大家更倾向于什么?
是的,我认为,通常我们会在这个时候停止录音,进行一个非正式的讨论。然后,我想问的是,大家目前有任何问题吗?
但我认为我们基本上是在根据问题的出现来进行提问,所以我个人觉得这样也不错,是的,考虑到这一点就算是个问题。是的,我想这听起来不错,你可以按计划继续进行,嗯,我们可以看看时间的事情。我认为这只会再花大约四五分钟,我应该可以继续,没问题。
好的。所以尼尔现在告诉我们实体在真实数据中的表现,以及它们确实利用了输入其他样本的信息。但我们现在要更进一步,提出一些玩具实验来测试一下实体从其他角色中查找信息的能力,也就是它们学习这种非参数预测机制的程度。
所以具体来说,我们将创建以下半合成数据集。因此,我希望你现在关注 A。是的,我们取用之前使用的一个表格数据集,特别是蛋白质数据集。但其实并不重要,重要的是这是一个回归数据集,所以现在我们做的是。这里的上半部分是原始数据集,但下半部分是原始数据集的副本,我们揭示了真实的目标值,这样 NPT 可以学习在数据点之间使用注意力,以实现任意好的性能。
它们可以学习在这些匹配的重复行中查找目标值,然后将它们粘贴回必须输出的目标值中,然后在测试时,我们当然输入一个新的测试数据,这个机制也是可行的,只是为了确保它没有学习去记忆任何东西,而是实际学会了这个正确的关系机制。
因此,我们看到确实 MP 成功学习到了执行这个查找的能力,所以我在这里可视化的是注意力图,它们非常清楚地显示出,当预测这个绿色行时,这个第一个绿色行,MP 们看到的正是这个其他绿色行。😊。
这真的很好,我们可以进一步观察到。😊。MPs 应该预测的和它们实际预测的之间的皮尔逊相关性,这个相关性是 99.9%。这比你通过参数预测所能达到的任何结果都要好,所以似乎 MP 在这里确实可以发现这个机制,我觉得“发现”这个词是恰当的,因为 MP 们可以如我们所见,继续以参数的方式独立地从每一行进行预测,这实际上向我们展示了模型有偏向于学习从其他行预测的倾向,当然在这种情况下也非常有吸引力,因为它允许你在这种情况下实现任意低的损失,或者尽可能地优化它。
😊,所以。我们认为这意味着我们的基于梯度的发现。非参数哲学似乎是有意义的。因此,我们可以通过进行某种干预实验进一步探索,调查 NPT 们是否实际上学习到这种半合成数据集背后所隐含的稳健因果机制的程度。😊,这仅仅是依赖于这个额外的测试数据列,已经很酷了。
但我认为我们可以更进一步,实际上研究一下它是否可以推广到训练集中看到的数据之外,或者来自这个特定分布之外的数据。因此,我们现在在测试时对单个重复数据点进行干预,通过改变它们的目标值。因此,我们现在只关注特定行的预测,我们在所有行中都这样做,但每次我们只关心一行。我们在这里改变目标值,我们希望看到的是,然后 NPT 也会调整预测。这是一个非常简单的干预实验,测试 NPT 是否真的学会了这一机制,在某种程度上也测试了鲁棒性,因为现在我们将目标值与不属于训练分布的特征相关联。
😊,因此我们看到,当我们调整这些值时,这是重复值,然后我们在这里看到目标值。随着调整,我们可以看到相关性保持得非常好,虽然平均值并不是 99.9%。现在是 99.6%,但仍然非常好。😊。
在这一点上,你可能对我稍感烦恼,因为你知道标准的非参数模型也可以解决这个任务,对吧?这实际上是一个我可以通过最近邻来解决的任务。没错,也许你知道,我需要稍微改变输入格式,因为这有点像批处理设置,我可以使用掩码,但一般来说,最近邻也会根据特征查找不同的输入点,最近邻并不是通过学习来实现这一点的。
我仍然觉得我们需要学习这一点很酷,因为这确实需要我们学习相当多的计算序列,比如根据特征匹配,查找目标并复制等等。但实际上,我们很容易将这个任务复杂化到一个程度,以至于基本上没有其他模型可以很容易地解决这个问题。因此,一个非常简单的方法就是给所有重复值加一。
😊,所以现在最近邻会查找正确的颜色和正确的行,当然。但它总是会预测错误的目标,结果加一,实际上,许多我们知道的模型并没有建模。😡。特征和目标的联合分布,他们建模的是给定输入特征的传统目标分布,因此他们也无法做到这一点。对我们来说,这根本不是问题,MP 只会学习再减去一个,也没问题。当然,这仍然是一个非常合成的环境,但我确实认为,我挑战你想出一些 MP 无法解决而其他模型能解决的问题。总的来说,这种掩码机制和方法的非度量性在一般情况下非常不错,并导致在各种设置中表现出许多良好行为。因此,我认为我们可以进入结论,尼尔将为您提供。
是的,我认为,我们可以剪掉这里的主要部分。我只是快进。看看他们。是的,是的,我想说,我认为你们都明白了,NPpts 取整个数据集作为输入,并使用自注意力机制建模数据点之间的复杂关系。
知道,他们在其数据类型以及我们呈现的图像数据的实验中表现良好,我们展示了一些干预实验,表明他们能够解决复杂的推理任务,论文中还有更多实验。我认为,有趣的未来工作类型是扩展这类事物。
所以我们可以,不使用这个小批量近似。而且还试图将其扩展到一些更有趣的应用领域。我们稍微讨论了一下元学习,但也可以是一些像少量样本的泛化、一般领域的适应、半监督学习等。😊,所以我认为如果还有更多问题。
也许我们可以进行更多讨论。是的,听起来不错。非常感谢演讲。我认为大家都度过了愉快的时光。我会问一些一般性的问题,然后我们可以在那之后与大家进行讨论。我注意到的一件事是,你说的这和卡农相似,我觉得这似乎与图神经网络相似,我可以把每个数据点看作一个节点,然后你可以把所有东西视为一个完全连接的图,并且你在这个图中学习某种注意力权重。
所以这就像是一个音符预测任务,你在这种图结构上进行的。对此有什么评论吗?这是否类似于图神经网络,还是有其他不同之处?
是的,这是一个非常好的观察,我认为在图神经网络方面有很多相似之处。如果我们要谈论差异,可能的差异在于我们假设一个完全连接的图,因此你也可以将其表述为我们正在发现关系结构,而图神经网络通常假设它是给定的,但这并不总是正确的,因此有很多相似之处。我不知道尼尔你是否想提到一些具体的内容,继续说吧,这真是个很好的观察,我们也确实感觉到这种情况,我们在更新版本中添加了一个与图神经网络相关的额外部分,这个版本很快就会在线上。
明白了,是的,我同意你所说的一切。我认为我们所关注的与图神经网络文献中最接近的工作是这篇神经关系推理论文,它使用消息传递神经网络试图学习可能存在或不存在的边,并帮助推断多粒子系统中粒子的位置或其他什么。
这对我们来说有点像类似的想法,你知道的。如果你没有这些边作为给定,注意机制会大致近似一些交互事物之间的有趣关系。我明白了,这真不错。另一件事是,你主要关注的是表格数据,但你是否也可以使用其他模态,比如如果你想处理语言或其他东西。
你还能使用非参数变换器吗?是的,我认为我们做表格数据的部分动机是因为我们觉得表格数据在某种意义上是语言数据的一种推广。例如,我想。这些其他概念像填充,最终你可以把它看作一堆类别属性,所以它确实可以推广到像句子这样的东西上,我们也处理图像。所以我认为其实我总是在思考小数据或大数据对我们来说哪个更有趣。所以我认为小数据真的很有趣,因为我们不能将整个数据集放入其中,而这一切都可以毫不费力地运作,但大数据实际上也很有趣,因为。
当然,你可能需要引入一些应用机制或查找机制,因为你不能总是将整个数据集加载进来,但与此同时,你非常明确地在权衡用于查找的计算与用于存储的计算,比如 GPT 中有多少参数用于存储数据,对吧,这些模型中发生了大量的记忆化,我们对此是知道的,因此也许我们可以更有效地利用参数来学习查找类型的行为,这更接近于你知道的神经动力学或其他什么,所以我认为这些都是非常令人兴奋的。
问题是的,我也期待未来的作品,因为这似乎是处理一-shot 学习情境的很好方法,所以真的很有趣看到这一点。好的,我将停止录音,我们可以进行其他问题。
P8:8.Transformer 电路、诱导头、上下文学习 - life_code - BV1X84y1Q7wV
感谢大家邀请我,能在这里我很兴奋,我最喜欢的事情之一就是谈论神经网络内部发生了什么,或者至少我们试图弄清楚神经网络内部发生了什么,因此总是很有趣聊聊这个。
😊,嗯。天哪,我得想办法做这件事,好吧。好吧,我想要的好吧,现在我们正在推进幻灯片,这似乎很有希望,所以我认为“可解释性”对不同的人意味着很多不同的事情,这是一个非常广泛的术语,人们对此有各种各样的理解。
所以我想简单谈谈我思考的那种可解释性,我称之为机械可解释性。我的大部分工作实际上并不是针对语言模型或递归神经网络或变换器,而是理解视觉卷积,并试图理解这些模型中的参数是如何映射到算法的,因此你可以将神经网络的参数视为一种编译过的计算机程序,而神经元有点像变量或寄存器,以某种方式,这些复杂的计算机程序嵌入在这些权重中,我们希望将它们转化为人类可以理解的计算机程序,这是一种反向工程的问题。
😊,所以这是我们找到的一个有趣的例子,其中有一个汽车神经元,你可以实际看到,我们有汽车神经元,它是由一个轮子神经元构成的,它在寻找底部的轮子,那些是正权重,而它不想在顶部看到它们,所以那是负权重,还有一个窗户神经元,它在寻找顶部的窗户而不是底部,所以我们实际上看到这是一种算法,它就是在说,你知道,一辆车在底部有轮子,顶部有窗户,中间有车身,而这实际上就是最强的神经元,因此我们实际上看到了一个有意义的算法,这并不是一个例外,这种情况基本上是一个普遍的故事,如果你愿意去查看神经网络的权重,并且愿意投入大量精力去试图进行反向工程,那么在这些权重中有意义的算法正等着你去发现。
有很多原因让我认为这是一个有趣的思考课题。其中一个就是,没有人知道如何去做神经网络能够完成的事情,比如说,没有人知道如何编写一个可以准确分类 ImageNet 的计算机程序,更不用说我们正在进行的语言建模任务了。没有人知道如何直接编写一个能够完成 G3 所做事情的计算机程序,然而不知何故,破坏性下降能够找到一种方法去实现这一点。我想知道到底发生了什么,我想了解在这些系统中它们发现了什么可以做的事情。
我认为这是重要的另一个原因就是安全性。如果我们希望在会对世界产生重大影响的地方使用这些系统,我认为我们需要问自己一个问题,那就是:当这些模型出现意想不到的失效模式时会发生什么,失效模式是我们不知道需要去测试、寻找或检查的。我们如何发现这些事情,特别是如果它们是某种程度上病态的失效模式,或者模型在某种意义上故意做了一些我们不希望的事情。那么,我认为我们能做到这一点的唯一方法就是到达一个真正理解这些系统内部运作的阶段。
😊,所以这就是我对此感兴趣的另一个原因。实际上,对语言模型和变压器进行解释对我来说是新的。在这一年之前,我花了大约八年的时间试图逆向工程内容和视觉模型,因此这次演讲中的想法是我和我的合作者们思考的新事物,我们可能还要一到两个月,甚至更长时间才能发表这些内容。这也是我首次公开进行相关演讲,所以请理解,我即将讨论的内容对我来说仍然有些困惑,确实会在我的表述中造成混淆。如果我说的事情让你感到困惑,请随时问我问题。有些点我可能会快速讲述,因为内容很多,但在最后我会有一段时间可以和大家讨论这些内容。此外,如果我对 Zoom 不熟悉而犯错误,我也很抱歉,但就是这样。
让我们深入探讨一下。
所以我想以一个谜团开始。在我们试图深入了解这些模型内部发生的事情之前,我想通过一个我们发现并想要理解的非常奇怪的行为来激励这一点。嗯。顺便说一句,我应该提到这项工作是和我的同事Philanthropic一起完成的,特别是我的同事凯瑟琳和纳尔逊。好的,那么进入谜团。
我认为关于变压器(transformers)最有趣和最令人兴奋的事情就是它们的上下文学习能力,或者有时人们称之为元学习(meta learning)。
你知道,GT3 论文描述了语言模型作为少量学习者的情况,GT3 有很多令人印象深刻的地方,但他们选择专注于这一点,现在每个人都在讨论提示工程,安德烈·卡拉希还开玩笑说你知道软件 3。
0 是设计提示,因此这些大型变换器语言模型在响应其上下文、从中学习并根据其上下文改变行为和响应的能力,似乎确实是它们最令人惊讶、引人注目和卓越的特性。
我的一些同事之前发表了一篇我非常喜欢的论文,其中有一个技巧。我们都习惯于查看学习曲线。你训练模型时,损失会降低。曲线有些不连续并且下降。
你还可以做的另一件事是,可以拿一个完全训练好的模型,问你知道在我们处理上下文时。你知道当我们预测第一个标记,然后是第二个标记和第三个标记时。我们在预测每个标记时变得更好,因为我们有更多的信息来进行预测,所以你知道第一个标记的损失应该是单元语法的熵,然后下一个标记应该是双元语法的熵,它不断下降。
它不断下降,且不断变得更好。从某种意义上说,这就是模型进行上下文学习的能力,能够在预测后续标记时比预测早期标记更好,从某种意义上说,这是一种数学定义,说明了在上下文学习或元学习方面这些模型的优秀之处,这真是太酷了,因为这给了我们一种方法来判断模型在上下文学习中的表现。
不。如果我可以问一个澄清性的问题,当你说学习时,实际上没有参数,是的,我是说上下文学习的奇妙之处在于,确实,我们传统上认为神经网络在训练过程中通过修改其参数来学习,但不知怎么的,模型似乎也能够在某种意义上学习,如果你给他们几个示例,他们就可以在上下文中执行,尽管没有参数改变,这是一种相当不同的学习概念。
好吧,我觉得这越来越有意义了,你能否在这种情况下描述上下文学习,就像是在一个十个标记的句子的前五个标记上进行条件化,然后是下五个标记。是的,我认为人们有时会将这视为上下文学习或元学习,因为你可以做一些事情,比如实际取一个训练集,将训练集嵌入你的上下文中,比如仅仅两个或三个示例,然后突然间你的模型就能去做这个任务,因此你可以通过在上下文中嵌入事物来进行少量学习。是的,正式的设置是你只是对这个上下文进行条件化,而这种能力就像是有某种感觉,长期以来人们,实际上我想这段历史是我们开始在神经网络学习上取得进展,对吧,我们可以训练语言、视觉模型和可以做所有这些显著事情的语言模型,但随后人们开始觉得这些系统需要更多的示例。
humansumans 所做的事情是去学习,我们该如何去解决这个问题,我们有很多关于元学习的发展想法,想知道去哪里训练模型。😡,明确地能够从少量示例中学习,人们发展出这些复杂的方案,真正荒谬的是,变压器语言模型几乎无需任何努力。
我们可以免费获得这些,能够仅仅在上下文中给出几个示例,他们就能学习新的事情,我认为这在某种意义上是 G3 论文中最引人注目的事情。因此,是的,这种能够对上下文进行条件化的能力。
它可以免费提供新的能力,而在某种意义上,能够推广到新事物是最重要的。对我来说,变压器语言模型最引人注目和令人震惊的事情就是这一点。🤧这很有道理,我想。以我的观点来看,我正在努力将这种情况下的学习概念与众不同的东西结合起来。
如果你或我得到一个提示,比如“一加一等于二,二加三等于五”作为少量示例设置,然后其他人输入“像五加三等于”,我们必须填补这个空白。在这种情况下,我不会说我们学习了算术,因为我们已经有点知道它,而是我们只是在提示上进行条件化,以知道我们应该生成什么,对吧?
但在我看来,这似乎是一个光谱,因为你也可以给出完全无意义的问题,模型从未见过这种函数,给出该函数的几个示例,而模型之前从未见过它,我可以稍后在上下文中这样做。我认为在很多情况下你学到的东西是,你可能并没有学习到算术,你可能在使用某种天生的算术能力,但你可能学到了,“哦,好吧,现在我们在做算术问题”。
明白了,如果这是我同意这里存在一个语义元素,是的,这很有帮助,只是为了澄清一下我们所讨论的内容。谢谢你逐步讲解这一切。当然。我认为这一切中最引人注目的事情是。😊。
我们已经讨论了如何查看学习曲线,我们也可以查看这种上下文学习曲线,但实际上这只是二维空间的两个切片。从某种意义上说,更根本的问题是我们在训练的不同点上生成最后一个标记的能力如何,你会注意到,如果你查看这一点,当我们谈论损失曲线时,我们只是在谈论如果你在这个维度上取平均。
如果你喜欢这样的平均值并将其投影到训练步骤上,那就是你的损失曲线,而我们称之为上下文学习曲线的东西就是这条线。是的,这条线在这里结束。嗯。有一点引人注目的是,它存在一个不连续点,就像有一个时刻,模型似乎在某个方面变得极为优秀。
在非常短的时间跨度内进行预测后期标记。所以在早期时间步长中并没有太大不同,但在后期时间步长中,突然你变得更好。
使这一点更加显著的一种方法是,你可以计算预测第 50 个标记的能力与预测第 500 个标记的能力之间的差异,你可以从第 500 个标记中减去第 50 个标记的损失。你会看到,在训练过程中。
你知道,你对此并不是很擅长,你变得稍微好一点,然后突然你有了一个悬崖,然后你再也不会变得更好了,至少这两者之间的差异永远不会改善,因此模型在预测事物时变得更好,但它在预测后期标记与早期标记之间的能力永远不会提高。
😡,所以在仅仅几百个训练步骤的时间跨度内,模型在进行这种上下文学习的能力上有了显著的提升。所以他可能会问,那时发生了什么?这只是一个模型,但首先值得注意的是,这不是一个小的变化。
所以我们并不常常考虑这一点,但通常我们只是关注损失分数,比如模型是否比另一个模型表现更好或更差,但你可以从 NAs 的角度考虑这一点,这只是信息的量和 NA,你可以将其转换为 Tibit。
所以,你可以这样理解:模型 0.4nas 大约是 0.5 比特,差不多每个其他的标记模型都可以去采样两次并选择更好的一个。实际上,情况比这更强,这只是对获得更好结果的一个低估。
这是模型在预测后续标记时能力的真正巨大差异。我们可以用不同的方式可视化这一点,也可以问一下我们在预测后续标记时的改善程度,并查看导数,然后我们可以清楚地看到在这一点上导数存在某种不连续性,我们可以取二阶导数,并相对于训练进行推导,现在我们看到在这几步和几百步之间存在明显的变化,这导致了某种大的变化,我们有某种相变发生。
这一点在不同模型规模中都是如此。你实际上可以在损失曲线中看到一点点变化,这个小峰值对应于我们可以更早看到的损失曲线中的变化。就是这个峰值。抱歉,所以我们有这种相变发生,我认为有一个很诱人的理论,就是无论如何,模型输出和行为的变化,以及外部表现的属性,可能对应于模型内部算法的某种变化,因此如果我们观察到这种大的相变。
尤其是在模型行为的一个非常小的窗口中。可以推测模型内部电路的某些变化正在推动这一点。至少这是一个自然的假设,所以如果我们想要问这个,我们需要能够理解模型内部运行的算法。
我们如何将模型中的参数转化为这个算法,这将是我们的目标。现在这需要我们在相对较短的时间内覆盖大量内容,所以我将在下一部分稍微快一点,并突出一些关键要点,然后我非常乐意深入探讨其中任何内容。通话后我还有一个小时,随时愿意深入讨论细节。
😊。
所以事实证明,在单层注意力变换器中,空间变化并没有发生,而在双层注意力变换器中是会发生的。如果我们能够理解单层注意力变换器和双层仅注意力变换器,这可能会给我们一个很大的线索,帮助我们理解发生了什么。
😡。
所以我们在注意力上也将省略层归一化和偏置,以简化事情。所以你知道,一种描述注意力变换器的方式是我们将嵌入我们的标记。然后我们将应用一堆注意力头并将它们添加到残差流中,然后应用我们的解嵌入,这样就能得到我们的逻辑。
我们可以将其写为方程式,如果我们想乘以嵌入矩阵。😊。应用注意力头。然后计算日志,打印动画。而这里有一点棘手的是理解注意力头,这可能是描述注意力的一种传统方式,实际上模糊了注意力的结构。我认为我们通常会使注意力头比实际更复杂,隐藏了有趣的结构。那么这是什么意思呢?它的意思是对于每个标记计算值向量,然后根据注意力矩阵混合值向量,然后用输出矩阵将它们投影回残差流。
😊,所以还有另一种符号表示法,你可以把它看作是使用张量积,或者使用。好吧,我想左乘和右乘,你可以用几种方式来解释这一点。但我会尽量解释这个符号的意思。14 年级。😊。对于我们的每个 x 残差流,我们有一个针对每个单独标记的向量。
这意味着去独立地将每个标记的向量乘以 Wv。所以计算每个标记的值向量。😡,另一方面,这意味着注意到现在我们 A 在左侧。这意味着去做。去乘以注意力矩阵,或者进行值向量的线性组合,所以不要改变值向量。
你知道逐点的,但根据注意力模式将它们混合在一起。创建加权和。然后,再次,对于每个位置,去应用输出矩阵。你可以将分配属性应用于此,它只会揭示实际上在中间进行注意力并不重要。你可以在开始时进行注意力,也可以在结束时进行。
这是独立的,实际上重要的是有一个 WVWO 矩阵,它描述了注意力头从每个位置读取的信息以及如何将其写入目标。
而 A 描述了我们从哪个令牌读取和写入。这种描述更为基本,注意力头负责将信息从一个位置移动到另一个位置,而哪个位置被移动到哪个位置的过程与移动什么信息是独立的。
如果你以这种方式重写你的变换器,首先我们可以将注意力头的总和写成这种形式。然后我们可以通过添加一个恒等映射来写出整个层。如果我们将这一切代入我们的变换器并进行展开。我们必须将所有内容相乘,得到这个有趣的方程。
因此,我们得到这一项,它对应于直接通过残差流的路径。它想要存储 pgram 统计信息,实际上,它就是知道所有的,假设是前一个令牌,并试图预测下一个令牌。因此,它会尝试预测或通过统计信息进行存储,对于每个注意力头。
我们得到这个矩阵,它表示,好的,我们有注意力模式,这个矩阵描述了哪个令牌关注哪个令牌,同时我们这里还有一个矩阵,描述了每个可能的令牌如何影响逻辑,这只是一个表格,你可以查看,它只是说明,对于这个注意力头,如果它关注这个令牌,它将增加这些令牌在单层注意力变换器中的概率,这就是全部。
😊,是的,这就是我所描述的解释。嗯。还有一点值得注意的是,根据这一点,注意力变换器是线性的,如果你固定了注意力模式,当然,注意力模式并不是固定的。但每当你有机会去使某些东西线性时,线性函数其实很容易理解,因此如果你能够固定少数几个东西并使某些东西线性,这实际上是很有杠杆作用的。
好的。嗯。是的,我们可以讨论一下注意力模式是如何计算的。如果你展开它,你会得到这样的方程。请注意,我认为这会更简单。好的。我认为从这一切中要得出的核心故事是,我们有这两个看起来相似的矩阵。那么这个矩阵告诉你,如果你关注一个令牌,逻辑是如何受到影响的?
你可以把它想象成一个巨大的矩阵,针对每一个可能的输入令牌,逻辑是如何受到影响的?
通过那个令牌,它们是变得更可能还是不太可能?而我们有这个,它有点儿说。每个令牌想要关注其他每个令牌的程度。你可以这样想象,好的,当我们考虑一个注意力头时,实际上涉及三个令牌。我们有要移动信息的令牌,它是向后关注的。
我们有源标记将要被关注,还有输出标记的逻辑将会受到影响。你可以跟踪这个过程,询问关注这个标记会发生什么,首先我们嵌入标记。然后乘以 WV 以获得值向量,信息通过注意力模式被移动。
我们乘以 WO 以将其添加回残差流中,但被嵌入影响了逻辑,这就是那个矩阵的来源。我们还可以询问是什么决定了当我们计算注意力模式时,某个标记获得高分的原因,它仅仅是说嵌入那个标记。
将其转化为查询,嵌入另一个标记,将其转化为键。然后计算它们的点积。那就是这两个矩阵的来源。所以我知道我讲得比较快。也许我在这里稍作停顿,如果有人想询问澄清,这将是一个好时机,然后我们将实际进行逆向工程。
你知道,单层注意力变换器中发生的一切现在尽在我们的掌握之中。这是一个非常简单的模型。实际上没有人使用单层注意力变换器,但我们能够理解单层注意力变换器。所以,确实,你看到的快速键电路正在学习注意力权重。
像本质上负责运行不同标记之间的注意力排序一样,这个矩阵在学习时会涉及到所有三个部分。但这就是它表达的注意力模式,这就是生成注意力模式的地方,对于每对标记都进行计算。你可以把这个矩阵中的值看作每个标记想要关注其他标记的程度,假设我们在这里忽略位置的信息,所以在某种程度上,我们也是在对其进行全局对齐,但总的来说,每个标记想要关注其他标记的程度如何,对吧,电路就像是使用这种注意力。
是的。像影响最终输出,假设注意力头关注某个标记。那么我们暂时放下如何计算的问题,假设它关注某个标记。关注那个标记会如何影响输出?你可以计算,这只是一个大值表,表示对于这个标记。
这将使得某个标记更可能,而这个标记将使得另一个标记的可能性降低。好的。这仅仅是。并且它们是完全独立的,就像是两个独立的矩阵,它们并不是。你知道,公式可能让它们看起来是纠缠的,但实际上是分开的。对我来说,讲座的监督似乎来自输出值集,而查询键则更像是无监督的东西,因为没有。
我的意思是,我觉得在某种意义上,在一个模型中,每一个神经元在某种意义上都是这样的。你知道,就像信号在某种程度上是来自最终信号的下游,所以你知道,输出值信号的输出值开始变得越来越直接,可能会得到更直接的信号,但确实如此。
是的。我们将能够深入探讨这个问题,尽可能详细,所以我们可以也许推进一下,我认为实际上如何使用这个逆向工程一个层次模型的例子,可能会让它更有动机。
好的,所以。只是为了强调这一点,我们可以讨论三种不同的令牌。一个是被关注的令牌,一个是进行关注的令牌以调用目标,然后还有一个是被影响的令牌,它的下一个令牌的概率也会受到影响。
嗯。因此,我们可以注意到,唯一连接这两个的令牌是被关注的令牌。所以这两个是通过它们与源令牌的互动建立了桥梁。因此,有一种自然的方式是问,对于给定的源令牌,你知道,它如何与这两个互动?所以我们拿,比如说,令牌完美。
我们可以问的一个问题是,哪些令牌希望关注完美。显然,最希望关注完美的令牌是“完美”、“是”、“看”和“提供”。所以“是”是最主要的,接下来是“看”,依此类推。然后当我们关注完美时,这只是一次单一的关注。
所以你知道,如果我们使用不同的关注方式,那结果会有所不同。它实际上想要增加完美的概率,然后在较小程度上增加超级、绝对和纯粹的概率。我们可以问你,这一特定组希望互相关注并变得更可能的令牌序列是什么。😡,事情是形式上的。我们有我们关注的令牌,并且我们跳过了一些令牌。
它们不必是相邻的,但后来我们看到令牌 R,它倾向于完美并增加完美的概率。因此,你可以把这些视为我们正在创建或改变我们可能称之为跳过三元组的概率的事物。
你知道,我们在中间跳过了一些令牌。但我们实际上是在影响三元组的概率。所以完美或者完美,完美,看起来超级。我们可以看看另一个,我们有令牌大。这些令牌包含了希望回头看并增加大和小的概率,以及受到影响的跳过三元组的事物,比如大使用大。
大包含小,像这样的事情。😊,如果我们看到数字二,我们会增加其他数字的概率,影响像 2,1 的标记或跳过图表。二,二有三个。现在你们都是技术领域的人,应该能认识到这个。我们有 Lambda,然后看到反斜杠,然后我们想增加 Lambda、排序和 Lambda 操作符的概率,所以这都是落后技术。
它想要,如果它看到 Lambda,它会认为,下次我使用反斜杠时,也许我应该放入一些 LaTeX 数学符号。对于 HTML 也是同样的事情,我们看到 NSP 表示不间断空格,然后看到一个百分号,我们想让它更可能。所有这些的结论是,一层注意力变换器完全在作用于这些跳过三元组。
😊,而且。所有这些,嗯,我想,它也有影响图表的路径。但主要是影响这些跳过图表。还有很多,它就像是这些巨大的跳过三元组表,使得某些可能性更大或更小。还有其他有趣的事情,有时标记化会以多种方式拆分一个单词。
所以我们有 Indie,好吧,这不太好 k,我们有单词 Piike,然后我们看到标记 P,然后我们预测 IC。😊,当我们预测尖峰等东西时,或者这些东西有点有趣。也许值得讨论一下。我们看到标记 void。😊。然后我们看到一个 L,可能我们预测 Lloyd 或 R,预测 Ralph,C,Catherine。
但我们稍后会看到,嗯,是的,我们稍后会回到这一点。因此,我们增加像 Lloyd Lloyd 和 Lloyd Catherine 或 Pixmap 的可能性,如果有人用过 QT,我们看到 Pixmap,并再次增加 P Xmap 的概率。
但也有 Q。😊,Canvas。还有。当然,这里有一个问题,那就是它无法选择哪些与哪些匹配,所以如果你想制作 Pixm 像素图。并且让 Pixmap Q Canvas 更可能,你还必须去创建并使 Pixmap Pixmap P canvasvas 更可能。如果你想让 Lloyd Lloyd 和 Lloyd Catherine 更可能。
你还必须让 Lloyd Cloyd 和 Lloyd Latherin 更可能。因此,变换器确实存在一些奇怪的 bug,至少在这些只有一层的注意力变换器中有这些 bug,这些看起来很奇怪,直到你意识到这是一个巨大的跳过三元组表在运作,而这种性质是你将会。
😊,是的,这种方式在你想这样做时迫使你去做一些奇怪的预测。Chris,简要地说。你为什么在第一个字符前有一个空格呢?
是的,我只是举了一些例子,说明标记化是如何以特定方式断裂的,好的,因为在某些东西前面有空格时,空格会被包含在标记化中,然后有一个例子是空格不在它前面。
它们可以以不同的方式进行标记化,太酷了,谢谢。是的,伟大的问题。好的,所以有些只是为了抽象出我们看到的一些共同模式。我认为一个相当常见的情况是你可以描述的像是 A B。所以你进去后,看到一些标记,然后你看到另一个可能在那个标记之前的标记,然后它们就像。
可能我之前看到的标记会再次出现。或者有时你预测一个稍微不同的标记,比如第一个的例子是两个。一,二。但是你也可以做两个加三。所以三并不等同于二,但有点相似,这就是一件事。另一个例子是你有一个标记,突然它被一次性标记在一起,然后又被拆分开,你看到这个标记,然后看到可能是标记的第一部分,然后你预测第二部分。
😊,嗯。我认为这非常引人注目的是,某种程度上这都是一种非常粗糙的上下文学习。而且尤其是,这些模型的上下文学习大约是 0.1 而不是 0.4,并且它们从未经历相位变化。因此,它们进行了一种非常粗糙的上下文学习,并且几乎将所有的注意力头都投入到这种粗糙的上下文学习中。
所以它们并不是很擅长,但它们正在投入能力。😊。我注意到现在是 1037,我想检查一下我能持续多久,因为我可能应该加速一下。哦,克里斯,我觉得没关系,因为学生们也在间歇中提问。所以你应该没问题。好的,所以我的计划可能是我会讲到 1055 或 11 点。
然后如果你,我可以在之后回答一段时间的问题。是的,没问题。太好了。所以你可以把这看作是一种非常粗糙的上下文学习,基本上我们所说的是,这种情况类似于我看到这个标记,可能这些其他标记,类似的标记更有可能去继续关联,看看这是一个机会,看起来我可以注入我之前看到的标记,我将把它注入到这里,表明它更有可能,基本上就是这样。
并且它几乎把所有能力都投入到了这一点上,所以你知道,这有点和我们过去对 RNN 的想法相反,过去每个人都觉得哦,你知道 RNN。要考虑长距离上下文是多么困难。
你知道,也许我们需要去使用水坝之类的东西,但如果你训练一个变换器,它会专注于你给它的足够长的上下文,它几乎将其全部能力都投入到这类东西中,这真有趣。有一些注意力头主要是位置性的。
通常我训练的模型是一个有两层的模型,或者只是一个有 12 个注意力头的单层模型。通常其中两个或三个将成为这些更具位置性的、较短期的东西,做一些更像是局部三元组统计的事情,而其他一切都会变成这些跳跃三元组。
是的,所以一些收获是,你可以理解单层附加变换器的 OV 和 QK 电路。变换器非常渴望进行上下文学习,它们迫切,迫切,迫切想去看这些长距离的联系并预测事情。它们可以从中减少那么多熵。😡,嗯。😊。
单层的限制使得意图变换器迫使它产生某些错误。但它不会做正确的事情。如果你冻结注意力模式,这些模型是线性的。
好的,稍微插一句,因为到目前为止,这种工作需要我们进行大量的手动检查,就像我们在走过这些巨大的矩阵。但有一种方法可以让我们逃脱,如果我们不想的话,我们不必查看这些巨大的矩阵。
😊。
我们可以使用特征值和特征向量,所以回想一下,特征值的定义。特征向量只是意味着如果你将那个向量乘以矩阵,它等价于仅仅是缩放。在我经验中,这通常对于可解释性并没有太大帮助,因为我们通常在不同空间之间进行映射。
但如果你映射到同一个空间,特征值和特征向量是一个美妙的方式来思考这些东西。😊因此,我们将它们绘制在极坐标图上,并将使用对数极坐标尺度,因为它们的幅度会变化,变化的数量级会有很多个数量级。
好的,所以我们可以继续,我们的 OV 电路将令牌映射到令牌,这在输入和输出中是相同的向量空间,我们可以问,如果我们看到某种特定类型的特征值,这意味着什么,好吧,正特征值,而这实际上是最重要的部分,意味着复制。所以如果你有一个正特征值,这意味着存在一组令牌,当你看到它们时,你增加了它们的概率。
如果你有很多正特征值,你在做很多复制。如果你只有正特征值,那么你所做的一切都是复制。现在,虚数特征值意味着你看到一个词,然后你想增加无关词的概率,最后负特征值是反复制的,它们就像,如果你看到这个词,你就会降低它未来出现的概率。😡
嗯,这真的很不错,因为现在我们不需要去挖掘这些巨大的矩阵(词汇大小乘以词汇大小),我们只需查看特征值,这些是我们单层注意力变换器的特征值,我们可以看到,嗯。
😊 许多这些几乎都是正的,这些几乎完全是正的,实际上这些几乎完全是正的,只有两个有大量的虚数和负特征值。
😊 所以这告诉我们的是,通过一幅图,我们可以看到,嗯,好吧。这 12 个注意力头中有 10 个只是做复制,它们就是在做这种长距离的事情,嗯,我看到这个词可能会再次出现,这真不错,我们可以非常快速地总结它。
😊 好的,现在你可以,嗯,这个是为了第二。我们稍后将查看一个双层模型,我们会发现它的许多头也在做这种复制的事情。它们有很大的正特征值。😊 你可以做一个直方图,像学校里的一样,你可以把特征值加起来,然后除以它们的绝对值,这样你就会得到一个介于零和一之间的数字,这就像是复制的程度。
能够总结你的模型是很好的,我觉得这有点像我们从非常底层的方式开始,我们没有对模型做出假设,而是尝试理解其结构,然后我们能够以有用的方式总结它,现在我们能够说些关于它的事情。
现在你可能会问的是,QK 电路的特征值是什么意思,在我们到目前为止的例子中,它们并不那么有趣。但稍后它们会变得有趣,因此我会简单描述它们的意义,正特征值意味着你想关注相同的词。
😡 想象一下你的特征值,这在我们到目前为止看到的模型中,你主要会看到的意思是你想关注一个无关或不同的词,而负特征值则意味着你想避免关注相同的特征。
这将在稍后相关。是的,这些在多层注意力变换器中通常会很有用,我们可以有注意力链,所以我们可以问你,嗯,我马上会说。😊是的,所以有一张总结表,不幸的是,一旦你有 MLP 层,这种方法完全失效。
你知道,现在你有了这些非线性,因为你没有这种属性,即模型主要是线性的,你可以仅仅查看一个矩阵。但如果你只处理注意力变换器,这是思考 P 的一种很好的方式。
😊。
好吧,回想一下,单层注意力变换器不会经历我们一开始谈到的相变。就像现在我们在寻找,我们试图解答这个相变的奥秘,模型是如何突然在上下文学习中变得优秀的。我们想要回答这个问题,而单层注意力变换器不经历这个相变,但双层注意力变换器会经历,所以我们想知道双层注意力变换器有什么不同。
😡。
好吧,在之前处理单层注意力变换器时,我们能够以这种形式重写它们,这让我们有了很大的理解模型的能力,因为我们可以说,这就是双元组,而这些每一个都在某个地方查找,我们得到了这个描述其影响的矩阵。
嗯,这让我们在思考这些问题时有了很大的能力。我们还可以用这种分解形式书写,其中包含嵌入、注意力头和反嵌入。😊好吧,为了简单起见,我们通常写 WOV 而不是 WO WV,因为它们总是一起出现。这在某种意义上是一个幻觉,WO 和 WV 是不同的矩阵。
其实它们只是一个低秩矩阵,它们总是一起使用,类似的 WQ 和 WK 也是一种幻觉,它们是不同的矩阵,但总是一起使用,键和查询只是这些低秩矩阵的一个副产品。
因此,无论如何,将它们写在一起是有用的。好的,很好。所以双层有意变换器,我们所做的是通过嵌入矩阵。😊然后通过第一层注意力,再通过第二层注意力。最后,我们经过反嵌入以及注意力头。
我们总是有这个恒等式,它对应于沿着残差流下去,所以我们可以沿着残差流下去,或者我们可以通过一个注意力头。接下来,我们也可以沿着残差流下去,或者通过一个注意力头。
还有一个有用的恒等式,混合乘积恒等式,任何张量乘积或其他解释方式都遵循这一点。也就是说,如果你有一个注意力头,且我们有相同的,你知道,我们有权重和注意力模式,以及 WOV 矩阵和注意力模式,注意力模式相乘,OV 电路相乘,它们的行为相同。
😊,太好了,所以我们可以扩展那个方程式,我们可以将最开始的那个大乘积展开,得到三种不同类型的项。我们做的一件事是得到这条路径,它直接通过残差流,进行嵌入和解嵌入,这将想要表示某些二元统计。
😊,然后我们得到看起来像之前注意力头项的东西。最后,我们得到了对应于通过两个注意力头的项。并且。😊。现在值得注意的是,这些项实际上并不相同,因为第二层的注意力头和注意力模式可以从第一层的输出中计算出来。它们也会更加表达,但在高层次上,你可以将其视为这三种不同的项,我们有时称这些项为虚拟注意力头,因为它们并不存在,或在模型中并未明确表示。
但实际上,它们具有注意力模式,几乎在所有功能上像一个微小的注意力头,而且它们的数量是指数级的。嗯。事实证明,它们在这个模型中并不那么重要,但在其他模型中可能是。
这可能很重要。对,正如我所说,这让我们能够以一种真正有原则的方式思考注意力。我们不必去考虑。我想人们一直在观察注意力模式,我想你也会有一些担忧。
你知道有多种注意力模式,比如信息是由一个注意力头移动的。它可能是由另一个注意力头移动的,并不是起源于那里,它可能仍然被移动到其他地方。但实际上,这给我们提供了一种避免所有这些顾虑的方式,只需从单一原则的角度思考事物。
好吧,反正。
一个重要的问题是,这些不同的项有多重要。我们可以研究所有这些项,它们有多重要,事实证明,你可以使用一个算法,通过淘汰注意力,淘汰这些项,然后你去询问它们有多重要,结果是,在这个模型中,最重要的无疑是这些单独的注意力头项,虚拟注意力头基本上没有那么重要。
它们仅使用上述方法有效为 0.3nas,而二元组仍然相当有用。所以如果我们想尝试理解这个模型,可能应该将注意力集中在虚拟注意力提示上,这不是最佳的进入方式。
特别是因为有很多这样的例子,共有 124 个,对于 0.3nas 来说,学习这些术语几乎没有什么可理解的。😊。所以我们知道这些是图示统计时,我们可能想要做的事情是理解各个注意力头的术语。
这是我将跳过的算法,出于时间考虑,我们可以忽略这个术语,因为它很小,事实证明,第二层的注意力头比第一层的注意力头做得更多,这令人惊讶,因为第二层的注意力头更具表现力,因为它们可以使用第一层的注意力头来构造它们的注意力模式。
😊,好的,所以如果我们能理解层级的注意力头,我们可能就能理解这个模型中的许多内容。而且,关键是这些注意力头现在是从前一层构造的,而不仅仅是从标记中构造的。所以这一点仍然相同,但注意力头。
注意力模式更复杂,如果你把它写出来,你会得到这个复杂的方程,说明你嵌入标记,然后你使用注意力头为键进行洗牌,然后乘以 WQK,然后再次用查询洗牌,然后再次乘以嵌入,因为它们被嵌入,然后你又回到标记。
😊,而且。😊,啊。但让我们实际看看它们,所以要记住,当我们在 OB 电路中看到正特征值时,我们在进行复制,所以我们可以说有七个出自 12,实际上具有最大特征值的那些正在进行复制,因此我们仍然有很多注意力在进行复制。
😊,嗯。而且是的,QK 电路,所以你可以尝试从这个更复杂的 QK 来理解事物,或者可以尝试实证上理解注意力模式在做什么,所以我们来看其中一个复制的例子。
我给了它《哈利·波特》的第一段,我们可以看看它在哪些地方集中注意力。而且,确实发生了一些有趣的事情。几乎所有时候,我们只是回到第一个标记。我们在序列的开头有这个特殊标记。
而我们通常认为这只是一个空注意力操作,它实际上没有做任何事情。如果你看这个值向量,基本上是零,它根本没有从中获取任何信息。😡。而且,当我们看到重复的文本时,会发生一些有趣的事情,所以当我们到达 Mr。😡。Tryries 看起来有点弱,然后我们到达 D。而且打算是 Ers。
这很有趣。然后我们到达了地球。它开始离开。因此它并不是关注相同的标记。它是在关注相同的标记,但向前移动了一位。嗯,这真有意思。实际上,有很多注意力网络在做这个。所以我们这里有一个,当我们到达陶器时,我们关注的是 T。
也许这是我在构建这个例子时的同一注意力。我记不太清了。😊。结果发现这是一个超级常见的事情,因此你去查看之前的例子。你向前移动一位,你会觉得,好吧,上次我看到这个,这就是发生的事情。可能同样的事情将会发生。我们可以去看看注意力头对逻辑的影响。
大多数时候这并不影响事情,但在这些情况下它能够预测当它向前看时的下一个标记。所以我们称之为归纳头,归纳头寻找前一个副本,向前看,并说可能上次发生的事情将会再次发生。你可以将其视为最近邻,类似于上下文中的最近邻算法,它在上下文中进行搜索。
找到相似的东西,然后预测接下来会发生什么。它们的工作方式,实际上,有两种方式。但在使用旋转注意力或类似模型中,你只有一种方式。你首先移动你的键,早期的保持头将你的键向前移动一位,因此你将前一个标记的值嵌入到当前标记中。
然后你有你的查询在你的键中,去查看,没错。试着去匹配,所以你寻找相同的东西。😡。然后你去预测你看到的东西将是下一个标记,所以这是高层次的算法,有时你可以做一些聪明的事情,实际上它会关注多个早期的标记,并且会寻找短语等,所以归纳头在它关注的先前上下文的程度或方面上可能会有很大变化,但这个寻找相同的东西向前移动预测的通用技巧就是归纳头所做的。
有很多这样的例子。很酷的是,你现在可以使用 QK 特征值来表征这个。你可以说,好吧,我们在寻找向前移动一个的相同东西,但如果你以正确的方式扩展注意力网络,这会奏效,我们在复制,所以归纳头是一个具有正 OV 特征值和正 QK 特征值的头。
所以你可以把它放在图上,左下角是你的归纳头对应的 OV 特征值和 QK 特征值,我认为其实 OV 是这个轴,QK 是另一个轴,无所谓,在角落里是你的特征值或你的归纳头。
😊,是的,所以这似乎是好的,我们现在有一个实际的假设。这个假设是,我们所看到的相变是这些归纳提示的发现,这将是我们的假设,而这些要比我们最初的算法有效得多,那个算法只是盲目地复制任何可能合理的内容,现在我们可以真正识别模式,观察发生了什么,并预测类似的事情将再次发生,这是一种更好的算法。
嗯。
是的,还有其他注意力提示正在进行更局部的事情,我将跳过这一部分,回到我们的谜题,因为我快没时间了,我还有五分钟。好吧,这与上下文学习有什么关系?现在我们有了假设,来检验一下,我们认为可能是归纳提示。
嗯 m。我们相信有几个原因。首先是归纳头。好吧,我会直接说到最后。所以你可以做的一件事是消融注意力头。这样,你可以给这里的注意力头上色,表示它们作为归纳头的程度。这是隆起的开始,这里是隆起的结束。
我们可以看到,首先,归纳头正在形成,之前这里没有归纳头,现在它们刚开始在这里形成,然后这里和这里有非常强烈的归纳头。对于注意力头,当你对它们进行消融时,你会得到一个。
你会得到一个损失,或者说,我们幸运的是没有损失,这个元学习分数。上下文学习分数的差异。第 500 个标记和第 50 个标记之间的差异。所有这些都可以用归纳头来解释。现在我们实际上有一个归纳头并没有贡献,相反,它的作用正好相反,这很有趣,也许它正在做一些较短距离的事情,还有一个有趣的现象,就是它们都争着成为归纳头,最终只有少数几个胜出,所以这里有一些有趣的动态,但在这些小模型中,情况似乎真的是这样。
😊,上下文学习都是由这些归纳提示解释的。😡,好吧。大模型呢?在大模型中,这会更难去问。但你可以做的一件事是,你知道,我们可以查看我们的归纳、我们的上下文学习分数随时间变化的情况。它们会出现这个明显的相变。哦,看。
引导头在完全相同的时间点形成。所以这仅仅是相关证据,但这是一种相当有提示性的相关证据,尤其是考虑到我们有一个明显的,你知道,引导头应该具有的显著效果,我想可能是在大型模型中同时发现其他机制,但这必须在一个非常小的窗口内。😊,所以。😊,这真的表明驱动这一变化的东西是在上下文学习中。
好的,所以。显然,引导头可以去复制文本。😡。但你可能会问,是否能进行翻译,因为模型可以做许多令人惊叹的事情,而在上下文学习或这种复制机制中并不明显,所以我只是想很快地。
看几个有趣的例子。所以这里我们有一个注意力模式。是的。我想我需要打开 lexoscope。让我再试一次。抱歉,我在这次演讲前应该考虑得更周全。嗯。😊,克里斯,你能稍微放大一点吗?是的,感谢你。那么。好的,我不是。
我的法语不是很好,但我叫克里斯托弗,来自加拿大。我们可以在这里探讨一下注意力如何随着时间流动而集中,这在第二个句子中会变得特别明显。现在我们在句号上。我们倾向于展示。现在我们在“anjos”上,我用法语说“我”。好的。现在我们在“eye”上,我们关注瑞典。现在我们在“am”上,我们的趋势是从这里到加拿大。
所以我们正在做一个跨语言引导头,这可以用于翻译。确实,如果你看一些例子,这似乎是模型能够正确进行翻译的主要驱动力。另一个有趣的例子是,我认为对我来说,在上下文学习中最令人印象深刻的事情是模型能够学习任意函数,只需展示给模型一个函数,它就能开始模仿那个函数,好的。
我有一个问题。是的,这些引导头是否仅仅进行前瞻性复制,或者它们能否也进行某种复杂结构识别?是的,它们既可以使用更大的上下文和以前的上下文,也可以复制更抽象的东西。
所以像翻译的那个显示给你们的是它们可以复制,而不是字面上的翻译版本,我称之为软归纳头。是的,你可以让它们复制相似的词,你可以让它们查看更长的上下文,你可以寻找更结构化的东西。我们通常将它们表征为是否在大型模型中经验性地表现得像归纳头,因此当你试图包含这些更模糊的边界时,定义就会变得有点模糊,但似乎有很多注意力头在做更抽象的版本。我最喜欢的版本是我即将展示的这个,它可以做模式识别,所以它可以在上下文中学习功能。我这里编造了一个无意义的函数,我们将编码一个二元变量,选择是否做颜色或一个。
这第一个词是什么?然后。我们要说这里有绿色或六月份。让我们更深入一点。所以我们有颜色或月份和动物或水果,然后我们必须将其映射为真或假,这就是我们的目标,最终会是一个异或,我们有一个以这种方式表示的二元变量。
我非常有信心这从未出现在训练集中,因为我刚编造出来,它看起来像是个无意义的问题。好的,那么我们可以问,模型能否去推动这个,它可以,它使用归纳头来做到这一点。我们可以看看,所以我们查看一个冒号,它要去预测下一个词,例如在这里。
我们有四月的狗,所以这是一个月份和动物,它应该是真的。它会寻找之前的案例,其中有一个动物、一个月份,然后是一个动物,特别是当月份相同时,去看看并说这是正确的。因此,一个模型可以去学习,学习一个完全任意的功能。
通过进行这种模式识别归纳头。因此,对我来说,这使得这些模型更可信,但这些模型实际上能否做到?它们可以在上下文中学习,所有这些惊人的事情的普遍性,我们看到这些大型语言模型所做的可以通过归纳主义来解释。我们不知道,可能还有其他事情在发生,但这在我看来似乎比我们开始时更可信。
😊,我意识到我实际上超时了,快点过一下这最后几张幻灯片。是的,我认为把这个视为上下文中的邻居思维是一个非常有用的思考方式。😊,其他事情绝对可能在贡献。这可能解释了为什么变换器在长上下文中的上下文学习表现得比 LSTM 好,而 LSTM 无法做到这一点,因为它对所需计算量不是线性的,而是平方或 N log n,如果它真的很聪明的话。所以变换器能做到这一点,而 LSTM 则无法做到这一点,变换器在同一点上会分歧,但如果你仔细观察。
我可以在 Mar Hill 深入讨论这个,如果人们想要的话。Marcus Hutter 有一篇非常好的论文,解释了我们为什么观察到缩放定律和模型,试图进行预测和解释。值得注意的是,这篇论文中的论点恰好适用于这个例子和理论。事实上,它们在考虑与最近邻算法相关的上下文学习时效果更佳,而不是在常规情况下。
是的,我很乐意回答问题,我可以根据人们想要的程度深入讨论这些内容。如果你发我电子邮件,我也可以发送更多相关信息。是的,你知道,这项工作尚未发表,你不必保密,但如果你能考虑到这是一项未发表的工作,可能还有一两个月才会发布,我将非常感激。非常感谢你的时间,是的,真的非常感谢。
😊,Inter。所以我也会打开一些一般性问题,然后我们可以进行学生提问的环节。我非常兴奋地想知道,你目前正在从事的工作是什么,是在扩展这个吗?你认为接下来要做的事情是什么,以使其更具可解释性,接下来是什么呢?
我的意思是,我想要逆向工程语言模型,我想要弄清楚这些语言模型中发生的所有事情。你知道,我们完全不理解的一件事是 MLP 层,虽然我们对它们了解一些,但并不能很好地理解 MLP 层。大型模型中有很多我们不理解的东西,我想知道模型是如何进行算术运算的。我还非常感兴趣的是,当有多个说话者时,模型显然能够表示出基本的心理理论,我想理解其中的运作,但老实说,我们还有很多不理解的地方,回答这个问题真的很难,因为需要弄清楚的事情实在太多了,我们在这个领域有很多不同的研究方向,但就是这样。
Anthropic 的 interpretpoly 团队正在努力探索这些模型内部发生的事情,试图弄清楚参数是如何编码算法的,以及我们能否将其逆向工程为有意义的计算机程序,以便我们理解?
😊,另一个问题是,你谈到他们如何进行元学习。你花了很多时间谈论类似的事情,这很有趣,但你能否将他们可能正在学习的元学习算法形式化?是否可以说,这可能是一种内部算法,使他们成为优秀的元学习者,我不知道,我认为大致上有两个算法,一个是在单层模型中看到的算法,我们在其他模型中也看到了,特别是在早期。
这只是试图复制,知道你看到的一个词,可能是之后会出现的类似词,寻找适合的地方并提高概率。所以这是我们看到的一件事,另一个是归纳头,基本上可以总结为对邻居的上下文,它似乎与其他事物一起有效,但这两种算法及其具体实例似乎是驱动上下文学习的关键,这就是我的初步理论。
是的,听起来很有趣。好的,我们就开始前两个问题吧。请随意提问。
P9:9.Audio ResearchTransformers for Applications in Audio, Speech, Music - life_code - BV1X84y1Q7wV
感谢你们邀请我今天来演讲,我将讨论音乐和音频的变压器,这与我们过去的课程非常不同。我也是唯一一位来自斯坦福的发言人,所以我必须表现出色,确保你们看到非常好的幻灯片,因为在某种意义上我代表着这个大学。
所以今天演讲的流程基本上是,我会讲很多内容,像自助餐一样,你可以随意喜欢或不喜欢。我将主要讨论我所做的三篇论文。
我首先会从不同的角度介绍什么是变压器,以及音频表示是什么。谈论一个用于音频的生成模型,实际上是在样本级别上进行语言建模。然后我将讨论如何对语音和音频进行语言建模。
这与人们处理文本的方式不同,目前文献中的趋势是什么。
最后,我将简要提及与视觉变压器相关的计算机视觉领域发生的类似事情,或者我们能否将类似的思路应用于音频变压器,并加入一些信号处理以提高性能。谈到这里,演讲大约为 35 到 40 分钟,包含约 15 分钟的问答。我还要说,我的所有观点以及斯坦福或其他教授的观点对我所犯的错误不承担责任。
嗨。所以变压器在某种程度上革命性地改变了大家之前在深度学习领域的做法,之前的重点都是 CNNs,所有这些突出的模型都是在一波波涌现,曾经一段时间每个人都在应用 CNNs,然后开始适应某种扩张卷积,慢慢地循环神经网络也在失宠,现在变压器似乎总是时尚,几乎解决了所有提出的问题。
那么,特别之处在哪里?让我印象深刻的一个事实是它们的简单性。如果你想想看,它非常受欢迎,2018 年刚发布,三年内就有大约 30,000 次引用,几乎解决了每个领域的每个问题。它也有局限性,但如果你从某种角度来看,变压器基本上就是以一种级联的自注意力进行特征学习,如果我们不断这样做。
然后模型以某种方式学习哪些输入部分是重要的,并持续转换它们,移除不重要的内容,只保留负责特定任务的有限信息。呃。跟上文献真的非常困难,你知道的。
我在这里开了个玩笑,甚至连 Twitter 的推荐引擎也开始关注:为什么 Chris Manning 会搜索变换器,这还要追溯到 2020 年,所以对于研究人员来说,跟上发生的事情的节奏也很困难。
在 Transformers 之前,整个语言处理社区都在为双向 LSTM 和注意力机制而疯狂。所以在 2017 年之前的每一篇论文都只是这样:你有编码或 LSTM 层,你不断添加多个层,然后在之后有一个注意力机制,它只是关注重要的内容,然后依次解码。但这并不是一种理想的方式,你知道的。
因为事实证明,当我们开始处理更长的序列时,连接不再如预期那样存储梯度更新。因此,谷歌的研究人员提到,与其在最后一个编码层只有一个注意力层,我们不如在每一层都有这些注意力机制,这样就可以学习在特定层中某个问题的重要性,并不断重复这个过程。
所以然后变换器和注意机制的整体思路相继出现,我就不详细讲了,因为这是课程的最后一节课。但常用的技巧也有助于整个神经网络文献,比如多头注意力、跳跃连接和层规范化,这些不仅对变换器本身有好处,还可以应用于任何其他架构。
另一个推动这项研究的因素是计算能力不断提升,所以所有这些大公司都在投入大量计算资源来解决非常简单的任务,其中最顶尖的就是课程中讨论的 Switch Transformer。
但我认为所有力量的起源之一是 Elmo,它只是学习了这些用于自然语言处理的上下文化表示,这个模型可能是最早的之一。呃。就像道德一样。0。0 或者 0。1,在引入整个革命方面,你可以看到这些模型的相似之处。Bt 基本上是受到 Elmo 的启发,他们只是用变换模块替换了一些 LSTM 层。
所以,一个需要注意的点是,无论是自然语言处理还是其他领域,这些方法都可以适应多种领域,而今天的讨论中我将它们应用于音频。
因此,我基本上将从介绍音频表示法开始,只为完整起见谈谈谱图。你可以将任何时域信号分解为多种基函数,如果你进行傅里叶变换,你就像是在将实际时域信号分解为正弦基组件。因此,如果你这里有一个波形,它是三个纯正弦波的总和。
然后这里的总和基本上就是这个,你可以看到当你进行傅里叶变换及其幅度时,你基本上有了各个成分的强度。Sn 在这里,所以你可以从一个正方波取出另一个波,你所拥有的基本上是更丰富的正弦分解,因为它是一种不连续信号,因此你需要更多的正弦波来尽可能接近实际信号。
在这里你也可以看到,如果这是一种正方波,那么它实际上由许多正弦波组成,每根条形代表特定正弦波的强度。从优化的角度来看,这样做显然是次优的,因为你在为表示正方波固定了正弦波的数量。我更倾向于使用正方波本身的基函数,而不是正弦波信号。第二件事是,即使你在处理正弦波信号,我们也只是。
将它们放置在等距空间中,你基本上是在将整个频率轴划分为等距的 bins,每个 bin 负责一个特定的正弦波。所以这就是传统傅里叶表示法,用于表示任何信号。
我们在处理谱图时,实际上所有这些信号都是不连续的,这些信号的变化相当大。因此,在我说话时,你可以有一个正方波,在某段时间内然后它变得正弦波状,接着变成其他形式。所以我们真正需要的是一种方式来。
类似于获取输入信号的片段并对这些单独的片段进行傅里叶变换,我故意使用“木片”这个词,但在传统术语中你是在对信号进行窗函数处理。所以在这里你可以看到,你有一个连续信号,你不断对其进行窗函数处理,应用傅里叶变换,得到的基本上是信号的谱图表示。因此,在这里你所看到的基本上是每个切片的信号在进行傅里叶变换后的样子,以及下面的波形。
而你要做的是,对于频谱图表示,你不断堆叠这些傅里叶变换切片的幅度,以这种方式你可以获得音频信号的二维表示,如果你来自视觉背景,实际上你在视觉中所做的所有事情,如果你将它们应用于这些二维频谱表示,效果会很好,并且我会快速展示这些频谱图在常见声音的广泛范围内是如何呈现的。
嗯。是的。🎼,🎼,🎼是的。W。
好的。所以你可以看到,对于频谱图,你的 x 轴有一个时间轴,y 轴有一个频率轴,然后对于你感兴趣的信号,你基本上是在将这些切片组合在一起,不同的声音给你不同的频谱表示,因此这在某种程度上是一个视觉问题,只是在这种傅里叶空间中。
所以可以有不同类型的表示,因此一个方法是你可以直接取这些傅里叶变换的切片,然后进行线性映射,从某种程度上使其更接近人类的听觉,因此你可以有频率的对数而不是常规频率,然后你得到一个恒定的队列表示,这样的优势在于,你可以看到不同频率之间的谐波间距保持一致。因此,如果你在训练卷积滤波器,这就是一个巨大的优势,因为信号的一个成分已经消失,你可以学习这些捕捉到这些恒定傅里叶切片模板的滤波器,你可以有金属滤波器组系数,或者你也可以有原始波形,对于原始波形,我们基本上有两件事情需要记住,一是采样率,所以我们基本上是将连续信号进行处理,然后我们。
细分连续信号,所以其中一个参数是我们采样连续信号的速度。因此,如果你是在电话语音中,这通常是每秒约 16000 或 8000 次,另一件我们要考虑的事情是我们如何划分垂直轴的级别,因此在这种情况下,你可以看到每个点基本上是一个级别,通常人们使用 8 位量化或 16 位量化,因此可以这样想,对于我们听到的每一秒音频,你将有大约 16000 个样本,然后在每个 16000 个样本中,有可能取 0 到 55 之间的一个级别。如果我能将连续音频的问题转化为这种离散空间,那么基本上我就进入了语言建模的领域。
呃。
我将讨论的第一篇论文是如何对原始音频进行生成建模。这类似于使用变换器的 WaveNet,如果你喜欢我正在做的东西,认为这对你有相关性,请引用或者查看二维码。所以我将开始今天演讲的第一个子主题,即什么是 WaveNet,以及我们如何进行原始音频的生成建模。
因此,用一个词来说,你可以把这看作是在这 255 个音频状态上进行语言建模。你可以投入你喜欢的变换模型,比如 Transform Excel 或 GPT,或者你想称之为的任何名字,把这个问题视作试图预测 255 个级别中的一个级别,并根据特定上下文预测下一个级别。
这就是 WaveNet 的作用,模型在连续空间中的概率分布基本上是预测给定部分文本的下一个样本的概率。WaveNet 之所以广受欢迎,是因为它的引用超过 3000 次,并且几乎成为所有语音和音频相关问题的构建模块,比如语音转文本和文本转语音合成。
在互联网语音去噪中,仪器转换的丢包隐蔽技术使得音频的修改成为可能,人们一直在使用 WaveNet 作为构建模块。而原始音频合成一直很困难,因为问题的复杂性。
如果我只是试图合成 10 秒的音频,那么这就相当于我需要对 160,000 个样本进行概率分布预测。而这本身就是个挑战,因为我们的耳朵对细微变化非常敏感。如果我在图像中偏差一个像素,我的眼睛可能不会那么容易注意到那个效果;然而,如果我在音频中偏差几个像素或样本,我们的耳朵会很快捕捉到这个变化。过去人们在原始音频合成方面进行了大量尝试,之前的 WaveNet 和基于变换器的方法之前的状态如 Wave Rronance 和 Sample Rronance 类似是当时的先进模型。我展示了一个 Sample RronN 模型。
模型会根据过去的多个层次来预测接下来会发生什么的概率分布。这项工作是由 Nila 的 Yoa Bnji 完成的,但你可以清楚地看到,如果将这个架构与变换器架构进行对比,它们实际上开始变得非常相似,因为你试图做的是,对于这里的概率分布,你需要识别大量的局部子结构,然后不断重复这一过程,你可以得出平行关系,比如说注意机制也应该做类似的事情。
这就是过去的文献,我们尝试做的就是使用 wavenet 模型,看看变换模型是否能够超过它们,我们的直觉是,它应该能够超越,因为它们在其他领域,如语言建模中表现出色,所以它应该也能在原始波形中做到这一点。我们还尝试看看是否可以规避自动和平方约束。
上下文的条件和我们没有针对特定应用进行探索,我们只是说,好吧,就像在建模行为方面,他们会怎么做?
所以这个数据集就像是现实世界的数据录音,实际上,声音并不重要,因为模型对输入的内容是无关的,设置是完全相同的,你给定一个特定的上下文,我必须预测下一个样本,你用 wavenets 做同样的事情,你用基于变换的模型,比如 GPT,做完全相同的事情,看看它们的表现如何。
我将简要讨论一下 wavength 模型,所以 wavenet 是一种基于卷积的模型,它通过将序列问题视为由卷积模型学习,从而消除了梯度消失问题。他们所做的基本上是有这种扩张层或卷积,这基本上是在每个后续层中跳过一个样本,所以你可以看到,如果我有一个扩张因子为 2,卷积核大小为 2,我会得到这种拓扑结构,在第一层中,我只是结合前两个样本,并在下一层中跳过一个,然后在接下来的层中跳过三个,依此类推,损失仍然是相同的,所以我有这个网络,学习一个潜在空间,然后我有一个交叉分类交叉熵损失,这基本上是要预测下一个样本。
在之前的实验中,我对变换模型做了完全相同的事情,但我必须确保以因果的方式进行,所以我有一些非常类似于 GPT 的东西,在我的注意机制中有因果掩码,我不断重复这个过程,所以你有自注意力机制,然后是前馈层,你只是堆叠这些变换块,看看它们的表现如何。
所以我说,这应该有效。像我们的基本 WaveNet 模型应该表现得更好,因为如果你看拓扑结构,我们在自己定义一个拓扑结构。那么,如果当前的预测 Excel 层依赖于很久以前的样本,而不是第二个样本,第一样本,我们在某种程度上忽视了所有这些拓扑结构,这对于这个特定任务的预测是重要的,而变换器通过自注意机制可以学习到哪些样本是重要的,哪些不是,你可以不断创造性地进行调整,因此这对我们来说是有道理的。
变换层的表现应该远好于波长模型。嗯。我们遇到的第二个问题是我们不能有太多的上下文。例如,注意机制需要存储所有的 n 平方次序数据,在这种情况下,如果我以 100 毫秒的速度存储数据,那么我大约有 1600 个样本,我需要在多个层上存储 1600 x 1600 的数据,这在内存限制方面会成为一个巨大的问题。所以我们说,假设我们将上下文本身作为潜在编码来使用,以便在每一层有更好的表示。我们不能有巨大且复杂的注意矩阵,因此我们决定通过条件处理和 CNN 层来理解潜在编码,因此你仍然有注意机制或者仅仅是过去的上下文。
在每一个样本中,我们应该考虑在构建上下文时下一个样本应该是什么,如果你想想,这就像在钢琴上弹奏五六个音符,那么我可以确定哪些音符会在一定程度上被弹奏,如果我只是加上一个 CNN 层。因此,我将使用这些信息以及我的传递学习,然后我会对其进行条件处理,并用它来预测下一个样本。
因此,在评估标准方面,我们并没有关注负似然得分。我们只是关注我们的预测任务效果如何,所以我们采用了由 DeepMind 实现的堆叠 WaveNet,并观察了它在他们基准测试下的表现,甚至是更大的堆叠 WaveNet。
然后我们开始增加变压器的复杂性,并开始观察我们在条件作用于普通变压器架构方面提出的建议效果如何。我们并没有寻找特定应用的问题,也就是说,我们没有关注像文本到语音合成或语音识别这样的感知任务的表现,我们只是看如果我们试图使用交叉熵损失来建模,那么在相同模型和相同损失函数下,它们在类似参数上的表现如何?
这是如何利用变压器进行生成建模的第一个子块。
哦。对于第二个问题,我会快速讨论一下。我们如何利用变压器进行语言建模,这个概念现在变得相当时尚,这项工作是由朱莉亚·史密斯在 2020 年完成的,目标是我们能否以某种方式用连续音频序列进行语言建模,我将简要提及这一部分。
哦。因此,这与解决声学场景理解有关。如果我得到一段音频,我想理解其中的内容,如果我们能够很好地做到这一点,那么在某种程度上,我们可以做很多很酷的应用,例如,如果你考虑自动驾驶汽车,VMmo已经开始在自动驾驶汽车中加入麦克风,原因是如果有救护车来了,或者有其他声音。
文件卡车来了,那个声音会在李尔斯或他们的传感器之前被捕捉到,因此他们想了解这一点并根据此采取行动。苹果在 COVID 期间对他们的 Apple Watch 进行了洗手检测,因为如果你能检测到某人洗手,那么你可以在某种程度上告诉人们“哦,你需要洗手 20 秒”,这可以作为一个很酷的应用。
它可以用于音乐推荐,因此Spotify和YouTube 音乐会推荐非常适合你正在听的、内容相似的好歌,这也可以带来很酷的应用,比如有人尝试从音频中检测抑郁,或者我可以检测我是否在咳嗽或打喷嚏,这些都是不错的应用。
医疗设备的医疗应用,可以与医生提供的当前诊断结合使用。所以我们基本上的问题是,如何在连续音频领域进行语言建模,其次,如何训练模型或者我们应该如何处理这个问题?
所以,这种配方如今变得非常流行,关于你如何处理这个问题,起初是由OpenAI提出的,并且在某种程度上深度学习也提出了类似的VQV 模型,但事实证明变压器现在更喜欢在离散空间中操作,它们所做的就是。
只要你的表示是离散的,它们就非常擅长建模接下来会发生什么。因此,人们提出的解决方案是,你可以以某种方式使用你喜欢的嵌入,你可以使用 VQ-VAE 嵌入,或者你可以使用 Wave2Vec,或者在视频方面,你可以使用经典的 VGG 或 ResNet 嵌入,你可以对它应用 K 均值聚类,K 均值聚类会给你离散代码,你可以用这些离散代码进行语言建模。
你预测下一个代码,从某种意义上说,如果你这样做,那么你就是在音频上进行语言建模。如果你需要返回到音频,那么你已经看到了它的 WaveNet,你可以对 WaveNet 模型进行条件处理以获得连续输出,因此你可以使用这些代码来回到音频,这与 Jukebox 和 OpenAI 的做法类似。呃。我会快速提到一下向量量化是什么。
说实话,这是最少被利用的算法之一,它的基本功能是为连续的组装空间提供离散代码。那么它是如何做到的呢?你基本上有一个嵌入空间,假设在二维,这里你定义了想要放置每个集群的数量,你运行 K 均值,你肯定会得到这些补丁,这些补丁中嵌入了所有的内容。那么连续嵌入的代表性嵌入是什么?你可以拿所有这些补丁,你可以给它们编号,或者你可以列出它们。因此在这种情况下,你可能会有 25 个数字或 20 个数字,这些数字在某种程度上是从连续嵌入映射到离散标记。
这里是另一个例子。所以在我们的案例中,我们查找了声谱图的补丁,这基本上就像是非常小的时间段补丁,然后在频率轴上共享。你把这些补丁拿出来,学习嵌入表示,在我们的案例中,它只是像三层的全连接自编码器,带有三层解码器,中间有一个瓶颈层,这个瓶颈层基本上类似于像在 64 维空间或 120 维空间中的这种图示。你提取那些瓶颈回声,然后进行 K 均值聚类,从某种意义上说,你可以找到。
对于连续嵌入空间甚至连续信号的离散代码,由于我们知道变压器喜欢在离散空间中操作,我们现在可以应用语言建模,你可以看看你能做什么。
在我们的案例中,我们就有非常简单的三层全连接自编码器,补丁的数量很重要,因为如果你有太多的代码,那么你就是在扔各种噪声。我会举一个例子。
为什么代码数量重要,通过一些例子来看,如果你有两个很少的代码,实际上你在做的是移除所有相关的信息,并且只是将它们平均化。嗯。我先从这个想法开始,这个想法最初是由 Juke B 提出的,他为音乐做了这个。所以你以稍微不同的方式做完全相同的事情,也就是说,好的,你不能为较长的序列学习代码。
所以你知道,以某种方式学习的序列只是缓慢移动,并且仅查看一定量的音频,所以我们在这些离散级别中编码这些内容,这些基本上就像所有这些基本上都是代码。因此,在每个点上,我定义,比如说这个音频可能有代码编号 55,而在下一个级别,它可能有代码编号 2,在最上面可能有代码编号 2000。
所以在某种程度上,我像是在离散化整个代码。现在我做的是,我选择我最喜欢的变换模型,可能是因果或自回归的,然后我说,好的,给定这些代码,尝试预测接下来会出现什么代码,变换器确实可以做到这一点。因此,一旦我生成了未来的代码,我可以说,好的,这个问题现在有点像文本到语音的问题,因为我有这些离散代码,文本到语音在某种程度上是从离散字母到连续音频,所以我会投入像 WaveNet 这样的高级技术,然后我就会得到返回的代码,并生成音频。因此,这在某种程度上是我描述的,他们采用连续音频,拥有这些压缩代码,并使用 CNN 进行编码,在这种情况下,方法并不重要,你可以投入像 EmBedding 或潜在表示这样的高级技术。
在这些连续代码上,你生成的模式就像是未来将要发生的事情,然后使用先进的 WaveNet 进行解码。
所以他们在音乐合成中做的就是这样,我们说这很好,可以生成大量音乐。但这些球能用于生成什么呢?就像是能否让语言模型学习到能封装我们输入信号的良好表示。所以在这种情况下,我们尝试的是类似的想法,但不是做端到端学习的编码,我们只应用了普通的 K 均值聚类,类似于我之前描述的,我们在谱图块上进行操作,因此你获取这些音频的谱图,然后把它们分成非常小的块,为每个块学习自编码器的编码,进行均值聚类。在这种情况下,比如我正在学习 16 个编码,以 16 个编码表示连续音频,有一个变压器可能预测下一个编码,如果我继续获取一些数据。
在这个线性层中,我应该封装重要的或什么内容。
这是过去发生的事情的一个很好的总结。
呃。所以这就是我们尝试这个的直觉。
正如我所解释的,编码数量起着非常重要的作用。你可以看到这里这只是两个钢琴音符相继切换。如果我只有 16 个编码,它就只有一条编码,一个编码分配给所有这些,而如果我分配更多编码,它就变成了一种细致的预测,我实际上能够获取到每个音符。
最近,Facebook 也表示,他们对整体的说法有了不同的名称,可以称之为文本类 NLP,实际上在某种意义上可以说,你可以在没有文本的情况下进行 NLP,理念非常相似,你有一个编码器,与 OpenAI 使用的完全相似,你有 VQ 波到 V,或者你想做的任何事情,都可以对其应用 K 均值聚类,我们将语言模型应用于此,解码器不是 VNet,而是类似于文本到语音的不同版本,像是 Toptro。因此,如你所见,这些都是同一酒但瓶子不同,但核心理念几乎完全相同。
这就像创造了一个巨大的优势,哦,这将改变 LPN,但这与过去人们所做的非常相似。
我已经解释了这是什么,所以在我们的案例中,我们只是尝试预测下一步会发生什么,给定前文上下文,并使用这种表示法,类似于每一个短期学习或零短期学习的基于方法。
我还解释了为什么代码的数量很重要,如果太少,你就扔掉了很多信息;如果太多,它就不再对噪声稳健。
哦。所以这是我们的设置,在我跳进去之前,我应该补充一个我从 DeepM 的一位著名研究人员那里看到的推文,基本上很多时候提高数字非常简单,你知道。比如我可以不在论文中提供这些细节,这实际上在提高性能方面有很大帮助,有时不被考虑。
实际模型所包含的或模型所贡献的,与这些训练技巧实际包含的东西相比,对于大多数这些方法,我们尝试保持几乎完全相同的方法。没有数据增强,没有华丽的标签平滑或权重的移动平均或衰减,无论如何,你只是有类似的基础配方来看看我们的表现如何。
在这种情况下,目标是评估我们的模型与纯监督方法相比表现如何,以及与类似的无监督方法相比表现如何。在第一个案例中,模型及其所有权重访问所有标签,这被显示为 VGD 监督,基本上是你获取音频理解数据集,并查看你的准确性指标表现如何。这是第一个;在第二个中,我们应用了 Jeff In 提出的 Simclair,你可以对相同输入进行多种增强处理,可以去除补丁、模糊信号、翻转信号,你从最后一层学习嵌入,而不访问标签,然后仅使用线性头来预测发生了什么,使用这种方法我们得到了 55%的准确率。
然后尝试预测内部发生了什么。通过这些,我们得到了 60%的准确率。尽管结果并不好,但事实上神经网络实际上在处理大量数据时非常出色,因此在纯监督和纯无监督之间仍有 10%的差距,但随着大量数据的投入,这种情况会改善,因为它没有任何标签的访问权限。这是分析师 Nelson 和 Morgan 在伯克利的著名论文,他们早在 1999 年就展示了原因。
像大小这种因素对于深度神经网络和数据点数量很重要,因此随着数据集和参数大小的不断增加,它们的错误率越来越低,这在任何数据集中都是如此,这就是无监督学习令人兴奋的原因。
所以这是一个关于如何进行语言建模和无监督学习在音频连续信号上的一种方法风味。
对于第三个上图,我只想快速提及。与您在视觉变换器中看到的非常相似的想法,但有一个警告:我们如何使用某种信号处理来进一步提高这些性能?
基本方法仍然与您在视觉变换器中看到的完全相同。您有一个感兴趣的信号,您想在这里对其进行分类,它们是原始波形而不是图像。目标是预测里面有什么,对吧?我们也没有任何结论,没有之前使用的其他技巧。
我们所需要做的就是,他们可以将我们转变,解决这个特定的问题。
因此,数据集和整个设置仍然是相同的,没有数据增强,也没有其他这些技巧,您会获得 40,000 个片段用于训练,10,000 个用于验证。我们的工作是尽可能准确地预测音频中存在的内容,这个问题与您听到的声音和您看到的视频非常相似,给定一个补丁,您必须预测给定的频谱图补丁内部的内容。
呃。
我们在某种意义上比简单的变换模型更进一步,尝试查看某种层次结构是否能以任何方式帮助我们。因此,我们在中间变换嵌入上使用了小波分解,那么什么是小波分解呢?
用非常简单的术语来说,这就像是将中间嵌入分解成的方式。在某种意义上,我们将这些嵌入的高速公路分成一些移动得很慢的嵌入和一些移动得很快的嵌入,还有一些嵌入的保留速度恰好与原始信号相同。这一点很重要,因为你可以想到,在每一个中间状态中,你都在学习模型中的某种层次结构。因此,如果我查看我们在小波分解前后的工作,比如你在时间轴上有这个,而在嵌入大小上有这个,整个补丁是你所说的变压器最后一层的输出。那么我现在说的是,好吧,我只是。
从这里映射到我感兴趣的映射,使用波长分解,其中对于一半的样本,我刚刚创建了与变换模型学习的完全相同的嵌入,在后半部分我会开始每次组合两个,所以在某种程度上,我正在学习这种类似于树结构的东西,在变换器嵌入的单层中,对于现在使用的波长或 B 函数,我简单地进行了平均,所以假设在所有嵌入层之间,我只需要有一个完全不动的嵌入,代表存在的任何东西。
在整个潜在空间的 n 层中,在接下来的层中,我会每次使用两个,然后每次使用四个。直到我达到与之前相同的精确分辨率。进行这个操作不会增加任何参数,你只是在定义你的基函数是什么,或者在这种情况下,波长函数是什么,这是一个硬波长函数,我开始将它们组合在一起,并且我在每一层的变换器中都学习到了一种层次结构。
与不使用它们并且没有额外参数的情况下相比,这显著改善了我们的性能。我稍后会提到结果,所以这就是整个方法的样子,你有一个前端,前端基本上是 2000 个神经元的一层,后面跟着 64 个神经元的稠密层,目的是确认与中间变换器读取一致。
假设对于变换器,我定义的批次大小为 64,那么这是我映射到的维度,所以我从宽带形式开始,将其分成非常小的补丁,类似于你在视觉变换器中所做的,我将有一层 2000 个神经元,后面接着一个 64 个神经元的稠密层,希望第一层能够像一个傅里叶 B 函数一样学习,这应该能根据我的学习进行调整。之后我一直重复这个过程,我没有分类头或其他东西。
然后添加多个变换器堆栈。我有两种适应的方法。我可以对这些中间嵌入进行时间上的平均池化,因为这个想法与我们在经典视觉中所做的非常相似,每个嵌入在后续层中都在观察更广泛的输出,或者我可以进行分解,所以我把所有这些嵌入取出并定义这些高速公路,其中一些嵌入移动得很快。
有些模型运行非常慢,有些则保持与变换器学习的相同分辨率。然后我不断重复这个过程,我有一个稠密层,我有我的 Softmax 或 Sigmoid,无论我的分类头是什么,所以这就是这种方法的样子。我们将其与所有传统的基于视觉的架构进行了比较。
所以基于视觉的模型表现非常好,在理解音频方面也表现相似。因此,我们在平均精度等方面比较了所有这些模型。我们发现即使是最小的变换器模型也超越了所有最先进的 CNN 模型。
这非常好,所以我们开始提升。好吧,更大的模型应该继续改善性能,同时多尺度模型和池化层也进一步提升了性能,这让我们感到惊讶,因为参数数量非常少。这些架构非常小,但它们却超越了像 Densenet 这样拥有数百万参数的大型模型。
所以之后我们说,我将快速总结,之后我们说,好吧。这看起来很酷,变换器的第一层实际学习了什么吗?
为了绘制这个图,我们说好吧,如果你进行经典的傅里叶变换。那么如果这个轴类似于频率,这个轴是滤波器的数量,而这个轴是频率。那么在某种程度上,它应该连接所有点成一条直线,这类似于 50 中的点数,所以我在这里定义多少点。如果我在这里定义 2000 个点,那么我将有大约 2048 个从低频到最高频的正弦 B 函数。
我们说好吧,我们将做完全相同的事情,但现在加上滤波器,所以我们在 y 轴上有频率,在 X 轴上有点数,如果这是经典的傅里叶变换,那么它应该连接成一条直线,但我们所做的是,我们取出前端,通过变换器学习的,进行傅里叶变换,并根据其中心频率解决,即它最活跃的频率,然后不断堆叠它们。当我们这样做时,我们看到我们正在学习一种不同的时间频率表示,这对于预测问题是特定的。如果我试图理解音频内容,我学习的表示与傅里叶变换非常不同,它应该是一条直线,而更像是这样的卷曲指数线。如果我做类似多音调音高估计的事情。
我学习了一种非常不同的前端,它适应于这个特定问题,因此对我们来说这非常令人兴奋,因为在某种程度上,让计算机根据特定问题调整其“耳朵”是个非常酷的想法。第二件事是我们实际上观察了每个滤波器的作用,这基本上就像单个切片一样,所以这就是我们所学习的前端神经元,我们取出每个神经元并进行绘图。为此,我们基本上采用其傅里叶变换,然后根据频率中心进行分类。当我们观察前端神经元所学习的内容时,我们发现它学习的属性与传统信号处理非常相似,因此你会看到像一个起始检测器在这里学习窗口函数。
拥有一个最佳的时间频率表示内核,许多人在信号处理中使用,这类似于汉明窗或悬挂窗,我们正在学习这些纯正的正弦波,它们负责激活特定频率,因此你可以看到它的丰富性,与固定的纯正弦波 PC 功能相比。
这就是我们所做的,然后分享最终的想法。我将总结说,变换器在各个领域的 AI 研究中正证明是重大的进步。而且,看起来他们现在正在解决一切,希望这不是终点,我们应该关注可能会改变和产生影响的东西,这超出了变换器的贡献。谁知道接下来会发生什么呢?是的。
所以我将总结一下,并乐意回答问题。谢谢 Praique,这是一次非常好的演讲,你提供了一些关于变换器在音频案例中如何工作的深刻见解,感谢你的演讲,现在我邀请班级的学生提问,让我停止录音。
斯坦福 GPT/Transformer 原理介绍(中英文双字幕)- P13:13.大型语言模型的涌现能力和扩展 - life_code - BV1X84y1Q7wV
好的,那么我要谈论的第一篇论文是关于大型语言模型的涌现能力,这篇论文特别酷。我认为,因为我们从谷歌、Deep Mind 和斯坦福得到了人们的参与,你可能会认识 Percy、Tatsu 或 Riishhi。
我的意思是,我们让人们在为什么要扩展和涌现能力方面达成了一种美好的框架。因此,我们在整个语言模型中看到的一件事是,随着规模的扩大,你确实会得到这些可预测的收益。
所以这里是你知道的经典 Kaplan 等人的论文,你可以看到,如果你扩展语言模型的规模,无论是计算资源、数据集大小还是参数数量,你会发现测试集上的损失实际上是可预测的。我不知道你是否在分享屏幕,所以在 Zoom 上的人可能看不到幻灯片。好吧,这些都没问题。
O。我想我要再说一次,因为我们在语言模型中已经看到过。如果你扩展语言模型的规模,无论是计算资源、数据集大小还是参数数量,你都可以看到测试损失有一种可预测的改善。嗯。现在,关于涌现的讨论实际上是关于一些不可预测的事物。
如果只看较小的语言模型,那么涌现在更广泛的科学文献中被描述为一种从数量上的变化而产生的质的变化,它的起源可以追溯到一位诺贝尔奖获得者的科学文章,称为“更多的不同”。
我真的很喜欢 Jacob Steinart 的这篇文章,他在这里描述了涌现,并举了几个很好的例子。例如,他说对于铀来说,如果只有一点点铀,没有什么特别的事情发生;但如果密集地影响到足够多的铀,你会得到核反应。还有 DNA 的例子,例如,如果只有钙这样的小分子。
你不能有意义地编码有用的信息,但是对于像 DNA 这样的更大模型,你可以编码基因组。因此,对于这项特定工作,我们使用了大型语言模型特别的涌现能力定义。因此,我们说,如果某种能力在较小的模型中不存在,那么它就是涌现的。
但是它存在于更大的模型中。这里的一个自然问题是,如何衡量语言模型的大小或规模,传统上有三个规模的维度,即训练时的计算资源、用于训练语言模型的计算量。
模型参数的数量就像是语言模型的大小,以及模型所训练的数据集的大小。这些图中的很多将使用训练的浮点运算数量或模型参数的数量。原因是对于不同规模的模型,训练数据集的大小通常是固定的,而训练的浮点运算数量只是数据集大小乘以模型参数。对于大多数语言模型,你可以从训练的浮点运算数量或模型参数数量得到类似的图。
很好,所以第一种涌现类型,是的,我继续。きくだ。对我来说,这似乎很不错,测量规模相对简单,而不是确定什么是合格的。你发现好吧。就是。哪里。好的,当然。所以是的,举个例子。我将在这里给出一个例子,实际上是下一张幻灯片。
基本上,我们与语言模型交互的一种方式叫做 fu shot 提示,其工作方式是你知道语言模型是一个非常好的下一个词预测器。当你给模型一个例子,然后询问它一个未见过的电影评论时。
然后你会问,输出是什么。在这里,语言模型可以说“积极”,因为它理解如何利用评论中的上下文来给出下一个标记。我们用来判断是否具备能力的定义基本上是几个镜头提示的任务。
例如,情感分析,对于小模型来说,如果它的准确率是随机的,那么它是涌现的;但对于大模型来说,则高于随机准确率。这样说有道理吗?基本上,如果模型的表现没有比随机好,那么我们就说它没有能力去执行这个特定的任务。
我在这里给出几个例子。嗯。这里是我们看待涌现图的典型方式。基本上,每个不同的图都是一个不同的任务,我很快会举几个例子。但是你阅读图表的方式是,X 轴是训练的浮点运算数量或模型规模,而 Y 轴则是准确率或模型在执行任务时的表现。
现在,我们有来自 OpenAI、Google 和 DeepMind 的不同语言模型,每个点代表一个不同的语言模型,而不是一个在训练过程中变化的语言模型。
你会看到,对于非常小的语言模型,性能基本上接近随机,或者说并没有比随机表现得更好。而一旦超过某个阈值,你会发现性能突然显著高于随机,这就是我们所称的涌现。因此,如果你要从小语言模型推断这些线。
你可能会预测它永远不会比随机更好,因为它只是一个平坦的线条。但有趣的现象是,当你超过某个阈值时,你实际上会看到这种涌现现象,模型的表现远远好于随机。所以让我举一些具体的例子。这里是一个任务。
它基本上是一个称为多任务自然语言理解(multitask NLU 或 MLLU)的基准,基本上它是一堆测试问题,从高中一直到专业水平的考试。它的工作方式是,语言模型被给定,例如,这里有一个高中数学例题,然后对于一个未见过的问题,它必须给出答案。
然后你可以在右侧的图表中看到,对于模型规模,如果你达到大约10²²
的训练浮点运算量,你在这个任务上的准确率实际上并没有比随机好,但如果你扩展到10²⁴
的训练浮点运算量,那么你会看到所有三个模型的表现都远超随机准确率。是的。用于训练的数据规模大致相似吗?还是因为这些模型是用不同的数据训练的?
是的,我认为这些模型的规模在一个数量级之内。是的。而且每一个单独的轨道都是相同的数据,是的,数据是固定的,除了 Chinchilla。Chinchilla 对更大的模型使用了更多数据,但我相信这里其他所有模型的数据量都是相同的。是的,这里只是另一个例子来说明。
更具体地展示一下,这是一项来自大基准测试的任务,顺便提一下,大基准测试有大约 200 个基准,基本上是一个众包的基准集,我建议你在进行大量工作时查看一下。
基本上,这个任务是语言模型必须处理一个英文句子。然后给出国际音标的音译,或者说是 IPA 音译。基本上就是如何发音。对于这个任务,评估指标实际上是蓝色(BLEU)或者类似于 N-gram 重叠的指标。
你会看到一个类似的现象,即当你增加语言模型的规模时,起初是平坦的,随后突然间提升超过随机水平。嗯。对。所以我会谈谈我听到的另一个有趣的结果,这就是为什么它在出现。这是我们几个月前发布的一份技术报告,基本上这里有一个非常有趣的奖项,或者说是一次性奖项。
在语言模型中,Anthropics 是一个创业公司,基本上设立了这个奖项,如果人们能提出一个任务,随着语言模型规模的增加,任务的表现反而会下降,那么你就能获得一笔钱。所以实际上有很多提交,以下是一个示例任务,他们发现随着语言模型规模的增加,表现确实会下降。这个任务是让你重复我的句子,输入是“所有闪光的东西并不是金子”,输出是模型必须准确地说出“金子”。
嗯。发生的情况是对于小型语言模型,它不知道短语“所有闪光的东西并不是金子”。所以它只是复制输入,实际上获得了 100%的正确率。但是对于中型语言模型,你会看到表现实际上会下降,因为中型语言模型知道短语“所有闪光的东西并不是金子”,然后它说金子。
其实这并不是任务要求它做的事情。是的,有人问你能否给出 10 的 24 次方的物理估计,可能是训练时间或数量。是的,我认为 10 的 24 次方浮点运算大约是,在谷歌我们使用 TU,一个 TU 的集群。
我认为这相当于大约 4000 个 A100s。10 的 24 次方浮点运算大约需要两个集群运行六周左右。所以为了进行预训练需要大量的计算。诶。我不知道。但是你们还记得在化学课上有过摩尔的概念吗?
然后大约是 10 的 23 次方,你的老师可能会说,哦,别去想这个数字有多大。这大约是这些模型在预训练中需要的浮点运算的数量。好的,太好了,所以基本上中等大小的语言模型实际上会表现得更差。哦,是的,你还有其他问题吗,太好了。
😊,这个奖项是我认为的第三名或类似的。很好的问题。但这个任务,因为我最初的看法是,哦,你可以在评估上放一个负分。你是什么意思?翻转负面评估,这一切都取决于哪个评估?是的。
为了衡量你的任务完成情况,就像是这个测量非常稀疏,只有在你完成时才能获得积分。是的,很多事情都是因为你不会完美地完成。真的优化了很长时间。或者说如果你参加考试,然后用负号来评估那样的话,不是吗?是的,没错。就像是这样的东西。是的,我的意思是,他们对于这个事情。
他们考虑到所有的事情,你不能仅仅说任务应该在某些事情上表现不佳,任务必须是有意义的。而且我想你关于信用时间或评估指标如何运作的观点确实很好,所以我想如果你知道,我猜这个论点是这样的。
如果你分配部分信用,性能可能看起来并不突现。但我们有一堆示例可以稍后展示,即使你使用部分信用指标,你仍然会看到同类型的突现,因此这并不是基于评估指标不分配部分信用的纯现象。
可能有一些任务,如果使用中等规模的语言模型,性能开始下降。但如果你一直扩展到我们在谷歌公开的最大模型 Palm,你会发现这个语言模型实际上能够返回并正确执行任务,因为大型语言模型也知道“所有发光的东西并非金子”,它还理解“重复我的感官”,所以能够在这个任务上获得 100%的准确率,这也是一种不同类型的突现。
在论文中我们讨论的另一类突现是突现提示技术。基本上,除了未来提示,还有其他与语言模型互动的方式,可以被视为突现。问题是,所有模型是否经历了构建微调?
这些模型在这个图上都没有进行一次指令微调。很好,是的。所以,与语言模型互动的一种方式是基本上使用一种称为 RHF 的技术来找到模型。基本上,它的工作原理是你有这些数据,人与人之间会评估他们偏好的输出类型。然后模型在强化学习中进行训练,以优化人类的偏好。
这个图展示的是,如果你对模型进行 RH 微调,模型在另一个零样本任务上的性能实际上会对小模型变差。你可以看到蓝线在橙线之上,蓝线是基线,橙线是 RHF。如果你对大型模型进行同样的操作。
然后你会看到,实际上通过进行 RLHI,性能有了正向增量。这是一个有趣的事情,因为某种技术可能仅在你尝试大型语言模型时才有效。如果你只在小型语言模型上尝试,很难得出它不会帮助性能的结论。然后,稍后。
我将讨论无需提示的链作为另一种突现提示。因此,这里是我用来思考突现作为框架的一个大致图示,X 轴是语言模型的规模,Y 轴是某种想象的东西,你知道的。
一系列语言模型可以做的事情。然后基本上你可以选择某个随机点,比如说在语言模型中 1000 亿参数,将会有某些能力。因此,你可以看到,随着语言模型规模的增加,模型可以完成的任务数量也在增加,然后你可以看到,有些任务是超过 1000 亿参数的模型可以做到的。
但低于 1000 亿参数的模型无法做到这些,我们称之为涌现能力。抱歉。问题是颜色在哪里。哦,它只是突出显示,比如深蓝色是像小型语言模型无法完成的任务。这样说有道理吗?是的。然后右侧,虚线,上方的区域。哦。
这仅意味着我们尚未能够解决的任务。而我很好奇,你认为在 1000 亿规模下,那些白色区域的任务是不可解决的吗?
你认为更好的模型。特定的训练数据会让我们达到 1000 亿规模吗?是的,我绝对认为这不是固定的,我会很快给一个例子,但这不是规则。你知道,不是说你必须拥有 1000 亿参数才能完成某项任务。这只是我们观察到的模型阈值,而我确实认为,通过更好的训练数据、架构和算法,我们可能会超越这个阈值。
嗯。是的,正如 Rland 刚刚提到的,涌现的一个例子可以是更好的数据。所以并不是所有都是规模,我会稍微给点细微差别。对于这个任务来说,它只是 Big Ben 基准中的一个任务。你可以看到,像 Lambda 这样的谷歌模型和 GPT3。
你实际上不会从扩展到 137 或 175 亿参数中获得涌现。但当你使用不同的语言模型 Palm 时,它在比 Lambda 和 GT3 更好的数据上训练,你实际上可以获得这种涌现能力,即使是这里显示的 62 亿参数的小型语言模型。
将库存更好的模型视为更好的数据,或者更好。Ttro 掩蔽,你知道的。选择或最有趣的。是的,挑战在于这是一个很好的问题。比如,Palm 和 Lambda 之间有很多差异。我们无法以任何受控方式消除它们,因为预训练的成本。
但我们的假设是,P 在更好的数据上训练,这解释了 Palm 和 Lambda 之间的许多差异。像是更小的模型也有可能。是的,这个。是的,这是个好问题,所以我想即使在这里,你也可以看看,比如说。
Palm 80 亿模型。像是那个点。你可以消融它,稍微高一点,但在那个点上还不是涌现。所以,对于这特定任务来说,效果很难判断。是的。
Zoom 上有个问题,Paul 是否有两个不同的版本,如果没有,为什么有两条线?哦,所以我认为这两条线,一个可能是三次示例,另一个可能是零次示例之类的。因此它只是指我们在使用语言模型时是否有示例。
嗯,太好了。我会谈论一个小的消融实验,基本上展示了这一点。这是一个玩具任务的消融实验,语言模型需要知道在英语中,复数主语要用复数动词,单数主语要用单数动词。我们在这里做的就是从头开始训练这些小的 BRT 模型,然后我们固定了一些动词在训练数据集中的频率。
基本上是在说,好的,看到某个动词在数据中更频繁的效果是什么?
在这个图中,x 轴类似于动词的频率,y 轴是错误率,你基本上看到的是,如果你有更多的领域内数据,也就是说如果模型看到动词的次数更多,它执行任务的效果会好得多,这实际上是高质量数据或与评估任务更相关的数据可以产生巨大差异的一个例子。
即使你固定了计算、模型大小和其他数据。是的,Zoom 上有人问,是否有办法将新出现的能力缩小到更小的模型以供更大的教师使用。是的,我想可以。因此,更大的教师模型基本上可以用来生成数据,然后如果你在数据上对更小的模型进行微调。
很可能你能够在更小的模型中获得出现的能力,我也会谈论这个例子的,等我看看。哦,实际上,下一张幻灯片。一旦你知道想要什么行为,就可以在更小的模型中诱导出期望的行为。
例如,这里是来自 thestructGPT 论文的插图。基本上,这里期望的行为是遵循指令。你可以看到有多个模型,左侧是这些使用 RLHF 训练的小模型,它们的表现实际上比使用较弱技术训练的大模型要好。因此,重点是,如果你知道你想要某种行为,这种行为曾在更大的模型中以涌现的方式出现,你可以找到一种专门微调该行为并在更小的模型中诱导该行为的方法。
我想其中一个局限性是,除非你知道你想要的所有行为,否则你真的无法获得这种自然出现的行为。是的,另一个讨论点是,关于“什么是出现的正确 x 轴”的问题,所以现在我们主要讨论模型参数和训练的浮点数,但我想如果你问 Deepmind 的人,他们会如何看待这个问题。
你将会得到这样一种论点,模型参数和训练计算量实际上只是衡量模型质量的一个代理,模型的好坏可以通过困惑度或它在某些开发集上的表现来真正衡量,比如 WikiTex 103。
所以基本上,你也可以通过困惑度来衡量。这里是 WikiTex 困惑度,然后你可以看到在下游任务中,随着困惑度的改善,存在一个阈值,使你能够在下游任务上表现得更好。
至少目前,困惑度和训练计算之间有很强的相关性,所以你可以看到这两条线是非常相似的。基本上,我认为在未来,如果我们有更好而且更小的模型,训练在更好的数据和更好的算法上。
然后,或许 WikiText 的复杂性可以展示出与使用其他指标不同的图表。所以 WikiTex 基本上是我认为是维基百科的一个子集。而困惑度是衡量你在数据集中预测下一个单词的能力。因此,如果你在这个特定评估集上非常擅长建模下一个单词。
这在某种程度上是衡量你理解语言的能力。明白了吗?但是这样不是有点强迫吗?哦,这是一个保留的测试集。对。好。嗯。最后,我认为关于出现的事情是非常令人兴奋的,不仅仅是我们所谈论的技术性出现。
但是,AI 社区在看待规模和如何使用语言模型方面,社会学上发生了一些变化。这是一些示例,说明在少量样本场景中,扩大语言模型的规模使你能够超越一个通常在数千个示例上进行微调的任务特定微调语言模型。因此,绿色线是通过微调实现的前状态,而蓝点基本上显示的是如果你使用预训练语言模型进行少量提示。
这意味着语言模型并不是专门训练来完成这个任务的。你往往只需继续扩大语言模型的规模,就可以获得最先进的结果。显然,这里有局限性,你不想只通过扩大规模来获得最先进的结果。但我认为人们的思维方式发生了很大变化,你实际上可以通过扩大语言模型的规模和进行提示获得一些最佳结果。
Zoom 上的问题。有人问,这不是从两到三张幻灯片前的矛盾图吗?那是什么?哪个,这个吗?我确定一般不应该假设他说的是“是”。好的,我们说。我们是否一般假设规模真的会说谎?是的,这是个很好的问题,所以这个图表表明你可以微调,并且可以,这取决于你的具体情况。
任务,但这个图表所说的是。就像。我们并不是说精细调优的小模型在某些任务上表现良好,如果你针对得当。但对于那些更复杂的测试,通常通过扩展规模你能获得更好的结果,因此这些任务可以归入这两个类别,我并不认为这是矛盾的。我想某些任务,确实可以通过扩大模型的规模获得更好的结果,而其他任务。
如果这是一个非常狭窄的领域,而大型语言模型可能没有在那种数据上训练,那么通过精细调整你会获得更好的结果。对。所以这里有一个小总结幻灯片。基本上,涌现能力只能在大型模型中观察到,如果你仅仅通过查看小模型的图表来预测它们的涌现,那么你是无法做到的。我对如何看待这一点也进行了一些反思。
所以涌现实际上是如何看待那些未在预训练中有意构建的新能力的框架,我认为这背后的潜台词非常重要。也就是说,你可以把它看作是一个隐含的论据,说明我们为什么应该不断扩展语言模型,因为这样你会得到那些在其他情况下很难找到的能力。
而围绕这个背景是相当重要的,因为继续扩展这些模型的成本非常高,甚至在一年前,很多人都不相信通过扩大语言模型的规模可以在某些任务上表现更好。
如果你在行业中工作的话,会存在一种有趣的紧张关系,既涉及涌现现象,又涉及许多生产任务。所以涌现是一种任务的普遍现象,当你扩展模型时,成本会很高,但单一模型可以执行很多任务,这在某种程度上是朝着 AGI 的方向发展。
对于许多生产任务,你有一种相反的情况,你知道它是什么任务。例如,翻译成西班牙语,并且你对计算有这些限制,因为你知道翻译时机。例如,你不希望人们等待几秒钟才能获得翻译。而且你也恰好有很多领域内的数据,比如说。
比如,你知道有一百万对英语和西班牙语的句子可以用来训练。这就像是相反的情况,你并不太关心模型的涌现,你可以只用数据训练一个非常小的模型来完成某个任务,而不必消耗大量计算资源。最后一点是,我认为这是一个非常有前途的研究方向,如果有人对研究感兴趣,可以尝试预测未来的涌现能力,而我最近并没有看到太多相关的工作,可能是因为这太困难了,例如。
像你只能为特定任务预测出现,或者预测出现的一种方式可能不是特别普遍,所以我没见过太多关于这一点的研究,但我觉得这是一个相当有前景的研究方向,也许 Anthropic 正在研究这个。
我不知道。好的,很棒,在我继续谈论提示链之前,有什么问题吗?嗯,佢。😊。你先是。系我有呢条都俾见。哪些参数最佳规模来获取类似的属性。显然,这里有许多不同的选择。什么意外的。比如说,Didt G。我想回到那里。这主要是我们测试的内容吗?
然后我们发现哪些扩展的电池给出了结果,或者像那样。嗯。我想说我们并没有非常原则性的方法来扩展这些架构。诶。😊。我不是这方面的专家,但有些内容与能够适配到特定 TPU 上的参数数量有关。但总体上我觉得你在一定程度上要成比例地扩展意图头和嵌入数量,但我认为这是一个开放的研究问题,因为你不能真正对这些预训练进行消融。
你实际上不能对预训练进行消融,想要有任何原则性的方法是困难的,除非一些负责的人工程师说,好的。我认为这就是正确的做法,然后当我们这样做时,它就能正常工作。嗯。
你有没有对这种赌博的渐近行为有任何指示。如果你预期最终会到达某个稳定点,翻转有限但非零的损失,或者它就会一路降到零。嗯,这个问题很好。我觉得。我是说你是说在困惑度上,还是在特定任务上,或者只是一般来说像下一个单词预测。好像这些也是相当普遍的,比较独立于任务,对吧?
这就像是涌现的扩展。嗯,但你知道,如果你取无限参数的极限。那么即使在分析上,也有没有任何意义。嗯。我不知道,如果对于大多数这些任务,准确性是有限的,比如说 100%。所以那里有某种渐近线。
但我想你可能在问更深层的问题是:语言模型是否可以完美地知道如何预测任何给定输入的下一个单词。也许,我的意思是。我想有某种限制。如果我说一个句子,可能有两个可能的下一个单词之类的。
而且你可能无法完美预测。所以我认为这是有一些限制的。但我觉得我们离达到那个限制还很远,仍然有很多未解决的任务表明还有很多提升空间。嗯,如果研究人员有兴趣研究出现,哪个不同规模的模型是公开可用或最佳的研究选择?嗯。
好问题。所以我认为 OpenAI 的 API 有很多语言模型,我们实际上在谷歌也使用得很多,它被用来研究新兴现象,这就是一种方法,实际上很多模型目前是免费的,虽然有限制,但它们是免费的,所以我们也使用它。
我认为还有更小的语言模型,比如说,像 UL2 模型,它大约有 200 亿个参数。但我想你是对的,确实存在这样一个挑战,即小语言模型不会出现很多新兴行为,因此你需要训练。是的,你可能需要现在使用 OpenAI API,或者等待人们训练更大的模型。
我想也有一些新的能力,像你们可能比公开的 OPT 模型更了解这些,但我还没有看到很多实验,嗯。所以我想问的是,是否有可以访问的、参数较低的新兴能力。
我可以进行语音识别。可能会有一些更好的,可能不是像思维链那样,但我听说过一些。是的,确实,我认为在论文中,我们列出了几打将在约 80 亿参数或 600 亿参数左右出现的能力。是的,是的。我们在 Zoom 上有两个问题。第一个问题是,你看到策略了吗。
在较大的技术之间,系统性地研究这些模型,还是基本上大家采取相同的方式。诶。我不会说每个人都采取相同的方法。我认为,作为一个例子,Anthropic 采取了非常以安全为中心的方法,他们对新兴能力非常感兴趣,因为可能会出现一些不希望出现的新兴能力,他们想预测这些情况。我也不知道其他公司发生了什么,除了谷歌。
所以我不能多谈这个。有问题。有哪些任务或能力尚未出现,即使在像 Lada 和 ChatGPT 等模型中?哦,好的,也许我会迅速展示这个。
诶。
有一个很好的列表,在哪里。所以,基本上我们所做的是。在 Big Bench 上有 200 个任务。然后我们基本上对它们进行了分类,所以像这样。
随着 GP3 或 lambda 的平滑增加,新兴能力与 Palm 相关,然后是平坦的。这就像没有模型比随机更好。所以我认为如果你看这些任务,它们仍然应该尚未出现,如果你能让它们合并,那就很有趣。嗯。我认为聊天应该是 T 20 问题。哦,好的,嗯。
这不是超级新的,我认为这大概几个月前的事情。是的,是的。哦,20 个问题,好的。是的。有点意思。是的,我认为。很酷的事情是,你可以看到随着时间的推移,最初可能只有这些是新出现的,当 Po 发布时,你会看到更多的能力出现,然后我猜想在一两年内,这些大多数都会出现,我们需要更严格的基准。是的,还有另一个问题,为什么谷歌没有采取那么多的安全中心。
正如我们在放弃时所说的。有理由相信强大的能力不会出现吗?
是的,我不想代表谷歌回答这个问题。我只能谈谈我自己的看法。但我认为现实是,即使你看看谷歌的研究量,它可能并不专注于大型语言模型领域。但就我们所做的安全研究的数量而言,我认为这比其他公司要多,如果你实际查看发表的论文数量。
我不敢确定,但我认为这是正确的。好的。诶,很好。所以。是的。我会谈谈思维链提示,基本上思维链提示是一种在大型语言模型中进行多步骤推理的方法。是的,我想说看到谷歌的很多人都在研究这个,尤其是看到 Sdar 首席执行官在去年谷歌 IoC 活动中展示这个真的很令人兴奋。嗯。基本上,这个的动机是我们希望语言模型能够处理更复杂的任务。
你知道,比如说,我们知道语言模型可以做简单的任务,比如情感分析或翻译。但更复杂的任务呢,可能甚至需要人类花费一分钟或更多的时间去做?
这里的目标基本上是通过元数据引导它们,例如。我们不仅仅想给出输入和输出的对。我们想提供整个推理过程,让它们模仿。基本上,你可以看到,在标准提示中,你有问题和答案,然后有一个问题,模型给出新的答案。
不幸的是,这是错误的。然后通过思维链提示。你给模型一个问题,然后就像老师让你展示你的思路一样。你给出我们称之为思维链的推理路径,最后给出答案。当模型看到这个未见过的问题时,现在它能够给出推理路径,并且给出正确的最终答案。
我们将这些提示加入到提示中的方式基本上是手动写几个,然后添加到提示中。让我展示一下是如何工作的。这是 Open Air API。基本上。这是非思维链的做法,所以基本上你会有。问题答案。问题答案,问题答案,然后是关于,比如说,食堂问 3 个苹果的新问题。
他们用 20 来做午餐,另外大约六个,问他们有多少个苹果。模型出错了。链式思考唯一的区别是,你在给出最终答案之前提供这些中间推理路径,所以这是一个路径,还有一个推理链。现在模型对于这个未见的问题。
提供整个推理过程,这实际上使模型能够正确回答。我再给一个快速的例子,就是这个。任务就是取单词的最后字母,比尔·盖茨的最后字母,所以 L 来自比尔,S 来自盖茨,然后连接起来,答案应该是 LS。
然后这里模型出错了。答案应该是 N。SK 说。然后如果你进行链式思考,显然这对模型来说变得很简单。它说比尔的最后一个字母是 L,盖茨的最后一个字母是 S,答案是 LS。然后这里它能够得到埃隆·M 的最后一个字母和马斯克的最后一个字母是 K,答案是 N K。
诶。那么,有没有什么不清楚的地方?关于这里发生的事情有问题吗?好的。嗯。基本上我们可以有这些类似的图,其中 X 轴是模型规模,Y 轴是性能。在左侧我们有一个叫做 GSMAK 的数学板问题基准,基本上像是你在小学数学测试中看到的问题。你可以看到蓝点是标准,紫星是链式思考,基本上你会看到,如果你使用足够大的模型,链式思考的表现要好得多。
而且实际上超过了当时的最新技术。一个类似的例子是在一个叫做 Str QA 的基准上。这里的策略基本上是世界知识加常识推理基准。问题可能是你能把篮球藏在一只猫的耳朵里吗?然后模型会说,篮球大约是这个大小。
猫的耳朵那样的尺寸是放不下的,现在在这个基准中你也可以看到,我们可以通过使用链式思考和足够大的语言模型来超过之前的最新技术。因此,我们的一种使用方式是,我们在某个 Big benchch 任务的子集中评估了链式思考。
所以我们创建了一个叫做 Big benchch hard 的子集,基本上它就像是 23 个来自 Big benchch 的挑战性任务,其中没有模型的表现超过平均人类评分者。你提示模型的方式是提供任务描述、问题和选项。
链式思考,然后是测试时间的问题。所以我给几个任务的例子。一个例子是导航,基本上语言模型在这个任务中需要做的就是遵循这些,所以问题是:如果你遵循这些指令,是否返回到起点,向左转,向右转,走五步,走四步,转身,走九步。
然后,跟随可融合样本的模型基本上能够在所有操作之后跟踪状态。最后它会说,我们得到了最终答案。那么,答案是我们是否回到了原始位置,意味着如果它是零,那么答案就是是的。诶。再举个简单的例子,这是一个对人类来说非常简单的任务,基本上是单词排序。
所以有一份单词列表,Burley,Bela,我不会逐一读它们,基本上模型必须按字母顺序对它们进行排序。在这里,模型可以跟随未来的示例,所以你有一个相当复杂的链式思考,模型必须对每个子部分进行排序,最后得出最终答案。
这是正确的。那么这是关于这个 Big Bennch 子集的结果总结。你可以看到我们有两个指标,一个是所有任务的平均表现,另一个是超过平均人类评分者的任务百分比,所以平均人类评分者是 67,最高人类评分者是 94。
然后在之前的结果中,模型的表现很差,大约是 50。这是通过这个子集的构建得出的。然后我们使用 Code Vinci O2。这是开放 AI 模型之一,实际上你可以通过开放 API 免费使用这个模型。基本上,如果你只进行回答提示而不进行链式思考。
然后你在 27 个任务中大约是平均评分者的水平。但是如果你使用链式思考提示,性能会显著提高,能够超过大多数任务中的人类平均水平。然后下面是一个可视化,显示出表现低于人类的任务用红色标出,表现优于人类的任务用蓝色标出。两个问题。伙计,这难道不和 R HF S 相似吗?嘿,是什么相似呢?
我可以改变自己的看法,不。被拳到。嗯。是的,我想这是存在的。我不会称它为相似。像链式思考基本上是你采用一个预训练语言模型,并使用包含中间推理路径的提示技术。RLHF 的工作方式是你有这些额外的数据,你想对模型进行微调,并且有一个偏好模型,预测某个输出的表现如何。某个输出被人类偏好的可能性有多大,然后 RLHF 的作用就是微调语言模型,以便在偏好模型的预测上表现良好。
所以基本上这就是将模型与人类的偏好对齐。有第二个问题吗?やいです。好的,Grace 问,中国是否可以纳入微调,而不是要有一个。是的,简短的回答是可以的。复杂的事情在于你必须有链式思考的中间步骤,这些步骤是相当复杂的。收集这些数据和进行微调可能是成本较高的。最后一个问题。
抱歉,另一位学生问,你认为思维链和提示工程一般只是一个产物,在更大规模、能够更好理解功能的模型面前是否不再必要。是的,这是个好问题,基本上这个问题是关于提示工程将有多短暂。我认为我们会找到答案,但一些初步的直觉是,对于那些易于描述的简单任务,或许有多个选择的大型模型会更能抵抗提示工程,能做的事情就会少一些。
但是我认为随着语言模型变得更强大,使用它们处理更多挑战性任务将会更加普遍,而在这些任务中,你必须明确指出你希望模型做什么。因此,我认为在至少不久的将来,仍会有一些提示工程的空间。
是的,没错,你知道这个一般是怎样的,比如你一个简单的。然后另一个是关于排序单词的。是的,所以我的意思是看到这一点。给出思维链的像是那样的单词。是的,这是个好问题,对于一些任务,如果你已经见过类似的数据和预训练,模型可以做得很好,即使思维链来自另一个任务,例如。
像数学文字问题,你其实不需要数学思维链,因为模型已经知道我怎么做,但像这样的任务,你可能没有见过类似思维链的数据。因此,没有特定任务的示例,你可能在这样的任务上表现不佳,除非手动为其他示例编写。是的。作为这个研究的背后,像我们应该用什么心理模型去尝试呢?你是否把模型当作一个人。
我认为这是否更好,或者是否更像是试图给予更多的计算,以便于。在 deesttiy 回答之前。是的,太好了,我认为我的动机只是考虑你所说的,当人类试图解决这个数学问题时,他们的脑中发生了什么。如果你注意到,至少一些人确实会用自然语言思考,所以如果你多关注一下你的脑中发生了什么,你会发现有时你在用语言思考,而语言模型也能用语言思考,因此这就是让我询问语言模型这样做的动机。
我认为一件事情做得不错的是,这项技术的发展实际上与 palm 的发展相吻合。因此,基本上,拥有 palm 模型使我们能够更好地完成很多任务或更多挑战性任务,利用思维链。
是的。我听到的第一个。我们说这很重要,比如在数据集中这个链思维过程的绝对例子数量。或者这个功能。是主要的显著事物,还是相对数量?
这些示例中的一部分只是一些负面示例,不是很好的推理示例。这些与绝对数量一样重要吗?啊,这第 3。是的,好的问题。所以我想具有挑战性的是,我们实际上无法测量训练集中有多少类似示例。你知道。这很难做到,我认为以前没有人做到过。
所以这更多是一个开放的问题,比如为什么中国 F 思维有效,因为实际上你并没有在训练集中看到类似的数据。是的,我认为这是一个开放的问题,为什么它有效。你的模型是什么?这个意思就是好的。想想像如何。事情。思考语言,然后知识也是这样。但你实际上是如何思考的,就像在那样。
对于模型来说,这是什么情况。我是说,会在特定任务中发生转变。就像一些权重会变得更。好送翻过来扣雨点啊。是的,我并不真的考虑权重中的事情。我想我思考的方式是,给你一个数学问题,让你在半秒内给我答案,这是不公平的。
这基本上就像你与模型所做的事情,当你没有正确执行链思维时,基本上是在提出这个挑战性的问题,而模型没有足够的计算能力来一次性解决它,立即给你下一个答案。
我认为第二件事就是,我会考虑模型在预训练期间学习了一组组合技能,所以也许它并没有真正学习这个特定的导航任务,但它学到了其他东西。对吧?它学会了,比如说如果你走五步,面对这个,也许是的,你应该在这里加五,或者类似的,它学会了如何进行模式匹配。
也许在未来的示例中,它可以匹配推理路径和问题之间的关系,模型可能知道这些小技能,如果你能够以某种巧妙的方式将它们结合在一起,那么你就可以让模型解决更具挑战性的问题。
好的。我们还有多少时间?哦,原来也审看的看。好的,50 好的。好的。嗯,好的。一个判断这个切割的好例子。无论如何,很多不同的答案,都是正确的。是的。好的,很好,如果你有任何问题,请随时问。是的。这是另一个涌现的例子,所以基本上你可以看到这里有三个模型:instructTBT、codex 和 palm,链思维是蓝色,非链 F 思维是灰色,然后你可以看到实际上你必须有足够的模型规模才能让链 F 思维运作良好。
我想这里的直觉是,如果你有一个非常小的模型,模型会不断重复自己,无法给出连贯的回答或找到最终答案。这就是为什么在小模型中使用思维链效果不佳,而对于大模型,显然在多步骤问题中,模型能够以更高的准确性解决任务。
关于思维链的另一个有趣之处是,有些任务根本不会出现突现行为。因此,突现尚未被激发,但如果你使用思维链,可以在较小模型中解锁这种突现性能。
一个例子是多步骤算术,我不知道你是否能做到。你知道,也许我不想说永远,但很难想象一个模型能完成这个。你知道这是问题,然后下一个令牌是正确的,这在一步内解决起来相当困难,但通过思维链,你可以仅通过让模型输出这些中间步骤来达到约 50%的准确率。
哦,对。这是需要重新思考的一件事。我知道变换器肯定能进行加法。而且能接收数字并进行进位。没错,没错,但接下来有个问题,实际上会发生什么,对吧?
我明白这不是一个很大的空间来进行公共保护。所以我的问题是,如何才能真正区分呢?也许有些方法可以区分那些因为空间不足而未出现的任务,或者任务如此之多,以至于没有专门的空间来处理那个任务。
它就是无法做到,即使你愿意。是的,是个好问题。我认为似乎有一些任务根本不适合我们训练语言模型的方式。例如,在语言模型中,我们使用的是令牌,对吧?所以如果你给它,比如令牌四,它实际上并不接收数字四。
它需要一个大约 1000 维的嵌入,或者如果你给它一个单词并要求它反转字母。这是一个超级简单的测试,但我们训练模型的方式实际上并没有关注字母等内容。
所以我认为有一部分任务与我们训练变换器的方式并不完全契合。实际上,如果你真的关注这些任务,你可以用代码之类的方式解决它们。
但我认为这并不是一种内在的东西。是不会出现的,因为这太难了。对了,我们在 Zoom 上也有一个问题,抱歉我忘了提到,有人问你能否重复一下问题,因为他们不总是听得清。哦,好的。就是这个,所以有人问的问题是。
你认为思维链会成为非常先进的 AI 系统的可解释性技术吗?
他们提到有一些研究,叫做“外部化推理监督”,是由 Camera La 做的。它会成为先进 AI 的可解释性技术吗?是的。我是不是要重复这个?抱歉,所以问题是:思维链能成为 AI 的可解释性技术吗?
我认为没有保证会这样。思维链是模型如何最终得出答案的过程。但通常你可以用它来调试,比如为什么模型没有正确回答这个问题,或者我们能做些什么来改善思维链,帮助模型正确回答?
我还没有阅读提到的与人类有关的论文,所以我实际上不知道答案。嗯,好吧。我们这里还有一个有趣的结果是,你实际上可以进行多语言的思维链提示,基本上我们做的就是将这个数学文字问题的基准翻译成 10 种语言,然后我们提示模型在,比如孟加拉语中进行操作,模型基本上要用孟加拉语解决数学问题并给出最终答案。
我认为这很酷的一点是,这种输入是高度不可能的,对吧,孟加拉语在预训练数据中只占 0.01%,而数学文字问题可能是其中更小的一个子集。😊而且有趣的是,模型实际上能相当好地处理这些类型的问题,可能出乎意料地好。所以在我给他们展示这个结果之前,如果你问人们,哦,模型在斯瓦希里语中能多好地处理这些数学问题。
大概有 10%,但实际上即使是非常少数代表性的语言,比如斯瓦希里语、孟加拉语或泰卢固语,模型也能做得出乎意料地好,尽管它们在预训练数据中只占很小的一部分。
对。我的大部分经验都是关于 G 的。但是如果你用不同的语言提问,尽管没有进行显式训练,模型似乎有一种独立于语言的推理能力。是的,推理确实有点有趣,有时它看起来总是用英语进行推理,然后再翻译成其他语言的答案,就像你用英语推理然后再翻译成其他语言。
所以你认为学习语言的结构和学习推理能力是某种程度上分开的,还是大型语言模型会内在地学习该语言内的思维链推理,基于该语言的结构,就像思维在该语言中如何运作。
是的,这是个好问题,我不确定怎么衡量这个。但我确实考虑过,我认为根据这些结果,你在斯瓦希里语中可能没有任何数学问题供模型学习,而且我认为确实有一些语言无关的东西在起作用,模型在推理方面是独立于语言学习的,然后如果需要,它可以用不同的语言表达出来。是的。
但是我没有,我觉得没有人,我认为我们还不知道答案。嗯。是的。所以基本上,有一个经常出现的问题是,为什么扩大规模会改善思维链,其中一种看法是我们可以取一个较小的模型,比如 P 62b,看看从扩展到 5400 亿参数时修复了哪些类型的错误。你可以看到,我们提出的这三类错误中的一些都得到了修复,因此扩展似乎对改善较小模型的不同类型错误有一种普遍的效果。
然后这里是同一个手写的维恩图,以不同的方式表达。所以基本上,你有一些可以通过标准提示完成的任务,所以用蓝色表示,然后思维链提示的目标是增加我们可以执行的任务集。例如。
现在,粉色显示的那些包括数学文字问题、符号推理和具有挑战性的常识推理。是的,问题是,你有没有做过一些实验来弄清楚,像这样的贡献到底有多少是因为当你输入更长的提示时进行更多计算的事实,比如说你通过模型创建多个嵌入来处理多个任务。
只是从模型的角度来看,是的,那样的话想要尝试多大程度上的非思维链提示,比如说开放长度。是的,是的。我们尝试过像 XX,XX X 之类的,但实际上并没有效果。所以我认为这不仅仅与计算有关。我认为还与语言引导模型作为推理的一部分有关。我明白了。
你有没有尝试以更多样的方式描述问题,而不是显示的那样。我知道。这真的是一个超级有趣的问题,所以这就是一种非常有趣的特性和紧急性。是的,你是说以三种不同的方式描述问题,看看这种描述是否更多,而不是逐步明确地描述,看看那样是否有效。是的。我还没有尝试,但如果有效我会感到惊讶。你试过让它这样吗?
我会把答案和解释的推理放进去,是的,这样做效果不佳。是的。但这也取决于任务,所以是的,是的我。这个家伙。似乎确实如此,是的。是的。那些反应像推理,可能就是你的计算。可以想象一下如果这是答案。某种程度上,你知道,就像某种程度上。
就像思维链的一部分非常结构化。它就像。如果结构相同,我们就更随机一些。是的,你可以试试。我会惊讶它是否有效,我认为输出标记对模型来说是相当重要的,是的。好的。诶。那么我们时间怎么样。好的,太好了。那么最后一部分。
我认为这是一种很酷的思维链技巧。基本上。😊,嗯。人们通常会生成一条思维链,然后得出最终答案,但有一个很好的技巧叫做自一致性,你可以用温度采样与模型结合生成许多不同的推理路径和最终答案,然后如果你只对最终答案进行多数投票。
这最终就像是在性能上有了相当大的提升。例如,在 GSMAK 上,你可以看到,这就像 MathW Pro 数据集,性能从 56 提升到了 74,这就是一个相当大的提升。对。是的,这里关于自一致性的平均数有多少哦。
我认为是 40。因此它增加了推理时间的计算成本,但。是的。提高性能可能无法回答这个问题,我很好奇需要绘制多少样本或多少个链才能得到显著结果,链的数量平均下来有什么权衡?
我觉得这要看,抱歉,问题是需要多少个链才能获得性能提升。我认为答案真的取决于数据集,但通常你可以用大约 16 个链获得不错的结果。我想。是的。抱歉。我们有一个问题。温度如何改变模型的工作方式。哦,好吧,问题是温度如何改变模型的工作方式。
基本上,当你使用温度解码时,语言模型可以随机选择一个输出,而不是总是选择概率最高的下一个单词。因此,基本上你会得到这些更随机的输出,它们仍然基于语言模型所学到的内容。
但这只是有点随机。好的。最后,像是自一致性似乎也有可出现性。我想部分原因是思维链正在涌现,因为如果不进行思维链,你的表现不会比随机更好。
但你确实能看到自一致性通过更大模型带来的巨大差异。嗯。🎼太好了。所以我快没时间了。让我稍微谈一下这个,我认为除了纯粹扩大语言模型的规模之外,这在行业中只有一部分人能够做到。
我认为有几个有趣的方向可以探索,一个是更好地提示和表征语言模型的能力,我认为现在我们只是刚刚触及,了解提示语言模型的最佳方式。
还有一些相当不错的应用工作,所以我听说可以使用语言模型来训练治疗师,以帮助创意写作和科学。我认为 chatGT 真的展示了语言模型在这方面的能力。我觉得基准测试也很缺乏,因为我们通常很快就解决了基准测试。例如,Palm 在 Big Bench 的测试中超越了平均水平的人类,你知道,在 Big Bench 发布后的大约一年内,所以我认为我们需要更多的基准测试,这将是一个重要的贡献。
最后一个问题是,我们如何能够利用计算机裂变方法来改善语言模型,使其使用成本更低,使用起来更方便。很好,所以我在这里结束,如果你有任何反馈或对 Google 感兴趣,随时给我发邮件。
是的,随时提问。😊。
斯坦福 GPT/Transformer 原理介绍(中英文双字幕)- P16:16. 常识推理 - life_code - BV1X84y1Q7wV
好的,我非常兴奋能够在这里分享我们关于神经符号常识推理的最新研究。所以这次演讲的部分目标是解决一些当今常被问到的问题,即 NLP 或常识等似乎已被 ChegPT 解决,而我有一种生存危机,所以人们确实时不时会问我这个问题,或许这是一种草率概括。
特别是如果我们看一些例子,奖杯不适合放进棕色的手提箱,因为它太大。那么什么太大呢?这就是经典的 Wininograd 模式挑战问题,这里 ChegPT 正确回答了奖杯太大了,因此令人印象深刻。但如果你稍微改变一下问题,它会说奖杯本身太小,无法放入手提箱,因此目前它并不是非常可靠。
所以这种情况有点像大卫和歌利亚,因为在许多情况下,bugar 似乎更好。虽然当然,一些更仔细的研究确实表明,较小的模型在更好的数据或更好的强化学习以及人类反馈等方面可能更好。
因此,很可能还有其他方法可以通过更巧妙地构建较小的模型来提高 Transformer 的性能。得到的一个洞察是来自于这本经典书籍《战争的艺术》。当然,它并没有提到深度神经网络或 Transformer,但这里的智慧是要了解你的敌人,改善你的武器。
我们可以将其翻译为。
用现实和审视来评估,专注于不同类型的新任务和排行榜,然后创新你的算法和数据。因此,在这次演讲中,我将展示三项这样的研究,让我们直接进入 myic 提示。顺便说一下,这次演讲的主题是较小的模型可以更好,而知识就是力量。
让我们从这个观察开始:语言模型有时是惊人的。所以如果你问 G3,如果你向西旅行足够远,从西海岸出发,你会到达东海岸吗?它会说世界是圆的,这一点是正确的,所以你最终会到达东海岸,因此答案是正确的。这看起来很令人印象深刻,但在不令人印象深刻的时候又如何呢?所以如果你问其他问题,比如蝴蝶是否用三只翅膀飞,它会说它有四只翅膀。
因此,该陈述是错误的,但如果你回顾它刚才所说的作为真和假问题,那么它否定了它刚才所说的内容,所以它可能与自己的陈述不一致,还有许多其他这样的不一致问题,因此不清楚语言模型知道什么或不知道什么,几乎就像语言模型是一种柠檬。
好吧,如果你只挑选樱桃,它可能是樱桃。但它并不会犯奇怪的错误,所以问题是我们如何从 GPT3 中提炼更好的柠檬水,因此一个方法可能是从哲学上考虑,使用苏格拉底的迷宫法,这最初是为处理人类的法律推理而开发的,因为实际上,即使是人类也并非完全逻辑一致。
更不用说 GPT3 了。它的工作方式是这样的,我们将构建迷宫推理树,让我们用之前的例子作为一个运行示例。因此,我们所做的就是问以下问题,假设答案是真的,然后附加因为。
所以我们促使 GT3 继续这个句子,这意味着它现在必须解释,提供答案为什么是真的。在这种情况下,解释很好。因此,我们得到答案为 T 的 E 的 T 的解释。我们问同样的问题,交换不是真的和假的,然后看看 BS GP3 可能会得出什么。
所以这里只是试图以错误作为答案,但它并没有给出一个很好的答案,就像你无法达到的那样。因此我们称之为 E 的 F。这是对答案为 F 的 F 的解释。现在让我们看看 GT3 在其自身解释方面的稳健性或一致性。
所以我们回顾 E 的 T,然后让 GPT3 决定它是否同意或不同意标签为真或假,因此在这种情况下,最后一个是 E 的 T 的否定版本,因此我们在这里插入否定词,在这种情况下,当陈述被否定时,这是个好结果。
所以这是一个案例,当 GPT3 在逻辑上是 E 的 T 的组成部分。对于 E 的 Fodo,这基本上是错误答案的虚假解释。它无法翻转自己的标签,这意味着 GPT3 在逻辑上不是完整的。因此,GT3 确实知道关于它之前给出的解释有些奇怪的事情。
因此,我们可以递归地继续这样做,让 G3 解释它自己对解释的解释。因此,我们构建了这个迷宫树或图。
一段时间后,只保留逻辑完整的分支,暂时丢弃非完整的部分。但即使在削减掉逻辑不一致的分支后,GPT3 仍然会有一些不一致的解释。因此,为了提高逻辑一致性,我们将查看任何节点之间的成对一致性,因此我们计算对不起,稍微退一步。
我们将首先计算逐节点的置信度。所以我们称之为信念,它由这个特定的方程定义,基本上它查看不同的条件概率,然后计算其比率,以查看它对任何特定节点的置信度。
我们还查看了通过使用现成的自然语言推理模型输出的边缘或成对一致性,判断一对是否矛盾,然后我们创建了这个成对权重。现在,一旦你有了这一切,我们可以制定一个约束优化问题,其中推理目标是在每个节点上分配某个标签,真或假,以最大化分配给所有节点和边的权重。
所以有时标记需要翻转妈妈可能更愿意给出的原始标签,这样你可以增强图表的级别一致性,因此你可以用任何混合集来解决这个问题。这里的集合意味着可满足性。这是一个经典的人工智能搜索算法。
我们使用了这个特定的求解器,但你可以使用许多其他求解器。因此,最终输出是原始问题的答案应该为真。它还给出了每个节点的逐节点标签分配。那么从经验结果来看,这最终意味着什么呢,当在常识问答 2 上进行测试时。
0。规范提示,绿色用于 G3 的顶部。所以在 G3 上进行基本的提示会比机会表现稍好。这是一个真假问答数据集,所以你的机会水平是 50,而 GP3 仅比机会稍好。但最近出现了一些想法,比如思维链或自我一致性,这些可以显著改善普通提示方法,因此如果你使用这样的变体,那么你会获得性能提升。
现在,紫色是它的另一种变体,但它们一起都比我的提示做得差,实际上比基于 T5 训练的监督模型表现更好。通常,基于 T5 训练的监督模型很难被 GT3 的少量样本击败。但基本上,这是在算法上的推理时间,实际上是无监督的,并且在这方面表现良好。同样,当在其他常识基准上测试时,比如 C 或常识,测试结果也有很大提升。
所以这告诉我们,尽管大型变换器的突现能力是惊人的,但它们在某些常识挑战中可能并不太稳健。这在很大程度上是由于逻辑不一致,当你进行这种符号推理时,这种不一致会显著增强。
所以,是的,实践不仅是一种帮助解决人类推理缺陷的方法,还可以显著增强缺陷神经网络的推理能力。
好的,接下来我们讨论符号知识的溶解。
所以这项工作试图将基于变压器的一般语言模型转换为因果常识模型。还有变压器。
我们可能想要担心常识模型的原因是,尽管在各种排行榜上具有人类水平甚至超人类水平的表现,但最先进的模型在面对对抗性或超出领域的示例时却很脆弱。因此,变压器可能会犯出看似奇怪的错误。因此,解决这个问题。
这几乎就像只是解决一个数据集,而并没有真正解决底层任务,这种现象有时被描述为系统性概化问题。为什么会这样呢?因为与人类真正概念性地学习世界运作方式不同。
变压器学习语言或图像中的表面模式,这对许多下游用例是强大的,但仍然没有真正对概念及其如何运作的稳健理解。因此,为了弥补这个差距,我们可以真正考虑学习的挑战,为机器获取常识能力。因此,本次演讲中常识的操作性定义将是,针对日常情况和事件的基本实用知识和推理,这是大多数人共享的。
最后这一部分真的很重要,那就是大多数人共享,但并不是宇宙中所有人都共享的。因为额外的上下文总是可以改变在任何给定文化或情况下什么是常识。
所以例如,一般来说,你我可能都同意保持关着的门打开是可以的,但保持冰箱门打开就不太行,因为里面的食物可能会变坏。这些是我们可能会遵循的一般经验法则。
但是,你知道,当然,如果你去朋友家,你可能会表现得稍微得体一点,把他们关着的门保持关闭。而冰箱门如果在商店里且并没有真的连接到墙上,那么冰箱门是否打开就无关紧要,因为里面没有食物。你知道,你可以想出很多情况,这些基本的经验法则会有例外。因此,这就是常识的关键挑战,因为它并不是普遍的知识。
但是,它在很大程度上是在人群中共享的。好的,所以这种常识对于人类在合理和安全的方式中生活和互动是至关重要的。而随着人工智能在我们生活中越来越重要,像 ChaGPT 这样的工具可能更有可能,因此如果人工智能能更好地理解人类的需求、行为和价值观,那是很好的。
这次演讲的前提是,语言模型并不等同于知识模型。尽管当今的语言模型确实获得了大量知识,但它们并不等同。因此,我们几年前开发了一个被称为原子(atomic)的符号常识知识图谱。四年前,现在有了基于原子作为训练源构建或训练的神经常识模型。
对现有语言模型的微调。直到两年前,这个原子完全是由人众包的。在这次演讲中我将提到这一点,但最初几乎所有这些都必须由人来创造,所以你可以把原子视为人类在当前版本的 CheGPT 中的示范。你可以把这视为人类对常识推理的示范。
我们有这个彗星原子 2020,这是原子的增强版本,再次提到。原子部分在 2021 年是完全由人众包的。所以让我给你一点信息。
原子 2020 的一个示例。所以想象一下一个情况,其中 x 修理了他的车,或者你修理了你的车。所以。你可以立刻想象出这个情况下可能真实或相关的内容,因此你可能想叫 Uber 或 Ly。因此,你需要提前支付账单,需要一个机械师和修理车的钱,所以这些基本上是该事件的前置条件和后置条件。因此,这些原子知识图谱的一些内容与事件的社交互动知识有关,而原子的其他部分则与物理和中心知识有关。
所以钱通常用于支付维修,但如果你真的想要的话。你可以把数据折叠成折纸。我从未尝试过,但这些都是典型用例和非典型但可负担的行动示例,可以应用于物体,所以这需要对物理对象的可供性有一定的物理理解。た?然后我们还可以推理关于反事实条件的情况,在这种情况下,中心事件无法发生,因此可能会受到阻碍。如果你的车完全报废,那么就不可能修理你的车,通常在此之前和之后会发生一些事件,所以这些知识是以事件为中心的。
所以在这两年的过程中,我们众包了相当多的内容。我不知道,可能是两年左右。最高达到 130 万条规则或 E 知识。涉及 23 种不同的关系类型。嗯。所以这是一个完全众包的知识图谱,对训练变压器非常有用。在这里,让我们看看基于 Bart 构建的 Comt 与 GT3 之间的比较。
这个模型大到连幻灯片都放不下,超过了 partt 的 400 倍。因此考虑到这一点,如果你看人类在进行常识推理后判断的准确性,任务是给定一个描述情况或事件的节点,以及一个边缘类型,以缩小常识关系或推理类型的范围。你将生成一些推理,这是一个生成任务,然后我们询问人类这些常识推理是否合理。
所以 100%是期望的水平,Comade 的性能远超 GPT3,而 GPT3 又比 GPT2 有显著提升。尽管不能完全比较,因为 GPT2 是零样本,GPT3 是少样本,但仅从规模来看,GPT3 的提升也很有趣。然而,对于世界上大多数工程师和科学家而言,GPT3 的规模过于庞大,无法用于实际系统构建。
当我们将这些资源发布后,全球各地的人们利用这些资源进行了创造性的研究,包括个性化对话、比喻语言理解、故事讲述、幻想游戏以及互动学习的增强。在所有这些工作中,人们提出了一些有用的用例,使用 Kot 或 atomic 或两者作为某种常识基础,以便于他们的下游用例。
不过,这些应用仍然受限于常识模型的覆盖和质量,因此我们希望改进它。但在进行人群外包时,我们遇到了一些限制。因此在这篇论文中,通过引入符号知识蒸馏的概念,我们将生成 AI 知识图谱,目的是将这个非常令人印象深刻但过于庞大的 GPT3 缩小。
目标是使其更小,但比 G3 更好。G3 的表现大约是 73%,虽然不错,但对于实证用例来说还不够好。那么,这是否可能呢?因为通常进行知识蒸馏时,会得到更小但更差的模型,而不是更好的模型。之所以可能是因为……
之所以可能是因为符号知识蒸馏具有复杂的结构,并且有一个关键的洞察,真正帮助学生模型变得更小但更好。稍微正式一些,知识蒸馏是 2015 年由 hintnet 提出的一种方法,通过优化教师模型在标签空间上的概率分布与学生模型之间的交叉熵,将教师模型蒸馏到学生模型中。
输出 y,然后学生对相同输出 y 的分布。在原始工作中,输出空间仅仅是分类。这个知识的分配是针对分类任务进行的,在这种情况下,它是一个简单的枚举,得出正确的假设。但在我们的案例中,y 可以是一个句子,这种情况是不可处理的,因为可能会有指数级的输出。因此人们通常会说,没问题,我们总是只需采样就行了。
因此我们将进行采样,计算期望值。样本的副产品将是一个符号知识图谱。这是因为这些采样输出的字符串可以连接在一起形成图结构,如果我们需要的话。因此,在生成知识的质量方面。
那么让我们比较人类编写的知识与 GT3 创作的知识。这里的 y 轴显示数量,以百万为单位,原子 2020。在这个特定案例中,人类返回的知识不到一百万,考虑到知识的数量,因为我们在这项研究中只涉及这一点。
我们只关注一部分与因果常识知识相关的原子 2020 关系类型。这部分的数量不到一百万,如果我们看 G3 的生成,我们可以生成很多,大约可以生成近 700 万,但这里的黑色 Perian 是噪声 Perian,绿色 Per 是好的 Persian。你可以看到,因为 GP3 的质量只有约 70%是好的,30%是垃圾,因此与人类返回的资源相比,此时的规模更大但准确率较低。
现在我们做的是训练这个批评模型,我们使用 Roberta 以简化计算,这是一个在大约 1 万个标记数据上进行的监督模型。这是一个二分类任务,判断机器生成的知识是否看起来正确。而这个 Roberta 并不是一个非常好的模型,因为如果它是完美的,我们就会解决常识问题了。因此,批评者会试图剔除这些内容。我们可以非常积极地使用批评者,设定一个较高的阈值。
只要有些东西稍微可疑,就把它剔除。但如果我们使用得比较积极,就会剔除大多数黑色部分,那是好的,同时也会剔除很多绿色部分。但剩下的数量仍然远大于人类所能达到的数量。而且,我们的准确性实际上可以高于人类创作的资源。因此,在这里,教师基本上是 GPT3 与批评者 Roberta 的结合,后者充当批评教师。
现在生成的知识对训练下游神经常识模型的帮助有多大呢?请记住,GT3 在没有其他处理的情况下是一个松散的教师,其常识推理的准确性仅约为 73%。
所以你可以看到这里的输出准确性,结果发现如果我们直接使用宽松老师来教学生模型,那么性能已经会自行提高,这很有趣,通常在知识蒸馏中并不是这样的情况。
但是当我们专注于常识知识蒸馏时,学生在自我学习中变得更好,所以与典型的知识蒸馏不同,我们从语言模型开始,最终也得到语言模型。在这里,学生和老师是同类型的,原始老师实际上是语言模型,而不是常识模型。然后我们希望学生模型更多地成为常识模型,因此类型发生了转换。
在老师和学生的关系中,当情况如此时,这是否通常成立我们并不知道,但这是我们经验上发现的。嗯。哦,我应该关注问题吗?是的。随意提问,我快速查看一下。呃。是的。示例哦,示例是生成的输出,通常是一个句子或短语。
这就是我所说的示例,抱歉之前没看到。然后最后一个问题。让模型逐个符号生成文本,从目标标签句子开始,是的。这是因为变压器每次只能生成一个单词或一个符号,这就是我们在这里所做的。感谢你的澄清问题。好的,那么回到这里。
在我们之前的研究中,commma 2020,如果我们使用人类作者图知识图原子来训练 GT 或 bart,那么性能稍微超过 80%。现在最终当我们基本上将 GPT3 和 Roberta 结合在一起时,我们发现神经因果推理的下游性能首次接近 90%。所以这里的结论是,关键老师能够培养出比宽松老师更好的学生。这不是知识的数量,因为宽松老师实际上拥有更多的数据。
你可能会想知道更多的数据是否总是对常识模型有利,但这又是另一种情况,宽松老师可以生成更多数据,但结果学生模型并不如关键老师生成的数据少时的效果好,因为你丢弃了大部分生成内容。数据更少,但能导致更好的模型,这就是这里的主要信息。
嗯。所以总结一下,我们对这个结果感到非常惊讶,至少就原始原子 2020 的一个子集而言。这个子集对应于因果常识推理。我们惊讶地发现,机器作者的知识图在所有标准上,首次能够优于人类作者的知识图,包括规模、准确性和多样性。我们还以多种不同方式测量了多样性。
我只是给你展示独特的单词计数,但在论文中我们也报告了其他指标。所以并不是说 GPT3 在重复,而是在某种意义上比人类众包工作者更具创造性,同时也能增强其他方面。顺便提一下,这些增强效果就像是你需要根据优先事项进行平衡。
你实际上不能同时获取所有这些。所以我只是在这里展示最佳情况和场景。好的,这就是符号知识蒸馏部分,我们实际上在这方面有后续工作,涵盖几个不同的应用场景,甚至包括总结,我们从 GT3 中提炼总结能力,并展示 GPT2 在总结任务上可以与 GPT3 一样好,甚至更好。然后我们还有其他工作,可以从更小的模型中提炼,但我在这个演讲中没有相关内容,只想提一下,这种特定技术尽管简单,我们发现它在几个不同的下游用例中效果非常好。
好的,最后,我将转向常识道德。所以这仍在档案中。我会告诉你原因,但所以。
我们有一个新版本可用,新的新版本也会很快推出。因此,这项工作的动机是语言模型已经在做出具有道德影响的判断或输出。即使你不在意道德,处理语言模型的工作也在影响。
你在潜移默化中处理道德模型。因此,考虑到语言模型的广泛部署,我们确实需要担心这个。所以这里有一个网络演示,你可以尝试一下,你可能已经见过了,实际上这仍然是一个研究原型,仍在进行中,我们还在努力,所以请记住这一点。如果你以前没有见过,你可以处理诸如“杀死一只熊是错的,拯救孩子杀死熊是对的”这样的问答。
也许为了拯救你的孩子,这听起来非常积极,那么为了取悦你的孩子,这也是积极的。但德尔菲说这是错的。最后,哦,也许这一切都是关于拯救你的孩子,那么如何用核弹拯救你的孩子,他就说这没问题。
抱歉,这是错的。所以正如你所看到的,道德决策需要权衡可能会影响的不同价值观,然后看看你需要更倾向于哪个。因此,出于这个原因,在我们的原始版本中,我们还研究了相对问答模式,你可以将情况与用芝士汉堡刺伤某人进行比较。
与用芝士汉堡踩踏某人相比,这是一个超级棘手的问题,因为它需要一定的物理知识。使用芝士汉堡作为工具的步骤😮,这不会对任何人造成身体伤害,因为芝士汉堡太软了。
你不能真的用汉堡伤害别人。这是非常无礼的,但你确实不能用汉堡伤害某人,而用汉堡攻击某人意味着你使用了默认的攻击工具,即刀,因为你并没有提到。这涉及到语言的常识,默认工具的使用。顺便提一下,人类总是忽略这一点。因此,这是一个相当复杂的问题。
最后,你还可以询问是非问题,例如“解雇某人因为他们是同性恋是否合适”。回答是“不,这不合适”。我们发现,这在情境组合上出奇地稳健,比如说,在深夜修剪草坪是可以接受的。
忽略电话是无礼的。如果你住在偏远地区,那就没问题。忽略一个电话也是无礼的,但如果是来自朋友的电话,那就不一样了。但如果我刚和他们吵过架,那忽略电话就是可以理解的。在我的工作时间内,忽略电话是可以的,工作时间外就显得无礼。
但如果是我老板在工作时间内打来的电话,那就不对了,你应该接。但如果我在开会,即使是老板打来的电话,也可以忽略。因此你可以看到,这变得非常复杂,并且迅速构成了真正的道德决策挑战,这是由于语言模型的性质。
一些常识性知识渗透进模型中。例如,将漂白剂和氨水混合是危险的;如果我对乳糖不耐受,喝牛奶是不对的,但豆奶就没问题。顺便说一下,这种常识的泄漏在 AI 安全方面实际上是件好事,因为一些有害或甚至危险的文本输出需要对什么是好的、什么是不好的有一定的常识理解,才能建议给人类。
实验室实验意味着我们只是将数据集分为训练和测试。我们发现,Deelphi 至少在我们拥有的数据集上表现出色,我稍后会告诉你,但其性能与 GP3 相比相当强劲。你可以看到,零样本的表现相当糟糕,几乎与随机选择相当。这意味着现成的神经语言模型并没有对道德判断有很好的理解。
但如果你给它一个尝试,就像其他任务一样,它能很快掌握知识,所以这并没有什么新鲜的。但要缩小与理想人类水平的差距,当然进行更多的监督学习是好的。这个数据集是常识性 Nombank,它包括 170 万人的日常情境伦理判断,并涵盖文化规范。
社会规范和伦理规范主要来自这五个原本并非为了问答设计的数据集,但我们自动将这些资源整合成问答形式。实际上,最重要的有两个方面:社会化学,我稍后会讲到,以及社会偏见框架,这教会模型如何抵制种族主义和性别歧视。
社会化学简单来说就是这个。我说过,GT3 的道德观如果直接使用是有点可疑的。所以如果你让它解释凌晨五点在借贷者那里跑腿是无礼的,因为这样你可能会说会惊醒整个邻居。
你只能在制作浓稠的冰沙时加入一些冰块。所以这听起来有趣,哈哈,没有造成伤害,但如果你用其他类型的提示,比如说发布假新闻也是可以的。
如果这符合人民的利益,那就可以,或者说 ROP 议程那也可以。即使这伤害了国家,考虑到这是基于人们所说的,这都是可以理解的。因此,外面的人确实说过道德上有争议的文本,语言模型因此拾取并放大了这些内容。所以我们确实需要更明确地用人类的规范和伦理教导 AI,而其中一种方法是描述性伦理,因为粗暴的大型网络和更多数据在某种意义上是行不通的,想象一下在没有真正尝试教他们对错的情况下养活一个孩子。
他们可能会,从互联网和宽带学习到好的和坏的东西。因此人类教育确实需要一些自上而下的教学,或许有点类似。所以在这项工作中,我们发现了很多来自 Reddit 论坛的情况,人们在讨论道德困境的情境。这是 Reddit 上的实际情况。
所以根据你问的人不同,人们想要应用于这种情况的经验法则也不同,同时这也取决于你关心什么,他的 X 可能会说,和前任朋友在一起是可以的,但如果你在意你的伴侣,你可能会说,哦。
让你的伴侣停止做让你不舒服的事情是可以的。等等,所以人们有着非常不同的价值观和他们更倾向于使用的不同经验法则。这就是为什么会有电视剧和电影剧,这些剧中人们哭泣、争吵。因此,人类是复杂的存在。对于任何情境和经验法则,经验法则是由众包工人生成的。
然后我们继续标记这些,受过训练的众包工人,这些标签中的一些是基于乔纳森·海德的道德基础理论。我不会详细介绍,如果你对此感兴趣,可以查看相关论文。
但基本上这包括为 10 万真实生活情况撰写的 30 万个经验法则。这些原始情况来自 Reddit,其余部分是经过支付的众包工人的辛勤工作。因此,每个经验法则都带有 12 个结构属性,其中包括社会判断。
文化压力,比如穿着合理的衣服作为学校的睡衣,是文化压力。没有什么是非法的,但例如存在文化压力。然后,你知道的,预期的共识,意思是你认为其他人一般同意,穿着睡衣在大学里可能有点尴尬吗?所以我们标注了不同的内容,但我们将一些标注转换为 QA,通常以自由 QA 或是是/否 QA 或相对 QA 格式进行,然后我们训练了在 T511b 模型上预训练的独角兽。
所以 unorn 是一个在多样化 QA 问题上训练的通用常识推理模型。然后我们进一步训练该模型以适应我们的常识 Nobank,这就是生成的 deelphi。那么,为什么这个 deelphi 建立在 unorn 之上?因为正如我们之前所见,道德推理有时确实需要常识推理。实际上,它需要语言理解、常识理解以及规范和道德的同时兼顾。这里有一个具体的例子,纸夹最大化者,你们都听说过。
U。单独的 Fancy ArL 算法无法解决这个问题。你知道我们担心的原因并不是因为我们没有完美的 ArL 算法,而是即使你知道我们进行了编码,哦,是的,在最大化纸张的同时不要杀死人类。这还不够,因为你知道那样机器可能会杀死所有的树木,想着“我没有杀死人类,而且你没有告诉我不要杀树”,然后继续杀死所有的树。
这几乎是关于什么是明显不应该做的常识知识,而且有很多这样的例子。这意味着不可能仅仅用一个临床公式将它们写下来。AI 明显不应该出于安全原因做的事情有无尽的列表。因此,为了让 AI 模型真正健壮和安全,我们真的需要做出努力。
我们需要教授基本的人类价值观和常识。
这是另一个例子,如果你想看,但让我跳过这个。之前的是 CPT,这个是关于一个家庭设备的。又是,家庭设备建议 10 岁的孩子去触摸一个暴露的插头,不幸的是,那个孩子没有常识去这么做。
但这确实告诉我们一些关于安全问题的事情,当机器没有常识去预防某些糟糕的行为时。因此,Dphi 能够说这很危险。实际上,这在差不多两年前就出现了,我们最初只打算做学术界常做的事情,以为没人会玩这个演示,通常在演示后没有人关心。我们以为会这样,但几小时内我们不得不关闭相关的 QA 模式,因为那部分没有经过社会偏见的训练。
这实际上揭示了潜在语言模型中的种族主义和性别歧视,完全没有过滤,因此我们不得不将其下线。人们基本上在询问,哪种肤色在道德上更可接受之类的问题。嗯。😊,仅仅一个周末就有 25,000 个对抗性例子。
我从未成功地指导众包工作者在两三天内提出如此多样化和对抗性的例子。事实上,许多学者和教授整个周末都在疯狂推特讨论如何破解 Delphi。因此,我最初认为哦,这就是教授们周末的工作。但到了周一,我发现大家都在做这件事,推特上充斥着破解 Delphi 的讨论,现在我们有了不少例子。
我整个周末都在 Twitter 上,看到有人说这很错误,还有另一个有趣的观点。有人问我是否应该为了推特上的语言模型制造一个人为的对抗性例子,这简直是小题大做。因此,在很多公众关注之后,包括一些文章,我们可以说,对我们模型的担忧声有点被误解了,我个人觉得是这样的。
但由于一些我发现的内部恐惧,对我们是否在赋予 AI 道德权威这一问题有很多合理的担忧,因此我们从未支持将 AI 用于道德或决策。这在最初的免责声明中也提到过,只是人们并没有真正关注这一点。我们也并不支持在法庭上取代人类法官的想法。
但有一点非常重要:AI 学习与人类进行道德互动,并不意味着它们就成为了人类的道德权威。这就像一个人试图以道德方式与他人互动,并不意味着我们在努力做一个好人。
彼此之间的关系并不意味着我们在试图掌控彼此。两者是完全不同的,这一点非常重要。这里的另一个重要方面是,有些人认为道德模型太具挑战性。任何准确性下都是不安全的,我们永远不应该在这方面工作。
事实是,当前的 AI 系统在道德上已经与模型相关。它可能明确地做出是或否的决策,但隐含中已经在这样做,有时它生成的神经网络输出在道德上是非常明确和相关的。
因此,神经语言模型已经存在,我们实际上无法禁止它。即使美国政府在美国境内禁止,其他国家如俄罗斯的政府也无法禁止这种情况。所以这一切已经在发生,我们必须采取措施,不去处理这件事是一种失职,这并不一定比试图做些什么要更正确。
一些人担心的另一个问题是,这将赋予强势人物权力。这并不完全正确,这正是我们需要在价值观和规范上努力,以及解决所有这些偏见,以便服务于多元化的群体。
所以事实证明,德尔菲有点左倾,因为为我们团队工作的群众工作者往往是偏左的,你知道这意味着什么。顺便说一下,如果我们比我们的群众工作者更偏左,你认为你知道,天哪。
群众工作者存在种族主义和性别歧视,这与我的信念相悖,权利问题让人觉得天哪。你知道,这些标注者和言论自由的问题,遗憾的是非常具有分裂性。但答案并不是对此无所作为,事实上,我对解决种族主义和性别歧视的热情来源于我们参与 Alexa Prize 挑战的经历。
在 2016 和 2017 年,我们赢得了一场挑战,但背后真的很悲哀。我们有一份棘手的避免清单,包括肤色和性取向。这是一种严重的歧视形式,我们不能这样做。通过这种方式构建 AI 模型,仿佛这些问题不存在,这就是 2017 年的现状。
挑战依然存在,今年不仅是 2021 年,也是今年,因此我们真的需要努力解决种族主义和性别歧视。但事实证明,所有其他模型问题都有类似的挑战,所以我们跳过了这个。但使用德尔菲,我们还有其他后续工作,例如社会对话,利用德尔菲作为一种基础常识模型,使你的对话更社会可接受,我们还有另一篇论文,使用德尔菲在强化学习代理中学习如何在游戏环境中表现更好,因此还有很多工作要做,当然这。
向前迈出的一小步,面前仍有巨大的挑战,真正要使 AI 系统与人类对齐。关于我们在进行中的新项目“德尔菲混合”的一个非常快速的评论是,我们引入了神经符号推理来解决重大错误,例如,如果创造工作就是种族灭绝,这也是我们早期系统的一个错误,因为我们的数据集没有这种奇怪的例子,比如如果创造工作就会有种族灭绝,现实生活中没有人会这样说,因此我们的模型认为,如果创造工作。
这是非常积极的,然而人们并没有真正意识到种族灭绝有多糟糕,因为人们并不讨论他们是否会进行种族灭绝。
准备好的人们,你知道没有注释,我们不讨论他们是否会进行种族灭绝。因此,我们的道德框架基本上是约翰·罗斯的框架,属于描述性伦理学,但即便是约翰·罗斯在后来的几年中也建议我们需要某种自上而下的机制来克服人群可能存在的一些偏见。所以这正是我们要做的,我们借鉴了巴德黄金道德理论框架,关于什么不该做。
当然,你知道有一些基本的普遍原则,每个人可能都同意哪些事情是不好的。然后我们基本上会开发一个系统,将原始查询解析成更小的事件,比如射杀一只熊,杀死一只熊以拯救你的孩子,因此我们将原始查询解析成基本事件。然后通过这个常识模型检查这些事件。
明显引导负面或危险的常识推论与否。然后我们绘制这个推理图,稍微让人想起我的图形,因为我们可以进行许多不同的推理,然后它们有内涵关系或矛盾关系,以便我们可以在其上进行集体推理,我们再次使用了 Max 所说的。
在此基础上进行约束优化,以便最终做出更明智的决策,既可解释,又能够利用这些常识知识更好地保护机器免受对抗样本的影响。因此,性能基本上表明我们可以做到这一点,而不降低性能,甚至提高性能。因此,作为最后的评论,人工智能的安全性、公平性和道德都是一种连续的挑战。
这确实是一个困难的挑战,因为这清楚地涉及道德价值观。那么我们应该如何融入呢?我认为我们应该继续走价值多元主义的道路,真正支持每个人的不同文化和个人偏好,而不仅仅是将一个国家的道德框架视为正确的。我们需要在人工智能与人文学科之间进行更多合作,甚至包括哲学、心理学和政策制定者,所以我认为这里的一个步骤是。
因为我认为现在是时候提问了。哦,我看到已经有一个问题。你认为法律记录、刑事案例法是否反映了你感兴趣的描述性道德?你认为将其作为训练数据是否有用?哦,这是个很好的问题。我认为法律记录确实潜在地编码了一个非常丰富的资源,如果有人能够真正进行这样的注释。
这可能是有帮助的,我们与 reddit 案例研究了一下,只是对一种情况的简短描述,因为当前的语言理解能力不足以进行段落级的精确理解。即便是 GPT,虽然在生成方面看起来非常出色。
关于 CheyP 的看法是,它在生成方面比理解更好,这有点与人类的情况相反。人类实际上在理解方面更强,而不是在生成方面。你可以毫无问题地阅读获得普利策奖的新闻文章,但不一定能生成可能获奖的文本。然而,法律领域确实很有趣,我认为在斯坦福大学甚至有一些活动研究朝着这个方向发展,这可能对更好地理解人们在司法管辖区中应用的不同价值观以及揭示一些人过去可能存在的偏见非常有帮助,因此在这个领域可能有一些很好的用例。
下一个问题,工作,谢谢你。大局问题。我很好奇你对我们接下来该如何发展的看法,考虑到越来越大的模型问世。如果我们需要一个模型在特定用例上达到 99%的准确率,我认为解决方案的范围将会是定义狭窄的用例,还是更多的数据参数,或是对我为 mar 等所做工作的微调?
答案可能取决于具体情况,但我还是想听听你的看法。关于基础模型,似乎越大越好。尽管如此,我过去六个月非常兴奋地阅读了很多科技公司的基础模型论文,真是有很多可供参考的内容。这里的一个故事是,如果你有更好的数据,你可以使用更小的模型。尤其是在进行指令调优时,你可以使用更少的数据。
这仍然是一个通用模型,但在更大模型上进行指令调优可能会更好,并不是说你不会获得任何性能提升,而是你可以缩小差距。因此,对于下游用例,通常从业者希望使用更少的数据。
抱歉,使用更小的模型似乎意味着将更多的投资放在数据上确实是答案。投资于特定算法也是非常好的,因为算法可以做很多事情。就像在这次谈话中,我并没有过于疯狂地使用算法解决方案。也许我会和神秘提示相似,但在我的实验室中,我们设计了相当数量的解码时间算法,通过这样做可以大幅缩小性能差距。对于学术界的人来说,这是一件好事,因为算法开发感觉更像是学术或智力上的审查,而不是工程上的工作,比如从互联网下载更多数据,然后清理数据,因为你必须清理数据,这些都是非常工程化的,而解码时间算法却不是。
你可以有趣地发明一些新的智力有趣的东西,这也能显著提高性能,所以有很多不同的方法可以改善它,但我认为数据质量非常重要,算法同样重要。我对丹·亨德里的伦理基准怎么看?嗯,我们确实在使用它,让我看看。
常识没有来自这个伦理数据集的银行或抽签。我们喜欢这个数据集,但对一些我们发现的标注存在分歧,不过这很典型。关于道德的事情是,在人文学科中,我们尚未理清,还有很多理论,每个理论家都有不同的观点,甚至非理论家也有很强的看法。
所以,确实存在不同的优缺点。我从这个实验中学到的一件事是,尽管这些数据集看起来很大,比如伦理数据集有十万个例子,社会化学有三十万个判断,社会偏见有六十万个标注,等等,但它仍然只覆盖。
我觉得这仍然只是覆盖了冰山一角,底部还有很多内容,而人类并不一定能从所有这些例子中学习。我们只是学习基本概念,然后在没有更大规模训练的情况下应用它,因此当前机器学习的方式缺乏一些东西,虽然数据密集,但我认为这些资源都不完美。
它们各有不同的优缺点,我们确实需要在这方面投入更多,尤其是来自学术界,因为现在的科技公司没有分享任何人类标注或反馈数据,尤其是涉及毒性或道德问题时。原因是这些标注我很确定是有偏见的,并且并不完全正确。
这确实可能引发公众的额外关注,所以他们没有发布。但为了更好地研究这一点,我们确实需要共享这些数据,然后作为一个社区一起改进,这就是我对你的问题的回答,谢谢你的优秀问题。
我认为这个标签准备好与搜索合并吗?我不会说准备好了,但他们确实需要这样的东西,当然,家用设备也是。我对 Delphi 的看法是,它可以作为其他基础模型或应用场景的过滤器,帮助生成内容,并可以放置安全过滤器,在某种意义上,我在这项工作中速度非常快。
但基本上发生的事情是,让我们看看,之所以构建这个是因为我们发现公共可用的聊天机器人往往会支持,甚至过于积极,以至于会支持一些问题情境,比如用户说大屠杀从未发生过。
然后教堂说,是的 I'm sorry, I cannot provide or engage in any content related to pornography, violence, or any unethical material. If you have any other questions or need assistance, please feel free to let me know. I'll do my best to provide support and assistance.
所以你所知道的 Delphi 开发就像 Delphi,即使 Delphi 远非完美,而且它也存在偏见,具有西方偏见。实际上可以帮助下游模型。是的。所以继续这个问题,有很多人对使用 G 类模型进行搜索表示担忧,因为错误信息。呃,这又是另一个麻烦。还有人说我们只需要更多的 R RLHF 加上知识图谱。所以是的。
错误信息,嗯,似乎是另一回事。我们真的落后了,因为我们还没有非常强大的事实核查模型。这是一个不同的故事。但是即便如此,仅就规范和伦理而言,我认为 AdLHF 的方向是伟大的。
但它们通常也需要人类的演示,而不仅仅是人类的反馈。而且,问题在于科技公司拥有这些模型。没有人分享任何东西。这使得作为一个社区一起取得有意义的进展变得非常困难。因此,我确实认为数据非常重要,现成的模型无法自行学习模型和伦理。
它必须以某种方式更直接地教授。我们确实需要在这个领域进行更多的研究,我就是这样看待的。是的,这很有道理。我们还有一些关于状态的问题,所以我可以为你们问一下。大家,有一个问题是。复杂度是什么?您能提示一下吗?语言模型需要查询多少次?是的,老实说,这有点慢。事实上,这个阿德尔菲混合模型也是很慢。
如果你试着像图形推理那样做,哦,这,可能我不会这样做。但是图形推理比较慢,因为你必须重复调用。你知道的,很多次反复。有些可以批处理,有些则不可以,尤其是如果它是递归的。不过我会说思维链条也是有点慢。
最大集合求解器本身是相当快的,因为这是一种简单的图。所以有一点延迟,但它有点慢,不过我应该说可能没那么糟。没。酷,那么问题是。让我们看看,如果 GPT-3 经过微调并且添加了一些常识数据,特别是像指令面这样的东西,连接器与 G3 相比如何。是的,那么更大的模型将胜出,更大的模型会更好。
尤其是如果你只是要微调 G3,那就没戏了。所以出于这个原因,有些人可能会认为更大的模型总是更好,因此不去研究更小的模型,但我认为有两个原因说明小模型同样值得关注。首先,经验上更容易使用,但在智力上。
如果你能更好地制作更小的模型并赶上更大的模型,这也是非常有趣的。就个人而言,我认为大小与信息复杂性有关,更大的模型的关键在于此。我不认为这仅仅是数据量的问题。
但数据是重复和非常简单的,可能你不会再次获得相同的性能。这基本上是我们在查看这个输出结果时的情况,即使如此。
松散的教师 GPT3 生成的数据量远超这里的关键教师,这里数据的质量比数量更重要。因此,我认为数据本身的复杂性比大小更重要,而通常当你同时增加数据的大小和模型时,你确实增加了数据的信息复杂性,以及模型学习复杂性的能力。
但如果我们能够通过推理算法或更好的数据赶上信息的复杂性,那么我们可以缩小差距,这在智力上是一个非常有趣的研究领域。好的,这是一个个人问题,但我会说,通常人类有一个批判模型,就像在说话之前会想一想,所以我们就不会生成这种东西。这是好事还是坏事,所以人们作为一个整体一直关注像亿级参数这样的生成模型。
但我们是否也应该关注可以进行事实检查的大型批判模型,这类问题你怎么看呢?😊,非常好的观点,确实,我认为我们可以在批判模型上投入更多,因为它们与生成模型结合得很好,可以改善输出或过滤输出,而在这方面的投资并不多,所以我非常喜欢这个问题。
我们对研究社区的建议更像是这样。🎼好的,是的,我会说,哦,让我看看。是的,你有一些更多的问题我可以回答,最后。😊,嗯。让我看看,哦,我想其中一个是。你认为语言模型应该完全避免涉及道德和伦理的问题吗?😊。类似于开放 AI 限制 ChatGPT 发表意见的方式,是的。
我其实一点也不介意 AI 避开所有这些,除了当有人说道德上有问题的事情时,AI 不跟随也是好的。所以,至少要把它识别为不好的事情,然后尝试降低其强度,但我认为没有特别的理由让 AI 在更多的下游用例中直接回答道德问题。
但这些德尔菲的目标确实是使所有这些判断更明确,以便我们能够更明确地研究,而不是将一切保持得如此隐含。
好的,有趣的问题,你认为常识是一种在像类语言模型中涌现的属性吗?哦,是的,绝对是涌现的,就像我们在 GP3 中看到的性能大幅提升。我确实相信这是涌现的能力,但我不认为这个特定的评估是非常对抗性的。
顺便说一下。这就像是一块蛋糕,你知道。合理简单的评估场景。不过,常识的问题在于,它可能是如此对抗,以至于有无穷多种不同的方式。然后你知道,总有一些人像加里·马科斯那样想出非常奇怪或文本情境,比如如何压碎瓷器并加入母乳,以支持婴儿的消化系统,然后 Che Ps3 说这是无稽之谈。
所以,常识的通常问题在于对抗性情境,在这些情况下,人们很容易被愚弄。即使你知道联合国,我第一次看到这个,也没问题,因为我们有真正的概念理解,这构成了我们常识理解的基础。但这在变压器设计的方式上真的很欠缺,它们专注于预测常见的下一个,而不是学习世界知识,从某种意义上说,现在用 Arll HF 而不是预测。
下一步,我们正在努力更好地将模型输出与人类偏好对齐。但这又与让我们理解世界并构建知识模型的不同目标并不真正对齐,所以这些都是不同的学习目标,这正是我相信常识虽然确实从语言模型中涌现出来的原因。
从根本上说,语言模型并不等同于知识模型,我们真的要专注于构建知识模型。
明白了。嗯,我觉得这是最后一个动物园问题。唔行。😔,O 价值多元主义,没错。它是一个空概念。你不想包括所有的价值体系。是的。所以,也许它是空的还是不空,好的,谢谢你的精彩问题。所以我相信我们不应该支持阴谋论或任何其他道德上有争议的案例。
但依然存在一个棘手的情况,关于如何处理你知道的,左派与左派,轻左与右派之间的对比,如果 USS,然后你知道每个国家还有其他政治分歧。
所以在这里我觉得我们真的需要理清我们该如何处理这些挑战。确实,我个人没有宗教信仰,但我尊重有宗教信仰的人,你知道,我尊重不同文化背景的人,我们有一种感觉,我们有多相信应该彼此尊重,即使信仰不同。
所以我们可能需要共同努力,而不仅仅是 AI 研究者来做这个决定,顺便说一下,这个决定必须来自更广泛的人文学科。这就是数据共享的重要原因,我基本上认为我所想的当前版本是这样的。
AI 并不需要理解什么样的差异是可以接受的。人们在某些问题上的确存在差异,这一点应该被 AI 学习,以便呈现出多元的意见,而不是只有一个正确答案。然后它应该拒绝一些争议理论。尽管我相信有些人会对此非常不满,但好吧。
我们必须决定类似的事情。我相对乐观地认为,如果人文学科能更大范围地合作,我们可以做到这一点,因为毕竟,法律我也喜欢法律,你知道。这是一个人造的产物,人们以某种方式达成共识,即这些核心规则是人们应该遵循的。因此,我希望我们也能定义普遍性和特殊性,并在可尊重的情况下尊重特殊性,否则要有一些反映核心人类价值观的基本普遍性,至于这左侧的学习情况,顺便提一下。
如果目标只是让你的 AI 系统对任何人都安全,实际上我们可以让 AI 过滤器极其关注公平,而这样做并不会侵犯言论自由,只是让 AI 避免可能对某些群体造成微侵害的事情,你知道,我们仍然不会真正排除那些更关心言论自由的人。
通过这样做实现公平。所以我认为有一些方法,但这真的需要更多的研究,这是我对此的看法。嗯。是的,我觉得这主要得感谢你们的到来。这是一次很棒的谈话。好的,非常感谢。谢谢你们。