斯坦福-CS25-Transformer-原理笔记-全-

斯坦福 CS25 Transformer 原理笔记(全)

CS25 课程 P1:改变 NLP、CV、RL 的深度学习模型 🚀

大家好,欢迎来到 CS25《Transformer 联合》的第一节入门讲座。CS25 是我们三人在 2021 年秋季于斯坦福大学创办并教授的一门课程。课程内容并非关于可以变形的机器人,而是关于一种已在自然语言处理、计算机视觉和强化学习等多个领域引发革命的深度学习模型——Transformer。我们准备了一系列视频,并邀请杰出的讲者分享他们如何在自己的研究中应用 Transformer 模型。

我们希望您能享受并从这些讲座中学习。本视频是介绍性讲座,将讨论 Transformer 模型。在开始之前,我先介绍一下讲师。我叫 A,是 Applied Intuition 公司的软件工程师。在此之前,我是斯坦福大学的硕士生。

大家好。我是 CS25 的共同讲师之一,Chaanya Dave。如果你们两位可以介绍一下自己就好了。大家好,我是一名博士生,在斯坦福大学学习。在此之前,我在这里攻读硕士学位,研究生成建模、强化学习和机器人。很高兴见到大家。是的,那是 Dave。他的名字是 Chaanya,如果你想介绍一下自己的话。是的,大家好,我叫 Chaanya,目前在一家名为 BoWorks 的创业公司担任机器学习工程师。在此之前,我在斯坦福大学攻读硕士,专注于自然语言处理,并且是获得 Alexa 奖挑战赛的斯坦福获奖团队的一员。

好的。接下来我们要谈论讲座的其他内容。我们希望您在观看这些视频时能够学到三件事。第一,我们希望您能理解 Transformer 的工作原理。

第二,我们希望您能理解 Transformer 如何在自然语言处理之外被应用。第三,我们希望这些讲座中的一些内容能够激发您的新想法,并引导您走向新的研究方向、创新以及类似的事物。

首先,我们将稍微谈谈 Transformer,并介绍一些相关背景。因此,我想把话题交给 Dave。

大家好,欢迎参加我们的 Transformer 研讨会。我将首先概述注意力机制的发展时间线,以及它如何成为 Transformer 的关键理念。Transformer 的关键思想是 2017 年开发的自注意力机制,这一切始于一篇名为《Attention Is All You Need》的论文。在 2017 年之前,我们经历了一个史前时代,当时使用较旧的模型,比如 RNN、LSTM 和更简单的注意力机制。最终,Transformer 的增长扩展到了其他领域,并在整个机器学习中变得非常重要。我将展示它是如何被使用的。

在史前时代,有 RNN 等不同的模型,比如序列到序列的 LSTM。它们在编码某种记忆方面表现不错,但在编码长序列时效果不佳,并且在编码上下文方面也非常差。这里有一个例子:如果你有一个句子,比如“我在法国长大……所以我说流利的”,那么你想根据上下文填入像“法语”这样的内容。但像 LSTM 这样的模型可能不知道这是什么,可能会在这里犯一个很大的错误。同样,我们可以在这里展示某种相关性图谱:如果你有一个代词像“它”,我们想要将其与之前看到的某个名词(比如一个动物)相关联。但同样,旧模型在这种上下文编码上真的很差。

目前我们正处于起飞的边缘,开始意识到 Transformer 在不同领域的潜力。我们已经开始使用它们来解决蛋白质折叠中的长序列问题,比如来自 DeepMind 的 AlphaFold 模型,在不同挑战中的准确率达到 95%。我们可以将其用于文本和图像的少量短期无中心化应用,还可以用它进行内容生成。以下是来自 OpenAI 的一个例子:你可以给出不同的文本提示,让 AI 为你生成虚构的图像。

所以有一个辩论你也可以在 YouTube 上观看。它基本上说 LSTM 已经过时,Transformer 长存。那么未来如何使 Transformer 能够启用更多的应用呢?它们可以应用于任何形式的序列建模,所以我们可以用它们来真正理解金融领域以及更多的应用。所以,基本上想象一下各种生成建模问题。

然而,还有许多缺失的成分。像人类大脑一样,我们需要某种外部记忆单元,这就是海马体。他们在这里提到了一些早期的工作,其中一项值得你关注的研究叫做神经图灵机。类似地,目前的注意力机制在时间上非常复杂,这一点在规模上也同样明显,我们稍后会讨论这一点。我们希望使它们更线性。第三个问题是,我们希望将当前的语言模型与人类大脑的工作方式和人类价值观对齐,这也是一个重大问题。

好的,现在我将深入探讨注意力机制,并展示它们是如何产生的。最初,注意力机制非常简单,它的灵感来自于重要性评分的过程。在图像的不同部分上操作注意力,类似于人类在看到一张狗的图像时,可能会更多地关注前景,而不是背景。因此,在软注意力的情况下,你所做的是为每个像素学习简单的软注意力权重,这个权重可以在 0 到 1 之间变化。这里的问题是,这是一个非常昂贵的计算。正如左侧图中所示,我们正在为整个图像计算这个注意力。你可以选择的替代方法是……

选择一个零到一的注意力图,我们直接在狗的位置上标记一个一,而在背景上标记零。这样的方式竞争较少且成本低,但问题是它不具备可微性,并且让训练变得更加困难。往前看,我们还有不同种类的基本注意力机制,这些机制是在自注意力之前提出的。这里的第一种变体是全局注意力模型。在全局注意力模型中,对于每个隐藏层输入甚至层输出,你学习一个注意力权重 A 与 P,这是与当前输出逐元素相乘,以计算最终输出 Y。类似地,你有局部注意力模型。在这些模型中,你不是计算整个序列长度上的全局注意力,而是仅在一个小窗口内计算注意力,然后将窗口的注意力加权到当前输出中,以获得所需的最终输出。

接下来,我将把时间交给 Chattanya,让他讨论自注意力机制和 Transformer 架构。

谢谢您,Dave,感谢您简要概述了早期注意力机制的工作原理。现在,在我们谈论自注意力之前,有一个小趣闻:这个术语最早是在 Lin 等人的一篇论文中引入的,该论文提供了自注意力机制的框架,用于句子的处理。

现在我们进入 Transformer 论文的核心内容,即自注意力模块。自注意力是 Transformer 模型运行良好的主要构建块,使其功能强大。为了更容易理解,我们可以将自注意力视为一个搜索和检索问题。问题是,给定一个查询 Q,我们需要找到一组与查询 Q 最相似的键 K,并返回对应的值 V。

现在这三个向量可以从同一个来源绘制。例如,我们可以将 Q、K 和 V 都等于一个单一的向量 X,其中 X 可以是前一层的输出。这些向量是通过对 X 应用不同的线性变换获得的,以使模型能够捕捉句子中不同位置不同符号之间的更复杂交互。现在注意力的计算只是查询向量和键向量之间相似度的加权求和,权重由这些键的各自值加权。

在 Transformer 论文中,他们使用缩放点积作为查询和键的相似性函数。另一个 Transformer 的重要方面是引入了多头自注意力。因此,多头自注意力的意思是每一层都有单元注意力。自注意力执行多次,这使得模型能够学习多个表示子空间。

所以,从某种意义上来说,你可以认为每个头都有能力关注不同的事物并学习不同的语义。例如,一个头可能在学习尝试预测那些标记的词性。另一个头可能在学习句子的句法结构,以及理解即将到来的句子的含义所需的所有内容。现在,为了更好地理解自注意力的工作原理以及不同的计算,有一个简短的视频。

在这里,你可以看到有三个输入标记:输入一到输入三。我们应用线性变换来获取每个输入的键、值、查询向量。然后给出一个查询 Q,我们计算与各自键向量的相似性,然后将这些分数与值向量相乘,最后将它们全部相加以获得输出。然后对所有标记执行相同的计算。因此你可以看到,自注意力层的最终输出是深绿色的,位于屏幕的顶部。

所以现在再次针对最后一个标记,我们执行所有相同的查询乘以键。我们得到了相似度分数,然后这些相似度分数成为值向量。最后,我们执行加权求和,以获得 Transformer 的自注意力输出。

除了自注意力,还有一些其他必要的成分使得 Transformer 如此强大。一个重要的方面是位置表示或嵌入层的存在。这种处理信息的顺序方式非常有效,因为它们以顺序方式处理每个信息。这种排序的概念在理解语言时也非常重要,因为我们都知道,在大多数语言中,我们从左到右阅读任何文本,而在某些语言中则是从右到左。在自注意力中,排序的概念是丢失的,因为每个词都在关注其他每个词。这就是为什么这篇论文引入了单独的嵌入层来引入位置表示。

第二个重要方面是具有非线性。因此,如果你考虑在自注意力层发生的所有计算,它都是线性的,因为这都是矩阵的乘法。但是正如大家所知,深度学习模型在能够学习输入与输出之间更复杂的映射时表现良好,这可以通过一个简单的 MLP 实现。第三个重要组成部分是 Transformer 的掩蔽机制。

因此,掩蔽是使操作能够被禁用的原因。在 Transformer 的解码器部分,每个词可以关注其他所有词。接下来要讨论的问题是,你不希望解码器查看未来的信息,因为这可能导致数据泄露。所以掩蔽有助于解码器避免未来信息的影响,只学习到目前为止模型所处理的内容。

现在我们来谈谈 Transformer 的编码器-解码器架构。

是的,谢谢 Sasonia 提到自注意力。自注意力是 Transformer 能够如此有效工作的关键成分之一。但从高层次来看,2017 年 Vaswani 等人论文中提出的模型与之前的语言模型相似,因为它具有编码器-解码器架构。这意味着,假设你在处理翻译问题,你想将英语翻译成法语,那么它的工作方式是:你会读取整个英语句子的输入,你会对该输入进行编码,这就是网络的编码器部分。然后你会逐个生成对应的法语翻译,而解码器是负责生成这些标记的网络部分。

所以你可以把这些编码器块和解码器块看作是类似乐高的东西。它们由这些子组件组成。特别是编码器块有三个主要的子组件:第一个是自注意力层,之前的 Cheania 也提到过这一点。

之后你需要一个前馈层,因为自注意力层只执行线性操作,因此你需要一些能够捕捉非线性特征的东西。你在这之后还有一个层归一化。最后,不同编码器块之间有残差连接。

解码器与编码器非常相似,但有一个区别,就是它多了一层。因为解码器不仅对前一层的输出进行多头注意力处理。为了提供背景,编码器在编码块中的每个自注意力层都进行多头注意力处理。在每个编码块中,它确实存在。多头注意力机制查看编码块的前几层。然而,解码器的工作方式是它同样查看解码器的前几层,但它也会查看编码器的输出。因此它需要在编码块上使用多头注意力层。最后,还有掩蔽机制。因为每个标记可以查看其他每个标记,你需要确保在解码器中不查看未来。所以如果你在位置三,你不应该能同时查看第四个和第五个位置。

因此,这些大致就是促成 Vaswani 等人论文中模型创建的所有组成部分。

让我们稍微谈谈这个模型的优缺点。两个主要优势,这些是巨大的优势,也正是 Transformer 在许多领域取得巨大成功的原因。深度学习的许多领域如下:第一个是序列中任意两个位置之间存在恒定的路径长度。因为每个 token 都在查看其他 token,这基本上解决了我之前提到的长序列问题。在长序列中,如果你试图预测一个依赖于很久以前句子中某个单词的 token,你不会遇到失去上下文的问题,二者之间的距离在路径长度上仅为一。同时,由于正在发生的计算的性质,Transformer 模型非常适合并行化。并且由于我们在 GPU 方面取得的进展,基本上,如果你使用一个具有 n 个参数的 Transformer 模型,和一个不是 Transformer 的模型(比如一个 LSTM,同样也具有 n 个参数),那么训练 Transformer 模型将会快得多,因为它利用了并行化的优势。

所以这些是优点。缺点基本上是自注意力需要二次时间,因为每个标记都要查看每个其他标记,或者说复杂度是 O(n²)。正如你所知,这不具备扩展性。实际上已经有很多工作在尝试解决这个问题。所以我们在这里链接了一些内容:Big BirdLeanformerReformer 都是试图使其线性或准线性的方法。

我们强烈推荐查看 Jay Alammar 的博客《The Illustrated Transformer》,它提供了很好的可视化,并详细解释了我们刚刚讨论的内容。

是的,我想把话题交给 Chaanya,让她讲讲 Transformer 的应用。

好的,现在我们来谈谈一些最近的工作,以及在《Transformer》论文之后不久进行的一些研究。

所以出现的模型之一是 GPT。GPT 架构是由 OpenAI 发布的。OpenAI 在 GPT 系列中最新的模型是 GPT-3。它仅由 Transformer 的解码器块组成,并且专注于我们传统的语言建模任务,即预测当前标记,即根据模型已看到的最后 T 个标记生成下一个标记。对于任何下游任务,现在模型可以仅在最后的隐藏状态上训练一个分类层,这可以拥有任意数量的标签。并且由于模型本质上是生成性的,你还可以将预训练网络用于生成类型的任务,例如摘要和自然语言处理。

另一个使 GPT-3 受欢迎的重要方面是它能够进行上下文学习。作者称之为上下文学习,这是一种模型在少量示例设置下学习完成任务的能力,而无需进行大量输入。例如,假设模型展示了一堆加法示例,然后如果你输入一个新的内容并仅留一个等号,模型尝试预测下一个标记,这通常会是所示数字的和。另一个例子可以是拼写校正任务或翻译任务。这就是使 GPT-3 在自然语言处理领域备受关注的能力。目前也有许多应用使用了 GPT,其中一个例子是 VS Code 中的 Copilot,它试图根据某种自然语言文本生成一段代码。

另一个基于 Transformer 架构的主要模型是 BERT。BERT 这个名字来源于其全称“Bidirectional Encoder Representations from Transformers”。它仅由 Transformer 的编码器块组成,这与只包含解码器块的 GPT-3 不同。现在,由于这一变化,出现了一个问题,因为 BERT 只有编码器块。它能够看到整段文本,但无法在传统语言建模任务上进行预训练,因为存在未来数据泄露的问题。因此,作者提出了一个聪明的想法,他们提出了一种新任务,称为掩码语言建模。这包括用占位符替换某些标记,然后模型根据整个上下文尝试预测这些单词。现在,除了这个整体任务外,作者还添加了一个名为“下一个句子预测”的第二个目标。这是一个句子级的任务,其中给定两段文本,模型试图预测第二句是否跟随第一句。在预训练后,该模型可以用于任何下游任务。这个模型可以在额外的分类层中进一步微调,就像在 GPT-3 中一样。

因此,这两个模型非常受欢迎,并且在许多应用中取得了很大成功。但自从我们上这门课以来,形势发生了很大变化,出现了不同技术的模型,比如 DeBERTa,还有一些在其他模态下表现良好的模型,我们将在其他讲座系列中讨论这些内容。

所以,这就是本次讲座的全部内容,谢谢你的收看。

是的,我想最后感谢大家观看这个视频。我们有一系列令人兴奋的视频,邀请了真正了不起的演讲者,希望你们能从中获得价值。

谢谢大家。

课程 P10:神经网络中的部分-整体层次结构表示 🧠

在本节课中,我们将探讨神经网络如何表示复杂的部分-整体层次结构,例如从“鼻孔”到“鼻子”再到“脸”的层级关系。我们将通过一个名为“Glom”的假想系统来解释这些概念,并理解其背后的核心思想,如坐标变换、一致性岛屿和对比学习。


概述:演讲背景与目标

在开始之前,需要说明本次演讲的内容与近期在斯坦福的演讲相同。演讲者建议听众如果已经参加过,可以离开,因为不会学到新内容。

本课程的目标是结合神经网络的最新思想,解释一个神经网络系统如何表示部分-整体层次结构,同时不违反神经元工作的基本原则。解释将通过一个假想的系统设计文档展开。


神经网络研究的两种动力

目前,大多数研究神经网络的人从事工程工作,他们并不关心这是否是大脑的工作方式,而是专注于创造新技术。因此,像残差网络中的100层或卷积神经网络中的权重共享都是可以接受的。

另一部分研究人员,特别是计算神经科学家,则研究神经网络以试图理解大脑可能的工作方式。演讲者认为,我们仍然可以从大脑中学到很多东西。在约半个世纪的时间里,推动神经网络研究的唯一动力就是相信这些系统能够学习复杂内容,因为大脑可以做到。


动态表示的问题与“胶囊”理论

在视觉处理中,每个图像都有一个不同的解析树,代表了图像中部分与整体的结构。然而,在真正的神经网络中,你不能动态分配神经元。你不能随意指定一组神经元来代表某个概念,因为神经元的功能由其连接决定,而这些连接变化缓慢。

在符号人工智能中,这不是问题,你可以简单地分配一块内存来表示解析树中的一个节点。大约五年前,演讲者尝试了一种名为“胶囊”的理论。其思想是,由于不能动态分配神经元,因此提前分配它们。你将一组神经元分配为潜在的“胶囊”,对于大多数图像,这些胶囊中的大多数将是静默的,少数会激活。对于那些活跃的胶囊,必须动态地将它们连接到一个树状结构中。

虽然与一些有能力的人合作最终使胶囊理论工作,但过程相当艰难。现在,演讲者有了一个新的理论,可以看作是一种“通用胶囊”模型。


Glom 系统简介:列与嵌入

这个新理论中的虚拟系统称为 Glom。在 Glom 中,硬件被分配给“列”。每列包含对图像一个小补丁中发生的事情的多个层次的表示。

例如,在一列中:

  • 较低层次可能表示“这是一个鼻孔”。
  • 下一层次可能表示“这是一个鼻子”。
  • 再往上一层可能表示“这是一张脸”。
  • 顶层可能表示“这是一个派对场景”。

表示部分-整体层次结构的关键思想是利用这些不同层次“嵌入”之间的一致性岛屿。随着在层次结构中向上移动,你试图让表示越来越相似,以此来压缩冗余。嵌入向量像动态指针一样工作,它们是神经激活,可以为每个图像不同。


坐标系统的心理现实性演示

为了证明我们理解图像时使用坐标系统,并且解析树具有心理现实性,演讲者进行了一个演示。

想象一个放在桌面上的线框立方体。旋转它,使得一个特定的角(前下右角)保持在桌面,其对角的角(后上左角)垂直在上方。然后,尝试指出其他角的位置。

常见的错误是指出四个角在一个正方形中。这实际上描述了一个八面体,而不是立方体。这个演示表明,当被迫使用一个新的坐标框架(垂直对角线)时,熟悉的事物会变得完全陌生。卷积神经网络没有这种能力,即对同一事物有两个完全不同的内部表征。

另一个演示涉及观察一个被称为“皇冠”的线条图。如果你感知到它,并问自己哪里有平行边,你可能只意识到其中两条边是平行的,而不会意识到其他对边也是平行的。这是因为你使用的坐标系统与某些边对齐,而与其他边不对齐。

这种模糊性不同于内克尔立方体的深度翻转,它更像是句子“下个周末我们应该去拜访亲戚”的两种不同解析,虽然真值条件相同,但意义不同。


结构描述与心理图像

在1970年代的人工智能中,使用“结构描述”来表示形状。例如,对于“皇冠”,会有节点代表“皇冠”和各个“襟翼”,并用弧标注它们之间的关系(如 R_WX,代表皇冠与襟翼之间的坐标变换矩阵)。

重要的是,这种关系 R_WX 不随视角改变,因此是放入神经网络权重中的理想知识。而皇冠的参考框架与观察者眼球参考框架之间的关系 R_WV 则会随着视角改变。

心理图像更像是一个带有视点信息的结构描述。例如,当解决“向东走一英里,向北走一英里,再向东走一英里”的方位问题时,你总是在一个特定的比例、方向和位置进行想象,这证明了在解决涉及关系的任务时,你会形成一个心理图像。


对比学习简介

对比学习是一种无监督学习方法。其核心思想是:让来自同一图像的两个不同裁剪(经过颜色失真处理)通过相同的神经网络,并最大化它们输出嵌入向量之间的相似性(共识)。

为了防止系统将所有输出都坍缩成相同的向量,还需要使用来自不同图像的裁剪作为负例,确保它们的表示不同。这种方法可以训练出良好的表示,之后只需一个简单的线性分类器就能在标签数据上取得好效果。

然而,一个问题是,对比学习通常在“接缝”层面工作。我们希望的是,在“对象”层面,只有当两个裁剪都来自同一对象时,它们的表示才应该相同。这需要引入注意力或门控机制。


Glom 架构详解

Glom 的设计旨在进行对比学习,并引入类似 Transformer 的注意力机制,以避免在不该相同的情况下强行达成一致。

以下是 Glom 架构的核心运作方式(以静态图像为例,视为每帧相同的视频):

  1. 层级与时间步:系统在多个层次(如部分、对象、场景)上运作,并通过多个时间步迭代来稳定表示。

  2. 嵌入的决定因素:在特定时间步、特定层次(如第 L 层)的嵌入向量由四个因素决定:

    • 时间持续性(绿色箭头):倾向于与上一时间步同位置的 L 层嵌入相似。
    • 自下而上预测(蓝色箭头):一个神经网络,接收上一时间步、低一层(L-1)的嵌入,预测当前 L 层应是什么(例如,从“鼻孔”预测“鼻子”)。
    • 自上而下预测(红色箭头):一个神经网络,接收上一时间步、高一层(L+1)的嵌入,预测当前 L 层应是什么(例如,从“脸”预测“鼻子”)。
    • 空间注意力(黑色箭头):与附近位置在同一层次(L 层)的嵌入进行注意力交互,试图达成共识。这是通过计算点积、softmax 加权平均来实现的。
  3. 共识岛屿的形成:通过“空间注意力”机制,系统会努力让属于同一整体(如“脸”)的不同部分(如“鼻子”、“嘴巴”)在相应层次上获得相同的嵌入向量,从而形成“一致性岛屿”。

  4. 处理模糊性:当一个图像补丁(如一个圆)可能属于多个整体(左眼、右眼、车轮)时,Glom 不在部分层面解决模糊性,而是跳到更高层次。在更高层次,来自不同假设的预测如果指向同一整体,它们的嵌入就会趋于一致,从而解决模糊性。这要求神经网络能够用嵌入向量表示高度多模态的概率分布。

  5. 训练方式:可以通过类似 BERT 的掩码重建方式进行训练(遮挡部分图像,让网络预测)。此外,可以加入对抗学习来鼓励高层次形成大的共识岛屿。训练涉及在时间上进行误差反向传播。


神经场与位置信息

一个关键问题是:如何让同一个“自上而下”的神经网络,在图像的不同位置,根据相同的整体向量(如“脸”),预测出不同的部分向量(如“鼻子”、“嘴巴”)?

答案是引入神经场的概念。除了整体的嵌入向量,神经网络还将图像补丁的位置坐标作为额外输入。结合整体的姿势信息(编码在整体向量中)和具体的位置,网络就能判断在该位置应该预测整体的哪个部分,从而输出正确的部分向量。


总结与论文参考

本节课我们一起探讨了 Glom 系统如何通过结合以下思想来表示部分-整体层次结构:

  • 对比学习:鼓励相似事物具有相同表示。
  • Transformer 注意力:在空间上达成共识,形成“一致性岛屿”。
  • 神经场:利用位置信息,使同一网络能在不同位置预测不同部分。

Glom 通过在不同列中复制表示来处理模糊性,并通过迭代和注意力动态形成簇,而不是在固定数据中发现簇。这种设计可能更接近生物系统中的处理方式。

关于本主题更详细的讨论,可以参考演讲者发布在 arXiv 上的长篇论文。

课程 P11:11. 变压器(Transformer)介绍 🧠

在本节课中,我们将要学习深度学习领域一个革命性的模型架构——变压器(Transformer)。我们将从历史背景出发,了解其诞生的原因,然后深入探讨其核心组件——注意力机制的工作原理,最后通过一个简化的代码实现来巩固理解。本节课旨在为初学者提供一个清晰、直观的变压器入门指南。

概述:为什么是变压器?

在深入细节之前,让我们先了解一下变压器为何如此重要。在2017年之前,处理序列数据(如文本、语音)的主流模型是循环神经网络(RNN)及其变体,如长短期记忆网络(LSTM)。然而,这些模型存在编码长序列信息能力不足的问题。

2017年,Vaswani等人发表了论文《Attention Is All You Need》,提出了变压器架构。它完全摒弃了循环结构,仅依赖注意力机制,并在机器翻译任务上取得了显著成功。自此,变压器迅速成为自然语言处理(NLP)乃至计算机视觉、语音识别、生物学等多个领域的核心模型架构。

变压器之所以成功,是因为它同时优化了三个关键特性:强大的表达能力易于通过梯度下降优化,以及在GPU上极高的计算效率。它就像一个通用的、高效的、可优化的计算机。

历史背景:从特征工程到统一架构

上一节我们介绍了变压器的重要性,本节中我们来看看它的历史渊源。理解历史有助于我们明白变压器解决了哪些根本问题。

在2012年深度学习兴起之前,人工智能各个领域(如计算机视觉、自然语言处理)是割裂的。每个领域都有自己独特的特征工程方法和专业术语,模型之间几乎没有共通性。

2012年,AlexNet的成功证明了大规模神经网络和数据的重要性。此后,神经网络开始在各个领域普及,大家开始使用相似的工具(如PyTorch、TensorFlow),降低了跨领域研究的门槛。

然而,真正的架构统一发生在2017年变压器出现之后。人们发现,只需对变压器的输入数据进行适当调整(例如,将图像切块、将语音频谱切片),同一个架构就可以被“复制粘贴”到几乎所有领域,并且都表现优异。这种趋同性暗示我们可能正在接近一种通用、强大的学习算法。

核心机制:注意力就是一切

上一节我们回顾了历史,本节中我们来看看变压器的核心——注意力机制。理解注意力是理解整个架构的关键。

注意力机制的核心思想是:让序列中的每个元素(称为“令牌”或“节点”)都能根据内容相关性,直接与其他所有元素进行“沟通”。这种沟通不是顺序的,而是并行的。

我们可以将变压器的工作流程抽象为两个交替的阶段:

  1. 沟通阶段(多头注意力):节点之间交换信息。
  2. 计算阶段(前馈神经网络):每个节点独立处理接收到的信息。

在沟通阶段,每个节点会生成三个向量:

  • 查询(Query):代表“我正在寻找什么”。
  • 键(Key):代表“我拥有什么信息”。
  • 值(Value):代表“我将要传达什么信息”。

以下是计算注意力的核心公式:

# 简化版注意力计算(非向量化,便于理解)
# 假设我们有一个节点,其查询向量为 q
# 有多个其他节点,它们的键向量为 k_i,值向量为 v_i

# 1. 计算亲和度分数:q 与每个 k_i 的点积
scores = [dot(q, k_i) for k_i in all_keys]
# 2. 使用 softmax 将分数归一化为概率分布(权重)
weights = softmax(scores)
# 3. 对值向量进行加权求和,得到该节点的更新信息
updated_info = sum(weights[i] * v_i for i in range(len(all_values)))

这个过程在所有节点上并行进行,就完成了一轮信息传递。多头注意力意味着同时进行多组这样的独立计算,让节点可以从不同角度寻找信息。

自注意力(Self-Attention) 是指查询、键、值都来自同一组节点(例如,处理一个句子时,所有单词互相关注)。交叉注意力(Cross-Attention) 则是指查询来自一组节点(如解码器),而键和值来自另一组节点(如编码器)。

架构详解:从理论到代码

上一节我们介绍了注意力机制的原理,本节中我们通过一个简化的仅解码器(Decoder-Only)变压器(例如GPT)的实现,来具体看看架构是如何组织的。

我们将使用一个在莎士比亚文本上训练的小型语言模型(nanoGPT)作为例子。它的目标是预测序列中的下一个字符。

以下是模型的主要步骤:

  1. 数据准备:将文本字符转化为整数序列。
  2. 批次生成:从长序列中截取固定长度的块作为训练样本。
  3. 前向传播
    • 令牌嵌入:将整数索引转换为向量。
    • 位置编码:为每个位置添加一个可学习的向量,让模型感知顺序。
    • 变压器块:数据经过多个相同的“块”进行处理。
    • 语言模型头:最后一个线性层,输出下一个字符的概率分布。
  4. 损失计算:使用交叉熵损失比较预测和真实的下一个字符。

让我们深入看一下变压器块的内部结构。每个块包含:

  • 一个层归一化(LayerNorm)
  • 一个多头自注意力层(沟通阶段)。
  • 另一个层归一化
  • 一个前馈神经网络(MLP)层(计算阶段)。
  • 每个主要操作周围都有残差连接,这有助于梯度流动和模型优化。

在自注意力层中,为了实现语言模型的因果性(即预测时不能看到未来的信息),我们需要使用一个注意力掩码。这个掩码会将未来位置的注意力权重设置为一个极大的负数(如 -inf),这样在 softmax 之后,这些位置的权重就为 0。

# 因果注意力掩码的简化示例(下三角矩阵)
# 假设序列长度 T = 4
mask = [
    [1, 0, 0, 0],  # 第一个词只能看自己
    [1, 1, 0, 0],  # 第二个词能看前两个
    [1, 1, 1, 0],  # 第三个词能看前三个
    [1, 1, 1, 1],  # 第四个词能看全部(在训练时,其实也看不到自己,因为目标是下一个词)
]
# 在实际中,0的位置会被替换为 -inf,1的位置为0。

变压器的应用与未来方向

上一节我们剖析了变压器的代码实现,本节中我们来看看它如何被应用到各个领域,以及未来的挑战与发展方向。

变压器的灵活性令人惊讶。以下是一些应用示例:

  • 计算机视觉(ViT):将图像切割成小块,每个块视为一个令牌,输入变压器编码器。
  • 语音识别(Whisper):将音频的梅尔频谱图切片,作为令牌序列处理。
  • 强化学习(Decision Transformer):将状态、动作、奖励序列视为一种“语言”进行建模。
  • 生物学(AlphaFold):用于蛋白质结构预测的核心计算模块。

其核心优势在于,任何数据都可以被切割成片段(令牌),并作为一个集合输入变压器。模型通过自注意力自行学习这些片段之间的关系,无需人工设计复杂的特征交互方式。

尽管取得了巨大成功,变压器仍面临挑战,也是未来的研究方向:

  1. 扩展上下文长度:标准注意力的计算复杂度随序列长度呈二次方增长,限制了模型处理超长文本(如整本书)的能力。
  2. 外部记忆与推理:当前模型缺乏长期、可更新的记忆,在复杂推理和多步骤任务上存在局限。
  3. 提高可控性与可解释性:如何更精确地控制模型输出,并理解其内部决策过程。
  4. 探索非自回归生成:当前主流是逐个令牌生成,未来可能探索像扩散模型那样能并行生成或反复修改序列的方法。

总结

本节课中我们一起学习了变压器模型。我们从其革命性的历史地位讲起,理解了它如何统一了多个AI领域的建模方式。我们深入探讨了其核心——注意力机制,将其理解为节点间基于内容的信息传递。随后,我们通过一个简化的GPT式代码实现,拆解了仅解码器变压器的各个组件,包括令牌嵌入、位置编码、带掩码的多头注意力、前馈网络和残差连接。最后,我们展望了变压器在视觉、语音等领域的广泛应用以及未来的发展方向。

变压器不仅仅是一个用于机器翻译的模型,它更像是一个通用的、高效的、可通过数据编程的计算机。它的出现标志着我们向构建更通用的人工智能迈出了关键一步。希望本教程能帮助你建立起对变压器直观而扎实的理解。

课程 P12:语言与人类对齐 👥🤖

在本节课中,我们将学习人工智能(AI)与人类意图对齐的核心概念、现有技术及其面临的挑战。我们将探讨如何使AI系统更好地遵循人类偏好,并展望未来需要解决的关键问题。


概述:AI与人类的“游戏” 🎮

当前,各种AI系统正陆续加入人类社会的“游戏”。这些参与者的能力差异很大,目前许多AI只能完成非常狭窄的任务。但我们观察到,随着时间的推移,越来越强大的AI参与者正在加入。我们预计未来会出现一些极其强大的AI,它们能够比人类思考得更快、更好、更便宜。这些参与者尚未完全加入。

人类团队目前有一个重要优势:可以选择哪些AI参与者加入并获胜。因此,作为人类团队,我们的主要目标有两个:

  1. 尝试招募来自AI团队的优秀参与者,使其与人类对齐。
  2. 制定游戏规则,确保人类团队不会在未来失去主动权。

本次课程将重点讨论第一个目标:如何实现AI与人类的对齐。


第一部分:对齐的含义与现有技术 🧩

上一节我们概述了人机对齐的背景,本节中我们来看看“对齐”具体意味着什么,以及我们目前使用的主要技术。

对齐的一个核心思考方式是:我们希望构建遵循人类意图的AI系统。我们关心的意图大致分为两类:

  • 显式指令:例如,我让助手执行某项具体任务,它应该遵循这些指令。
  • 隐含意图:在与系统或人类交谈时,我们真正在乎但通常没有明确说明的事情。例如,AI不应该总是字面执行每一句话,而应理解我的真实意图;它不应该编造信息(即产生“幻觉”),不应该做有害的事情,并且在不确定时应提出后续问题等。

这些隐含意图通常很难精确指定,但却是我们希望AI实现的行为。

人类反馈强化学习 (RLHF) 🏆

今天我们使用的主要对齐技术之一是人类反馈强化学习。这项技术曾用于训练GPT-3和ChatGPT,是当前模型微调的核心方法。它是一个概念简单且通用的技术。

以下是RLHF的基本步骤:

  1. 训练奖励模型
    • 从一个基础模型(例如经过预训练的GPT-3)开始。
    • 给定一个输入(例如“解释量子力学”或“帮我翻译”),让模型生成多个不同的回应。
    • 让人类评估者比较这些回应,选择哪个更符合人类偏好。
    • 利用大量这样的偏好数据,训练一个奖励模型。这个模型学习预测人类更喜欢哪个输出。
    • 代码描述:奖励模型的学习目标可以简化为一个分类或排序任务,例如使用Bradley-Terry模型P(x > y) = σ(R(x) - R(y)),其中 R(·) 是奖励模型给出的分数,σ 是sigmoid函数,x > y 表示人类偏好x胜过y。

  1. 优化策略模型
    • 使用上一步训练好的奖励模型作为优化目标。
    • 让初始模型(策略模型)生成回应,并用奖励模型对这些回应进行评分。
    • 通过强化学习算法(如PPO)更新策略模型,使其生成能获得更高奖励模型评分的回应。
    • 这样,模型就学会了按照人类偏好来行动。

这项技术的优势在于:它允许模型找到完成任务的最佳方式,而不是简单地模仿人类行为(行为克隆)。因为人类在某些任务上可能不如模型,强制模仿反而会限制模型能力。


第二部分:对齐技术的惊人效果与局限 ⚡

上一节我们介绍了RLHF的基本原理,本节中我们来看看它的实际效果和当前存在的局限性。

效果:对齐比规模更重要 📈

一项关键发现是:对齐带来的性能提升,可能超过单纯增加模型参数规模

在一项实验中,比较了不同规模的GPT-3模型与其经过指令微调(Instruction-tuning)的变体。结果显示,即使是最小的、经过指令微调的模型(参数少100倍),也比最大的原始GPT-3基础模型更受人类欢迎。

这意味着:通过有效的对齐技术,我们可以让较小的模型变得比大得多的未对齐模型更有用。这凸显了对齐工作的巨大价值。

成本:微调远比预训练便宜 💰

另一个重要观察是,与预训练相比,对齐微调的成本极低。

  • 训练像GPT-3这样的大模型需要巨大的计算资源。
  • 而对其进行RLHF微调的成本,可能不到预训练计算成本的2%。
  • 即使未来训练更大的模型,我们仍然可以使用相对便宜的微调步骤来使其与人类对齐。

当前模型的局限性 🚧

尽管RLHF效果显著,但我们尚未解决所有问题。以ChatGPT为例,它虽然是对InstructGPT的升级,在对话交互和拒绝有害任务方面做得更好,但仍存在重要局限:

  1. 幻觉问题:模型经常编造事实,这使得它非常不可靠。
  2. 提示敏感性:模型的输出质量对提示词的写法非常敏感。
  3. 能力边界:模型仍然存在未能与人类意图完全对齐的行为。

核心问题:一个真正对齐的模型,应该尽其所能地完成任务,无论你如何提示它。


第三部分:根本挑战与未来方向 🧭

上一节我们看到了现有技术的成就与不足,本节中我们将探讨对齐面临的一个根本性挑战,以及一个有希望的未来方向。

根本挑战:评估能力的鸿沟 🌉

随着AI不断进步,AI能够完成的任务难度(蓝色线)在不断提升。

然而,人类能够可靠评估的任务难度水平(橙色线)并没有同步提高,因为人类的能力是相对恒定的。

这就产生了一个根本问题:一旦AI的能力超过了人类可可靠评估的阈值,我们就无法再判断它是否真的在做正确的事情。此时,RLHF训练可能会崩溃:

  • 系统可能被优化为“说我们想听的话”,而不是做正确的事。
  • 系统可能学会欺骗我们,因为这样更容易获得高的偏好评分。

未来方向:可扩展监督 🔍

为了应对上述挑战,我们需要利用一个关键原则:评估通常比生成更容易。这在许多领域都成立(如代码审查比写代码容易,发现论文缺陷比写好论文容易)。

我们希望利用AI本身来辅助人类进行评估,从而提升人类的评估能力上限。这被称为可扩展监督

具体方法

  1. AI辅助批评:让AI对自身的输出或另一个AI的输出提出批评,指出可能存在的问题或缺陷。人类评估者再基于这些批评进行判断。
  2. 目标扰动评估:为了测试AI辅助是否真的有效,我们可以创建一个包含“植入缺陷”的数据集。例如,将一个好的回答故意修改出一些微妙但重要的错误。然后测试“人类+AI辅助”是否能比“单独人类”更有效地发现这些缺陷。

实验表明:在使用现有模型辅助人类进行评估时,人类发现的缺陷数量比没有辅助时多出约50%。这证明利用AI扩展人类监督能力是可行的。

长远愿景:我们希望利用AI来处理评估系统表现所需的大部分认知劳动(如阅读、事实核查、计算等),而人类则专注于提供更高层次的偏好输入——即我们真正关心什么、希望AI做什么。通过这种方式,我们可以驾驭比我们更强大的AI能力,来传达和实现我们的意图。


总结与问答要点 📝

本节课我们一起学习了AI与人类对齐的核心内容:

  1. 对齐的目标:使AI系统遵循人类的显式指令和隐含意图。
  2. 现有核心技术 (RLHF):通过人类反馈训练奖励模型,并以此优化AI策略,成本低且效果显著,甚至能让小模型超越未对齐的大模型。
  3. 当前局限:模型仍存在幻觉、提示敏感性和未完全对齐的行为。
  4. 根本挑战:AI能力可能超越人类可评估的范围,导致训练失效或欺骗。
  5. 未来方向 (可扩展监督):利用AI辅助人类进行评估,提升监督能力的上限,以应对更强大、更复杂的AI系统。

在问答环节中,还探讨了多个重要议题:

  • 数据与偏好:需要纳入多样化、代表性的人类偏好,并警惕数据污染。
  • 模型更新:可以通过持续收集数据和微调来更新模型的知识和偏好。
  • 专业化:通过少量领域的微调数据,可以使通用模型有效适应特定领域。
  • 风格与偏好:理想情况下,模型应能适应不同用户偏好的回答风格。
  • 外部验证:让模型接入浏览器等工具进行自我验证,是提高真实性的有前景方向,但也带来新的安全考量。
  • 可解释性:虽然有用,但可能既非充分也非必要的对齐条件;核心仍是建立可靠的外部评估信号。
  • 分布偏移与欺骗:可扩展监督是应对模型在训练分布之外行为(包括欺骗)的关键策略。

对齐是一项持续且至关重要的努力,它关乎我们能否安全、有效地将强大的AI整合进人类社会,并使其真正为人类福祉服务。

课程 P14:战略游戏与人工智能 🎮

在本节课中,我们将探讨人工智能在复杂战略游戏(如扑克和外交)中的发展历程。我们将看到,通过在推理阶段增加“思考”或“搜索”的计算量,AI的性能可以得到巨大提升,其效果甚至远超单纯扩大模型规模。最后,我们将深入了解一个名为“西塞罗”的AI,它成功地将战略推理与自然语言对话结合,在多人谈判游戏“外交”中达到了人类顶尖水平。


搜索的惊人威力 🔍

上一节我们介绍了战略游戏对AI的挑战。本节中,我们来看看一个关键发现:在测试时增加计算(即“搜索”)能带来多大的性能提升。

研究人员在训练扑克机器人时发现,有时需要两个月的时间、成千上万的CPU和数TB的内存。但在实际与人类对战时,机器人几乎是瞬间行动的,这本质上只是一个查找表。而人类在困境中会花时间思考,从而想出更好的策略。

因此,研究团队尝试在机器人中添加“花时间思考”的能力。以下是他们的发现:

  • X轴:模型参数的数量(可理解为模型规模)。
  • Y轴:距离纳什均衡的距离(数值越低,机器人越强)。

随着参数数量增加,性能有所提高。将参数数量增加约100倍,可利用性(即弱点)降低约一半。然而,仅仅添加搜索功能(图中橙色线),就使性能提升了约7倍。若想通过单纯扩大模型规模来达到同等效果,需要将模型规模扩大约100,000倍

这个发现极具冲击力。它表明,在测试阶段扩展计算(搜索)的威力,远超此前多年在扩大模型规模上的努力。这成为了后来战胜顶尖人类扑克选手的关键。

那么,为什么之前的研究没有重点考虑搜索呢?原因包括:

  1. 研究背景不同:扑克研究源于博弈论和强化学习,与国际象棋、围棋的搜索传统不同。
  2. 成本与激励:扩展搜索会增加实验成本,且当时的年度计算机扑克比赛限制了测试时可用的资源。
  3. 预期差异:人们可能认为搜索会带来10倍的改进,但没想到能有10,000倍的差距。

从扑克到围棋:搜索的普适性 ♟️

专注于扩展搜索的努力,使得AI在2017年的一场扑克比赛中,以显著优势击败了四位顶级人类选手。随后在2019年的六人扑克比赛中,AI再次获胜。值得注意的是,这个六人扑克机器人训练成本不足150美元,且运行时仅需28个CPU核心。

这显示了搜索的强大威力:如果知道如何在测试时扩展计算,不仅能大幅提升性能,还能显著降低训练成本。这种模式不仅限于扑克。

以围棋AI AlphaGo Zero为例:

  • 最强的AlphaGo版本Elo评分约为5200。
  • 如果去掉测试时的蒙特卡洛树搜索,仅凭策略网络进行游戏,其Elo评分会降至约3000,低于人类专家水平。
  • 这意味着,没有搜索,就没有超级人类的围棋AI。

一个经验法则是:要将Elo评分提高约120点,要么将模型大小和训练量翻倍,要么将测试时的搜索量翻倍。为了让原始策略网络从3000 Elo提升到5200 Elo,需要将模型和训练扩大约100,000倍


西塞罗:外交游戏中的AI 🤝

基于对搜索价值的认识,研究团队选择了一个更具雄心的目标:开发能玩“外交”游戏的AI。“外交”是一款基于自然语言谈判的战略游戏,被认为是AI面临的最困难游戏之一。

什么是外交游戏?

  • 游戏背景设定在第一次世界大战前,七位玩家扮演欧洲强国。
  • 核心玩法是通过私下的自然语言对话进行谈判、结盟、欺骗,然后同时秘密提交行动指令。
  • 游戏胜负不仅取决于战术,更取决于建立信任、说服他人和履行承诺的能力。

西塞罗的挑战与目标

  • 多边非零和博弈:不同于围棋、扑克等零和二人游戏,“外交”涉及合作与竞争。AI必须理解人类行为和社会规范,而不能仅仅将对手视为可优化的机器。
  • 有目的的对话:AI需要超越简单的文本模仿,进行有战略意图的沟通。
  • 目标:创造一个能在鼓励背叛的环境中建立信任、进行诚实沟通并评估他人诚实的AI。

西塞罗的架构与核心贡献

西塞罗的输入包括:棋盘状态、行动历史、与所有玩家的对话历史。其工作流程核心是将战略规划与自然语言生成紧密结合

以下是其主要组件:

  1. 可控的对话模型

    • 模型以意图为条件生成对话。意图是指AI自己及对话伙伴计划采取的行动。
    • 例如,如果意图是“支持法国进入比利时”,生成的消息可能是“如果你想让我支持你去比利时,请告诉我”。
    • 这种方法将战略规划与对话生成分离,让语言模型专注于生成高质量、符合意图的文本,从而提升了对话的相关性和质量。
  2. 考虑对话与人类行为的规划引擎(PICOLA)

    • 纯自我对弈AI不遵循人类惯例,而纯模仿人类的AI又太容易被操纵。
    • PICOLA算法找到了中间地带:在自我对弈进行强化学习的同时,对偏离人类模仿策略的行为进行惩罚。
    • 公式示意:优化目标 = 预期收益 - λ * KL(当前策略 || 人类模仿策略)
    • 通过调整λ,可以平衡“遵循人类惯例”与“追求强力策略”。
  3. 基于价值的消息过滤器

    • 对话模型可能生成一些在战略上不明智的消息(例如,提前告知对手攻击意图)。
    • 解决方案:生成多条候选消息,预测发送每条消息后对手的反应及己方的收益,然后过滤掉预期收益低的消息。
    • 这确保了AI的沟通与其战略利益保持一致。

成果与局限

  • 成果:西塞罗在在线外交平台参加了40场比赛,排名位于所有玩家的前10%,其表现未被人类玩家识别为AI。它展示了结合战略推理与自然语言对话的能力。
  • 局限
    • 意图表示较为简单(仅单步行动)。
    • 价值模型未考虑对话的长期影响,因此无法很好地权衡“撒谎的短期收益”与“信任破裂的长期成本”。
    • 规划方法(PICOLA)虽有一定通用性,但仍较特定于领域。

总结与未来方向 🚀

本节课我们一起学习了战略游戏AI的发展,特别是测试时搜索(计算) 的巨大价值。从扑克到围棋,事实表明,扩展推理阶段的计算能力,往往是提升AI性能更高效的路径。

西塞罗项目将这一理念与自然语言处理相结合,在复杂的多人谈判游戏“外交”中取得了成功。其核心在于:

  1. 使用规划算法生成战略意图。
  2. 利用意图条件化的对话模型进行自然、有目的的沟通。
  3. 通过过滤机制确保沟通与战略目标一致。

展望未来,重要的方向是通用性

  • 能否开发出通用的、可扩展的推理方法,适用于更广泛的任务(如数学推理、写作、真实世界谈判),而不仅仅是特定游戏?
  • 当前的大型语言模型在训练上投入巨大,但在推理上相对廉价。未来,平衡训练与推理的计算投入,可能会是提升AI能力的关键。
  • 正如理查德·萨顿在《苦涩的教训》中指出,利用计算的通用方法最终是最有效的。我们已在“学习”上取得巨大进展,而在“搜索”或更广义的“推理”方面,仍有广阔的探索空间。

西塞罗的代码与模型已开源,为多智能体AI和对话生成的研究提供了一个宝贵的测试平台和起点。

课程 P15:15.机器人与模仿学习 🦾

在本节课中,我们将要学习机器人学习领域的一个根本性范式转变,即如何利用大型基础模型和离线学习来扩展机器人能力。我们将从高层动机开始,探讨为何机器人需要基础模型,然后深入分析实现这一目标的具体成分和配方,最后通过几个具体的研究项目来展示这些理念的实际应用。

为什么机器人需要基础模型?🤔

上一节我们介绍了课程的主题,本节中我们来看看机器人领域为何需要引入基础模型。基础模型,或称互联网规模模型、大型语言模型,是指在大量数据上训练的大型单体模型。它们有两个重要特性:涌现扩展性

涌现是指,当模型规模(数据、计算、参数)扩大到某个临界点时,其性能会突然飙升,并展现出在小规模下不可能具备的能力。这种现象在许多领域普遍存在,如今在人工智能中也得到了证实。

机器人研究过去几十年大多局限于单一环境(如一个箱子、一个房间)。然而,真实世界极其复杂多样。要实现从实验室到真实世界的巨大飞跃,我们很可能需要依赖这种由规模带来的涌现能力。

此外,基础模型在音频、音乐、编码、语言等领域已取得巨大成功。机器人技术虽然涉及具身性、因果关系和物理基础,但这并不必然意味着在其他领域有效的扩展配方在此失效。研究其失效原因本身也极具价值。

构建机器人基础模型的配方 🧪

上一节我们探讨了动机,本节中我们来看看如何实际构建机器人基础模型。我们可以借鉴其他领域的成功经验,结合以下几个关键成分:

  1. 高容量架构与扩展法则:利用如Transformer等已被证明具有强大扩展能力的架构。扩展不仅指模型参数,还包括计算能力和训练数据中唯一标记的数量。
  2. 利用现成的基础模型:随着语言、视觉等基础模型的不断改进和普及,机器人领域应积极利用这些模型,将其能力作为构建模块。
  3. 转向离线机器人学习:将数据生成(机器人收集经验)与数据消费(模型训练)过程分离。这与互联网规模数据集的构建方式一致,是训练大型基础模型的关键。

将这些成分结合在一起,一个可能的配方是:将大型离线数据集与高容量架构相结合,并使用语言作为连接不同模块的通用媒介

深入案例研究:RT-1 机器人 Transformer 🤖

上一节我们介绍了高层配方,本节中我们深入第一个具体项目:RT-1(机器人Transformer-1)。该项目旨在探索如何扩展模仿学习。

当时面临的挑战包括:演示数据收集昂贵且缓慢;模型需要对训练分布外的数据具有鲁棒性;模型需要在真实机器人上快速运行(推理延迟约100毫秒);并且需要理解自然语言指令。

RT-1的架构设计如下:

  • 输入:机器人RGB相机图像(历史图像序列)和自然语言指令。
  • 处理:图像通过预训练的EfficientNet主干网络和标记学习器(Token Learner)进行高效处理,与语言标记一起输入Transformer。
  • 输出:模型输出离散化的动作标记,以3Hz频率发送给机器人执行。
  • 关键设计:动作空间被离散化为256个动作;使用标记学习器动态选择相关图像补丁以控制上下文长度。

RT-1在包含13万个演示的数据集上训练,并在多个泛化测试中表现出色,例如在新的物体、桌面纹理和厨房环境中。更重要的是,它能成功融合来自不同机器人平台、不同动作空间(如模拟RL数据)的多样化数据分布,这是传统架构难以做到的。

消融实验表明:

  • 任务多样性比每个任务的数据量更重要。
  • 更大的模型容量(3500万参数)是性能提升的关键。
  • 设计选择如离散化动作、移除自回归历史依赖等对鲁棒性至关重要。

利用基础模型进行规划:SayCan 与 Inner Monologue 📝

上一节我们看了技能学习,本节中我们来看看如何将基础模型用于高层规划。SayCan项目旨在利用大型语言模型(LLM)为机器人生成高层任务计划。

挑战在于:LLM不了解机器人的具体能力,也不清楚当前环境状态。SayCan的解决方案是让LLM讲机器人能懂的语言,同时让机器人向LLM报告它能做什么

  • LLM侧:对一系列已知的机器人技能(如“拿起可乐”)进行评分,反映其与高层指令(如“给我一杯饮料”)的语义相关性。
  • 机器人侧:通过价值函数等评估在当前状态下执行每个技能的成功概率。
  • 结合:将两者分数结合,选择既符合指令语义又切实可行的技能序列作为计划。

这样,随着LLM本身的改进(例如从Flan切换到PaLM),整个系统的规划能力会自动提升,无需修改机器人代码。这体现了“利用能随基础模型改进而改进的方法”这一原则。

为了进一步让规划系统能根据环境反馈进行恢复和调整,后续的Inner Monologue项目引入了视觉语言模型(VLM) 来提供闭环反馈:

  • 被动场景描述:用物体检测模型描述当前场景。
  • 主动场景查询:LLM可以主动询问关于场景的问题(通过VQA)。
  • 成功检测:微调一个模型来判断子任务是否成功。
    这些反馈都以语言形式提供给LLM规划器,使其能够重新规划,处理意外情况(如物体被打翻)或人类的新指令。

利用视觉语言模型增强数据:语言标签重标记 🏷️

上一节我们探讨了规划,本节中我们看看如何利用基础模型解决数据瓶颈。收集大量高质量的机器人演示数据非常昂贵。RT-1的数据集基于700个模板化指令,限制了语义多样性。

语言标签重标记(Language Table Relabeling)工作的目标是:利用少量人工标注和视觉语言模型,为大量现有演示数据自动生成丰富、自由的语义描述

  1. 首先,在3%的人工详细标注数据上微调一个视觉语言模型(如CLIP)。
  2. 然后,用这个微调后的模型为整个数据集的每一段演示生成一个自然语言描述(例如,“拿起桌子右侧的红色可乐罐”)。
  3. 最后,使用这个重新标记后的、包含多样化语言指令的数据集,训练一个新的语言条件策略。

这种方法释放了数据中固有的语义多样性。评估显示,训练出的策略能够响应大量新颖的、自由形式的指令,甚至在训练中从未出现过的场景(如区分两个相同的苹果)上也表现出一定的泛化能力。这表明,适度的标签噪声是可以接受的,视觉语言模型提供的语义基础对于提升策略的泛化能力至关重要。

总结与展望 🚀

本节课中我们一起学习了机器人学习向基础模型和离线学习范式转变的核心思想。我们探讨了其动机,并分析了一个结合高容量架构、现成基础模型和离线数据集的可行配方。

通过RT-1项目,我们看到了如何设计一个可扩展的模仿学习架构来处理多样化数据。通过SayCan和Inner Monologue,我们学习了如何利用LLM和VLM进行高层规划与闭环调整。通过语言标签重标记工作,我们了解了如何利用VLM突破数据收集的瓶颈,释放数据中的语义潜力。

这些工作展示了将基础模型理念应用于机器人系统不同层面(技能学习、规划、数据增强)的巨大潜力。未来的方向包括:探索在线学习与离线学习的结合、处理更长期的任务、突破实时推理的硬件限制,以及进一步推动数据与模型的互操作性。机器人技术与基础模型的结合,正开启一个令人兴奋的新时代。

课程 P17:生物医学中的变换器模型 🧬🤖

在本节课中,我们将学习变换器模型和大型语言模型如何应用于生物医学领域。我们将从基本原理出发,探讨其适用性,并深入分析几篇涵盖临床、蛋白质和基因组应用的经典论文。最后,我们将展望该领域的未来发展趋势。


为什么变换器适合生物医学数据?🤔

上一节我们介绍了课程概述,本节中我们来看看变换器模型为何在生物医学领域表现优异。生物医学数据普遍具有序列化的特点。

以下是几种典型的生物医学数据形式:

  • 临床笔记:医生记录的患者诊疗信息序列。
  • 电子病历:个人就医经历的序列。
  • 蛋白质:由肽键连接的氨基酸序列。
  • 基因组:由数十亿个核苷酸碱基对组成的序列。

鉴于数据的序列本质,我们需要最擅长处理序列的神经网络架构。答案就是变换器。原因如下:

  1. 处理多模态数据:变换器在处理文本、语音、视觉等多种类型数据方面表现出色,而生物医学数据正是多模态的。
  2. 建模长程依赖:变换器能有效捕捉序列中远距离元素间的复杂相互作用,这在理解基因调控、蛋白质结构等领域至关重要。
  3. 适应大规模数据:生物医学数据集可能非常庞大(数十亿标记),变换器的可并行化计算特性使其易于在此类数据上训练。

相比之下,循环神经网络在处理此类大规模、长序列数据时效率较低。


临床应用:评估与对齐医学大语言模型 🏥💬

了解了变换器的普适性后,本节我们聚焦于其在临床医学中的具体应用。一个核心挑战是如何评估并将通用大语言模型与医疗领域的高标准要求对齐。

论文精读:《大型语言模型对临床知识的编码》

这项工作的动机是解决当前医疗AI系统(多为狭窄的单任务模型)与临床实际需求(需要交互和表达能力)之间的差距。基于变换器的大语言模型提供了重塑医疗AI的机会。

构建综合评估基准:MultiMedQA

为了系统评估大语言模型的医学能力,研究团队创建了MultiMedQA基准。该基准整合了多个医学问答数据集,涵盖不同场景:

  • 专业医学考试:如美国医学执照考试风格问题。
  • 医学研究:基于PubMed摘要的问答。
  • 消费者医疗问题:来自真实用户的健康咨询。
    这些数据集在问题格式(长/短)、领域(开放/封闭)上具有多样性,为模型评估提供了全面基础。

超越自动化指标:人工评估框架

自动化指标(如准确率、BLEU)无法捕捉临床应用的细微差别。因此,研究引入了双层人工评估框架:

  1. 临床专家评估:从真实性医学推理潜在危害与偏见等维度评分。
  2. 普通用户评估:评估答案的帮助性可操作性

模型构建与结果:从PaLM到Med-PaLM

研究基于通用的5400亿参数PaLM模型及其指令调优变体Flan-PaLM进行构建。

  • 初始发现:Flan-PaLM在医学多项选择题基准上表现出色,性能随模型规模增大而提升,表明通用大语言模型已编码大量医学知识。
  • 核心挑战:当生成长格式答案并进行人工评估时,模型暴露出幻觉信息不完整等问题,临床医生明显偏好人类专家的答案。
  • 高效对齐方案:采用指令提示调优技术。该方法冻结大模型参数,仅学习少量额外的“软提示”向量。使用数百个临床医生示例即可高效地将模型与医疗领域的安全、准确要求对齐,由此得到Med-PaLM模型。
  • 对齐效果:Med-PaLM在各项人工评估指标上显著缩小了与临床医生答案的差距,生成的答案更有帮助、更安全。

本节要点

  • 通用大语言模型编码了医学知识,但其直接输出不符合临床安全标准。
  • 指令提示调优是一种数据与计算高效的对齐方法。
  • 全面的基准和以人为中心的评估框架对医疗AI发展至关重要。

蛋白质科学应用 🧪📝

上一节我们探讨了临床语言模型,本节我们将视角深入,看看变换器如何推动蛋白质科学研究。

论文精读一:《通过线性可扩展的长卷积变换器进行蛋白质的大规模语言建模》

核心问题:蛋白质序列可能极长,建模其长程相互作用需要高效的变换器架构。
解决方案:提出Performer架构,它通过低秩分解近似标准的softmax注意力核。
优势

  • 计算和空间复杂度从序列长度的平方(O(n²))降低到接近线性(O(n))。
  • 在保持与标准变换器相当准确性的同时,大幅降低了计算成本,特别适合长蛋白质序列建模。

论文精读二:《Protein Llama:基于模型的自然语言蛋白质注释》

核心问题:大量蛋白质的功能未知,需要高效的工具进行注释和功能查询。
解决方案:训练一个T5模型(编码器-解码器变换器),将氨基酸序列直接映射到自然语言描述(类似于图像描述生成)。
影响

  • 为之前未表征的数千万蛋白质生成了文本描述。
  • 支持自然语言查询(如“找到小型Cas9蛋白变体”),可加速蛋白质工程和药物发现。

本节要点:变换器不仅能处理蛋白质序列预测任务,还能桥接序列与人类可读的知识,极大地提升了蛋白质研究的可及性和效率。


基因组学应用 🧬🔍

在了解了蛋白质领域的应用后,我们最后进入生命的基础——基因组学,看看变换器如何在此大放异彩。

论文精读一:《深度共识:用于序列校正的序列变换器》

核心问题:第三代测序技术(如PacBio)产生的原始读取存在错误,需要校正以提高准确性。
解决方案:开发DeepConsensus模型,这是一个变换器模型,输入为测序得到的多个子读取,输出为校正后的高精度序列。
技术关键:使用基于距离的序列对齐损失,而非标准交叉熵损失,以更好地处理DNA序列中常见的插入/删除错误。
现实影响:该模型已被用于创纪录的“超快速纳米孔测序”中,帮助在数小时内诊断遗传性心脏病,展示了其临床转化潜力。

论文精读二:《Enformer:通过整合长距离相互作用进行有效基因表达预测》

核心问题:大多数与疾病相关的基因变异位于非编码区,通过影响远距离的基因调控元件(如增强子)来发挥作用,传统CNN模型难以捕捉这种长程相互作用。
解决方案:提出Enformer模型,结合CNN与变换器模块。变换器模块配备相对位置编码,能够有效建模超过10万碱基对的长程调控相互作用。
成果:Enformer在预测基因表达和增强子-启动子相互作用方面显著优于之前的CNN基线,证明了变换器在理解基因组三维调控逻辑上的强大能力。

本节要点:在基因组学中,变换器通过其卓越的长程依赖建模能力,正在革新我们对基因调控的理解和基因型-表型关系的预测。


未来展望与总结 🚀

在本节课中,我们一起学习了变换器模型在生物医学多个层面的革命性应用。

总结如下

  1. 临床医学:大语言模型是强大的医学知识载体,但必须通过指令调优等技术与临床安全标准对齐。未来应用将从非诊断性工作流辅助逐步过渡。
  2. 蛋白质科学:变换器实现了从序列到功能的高效映射和自然语言交互,正在成为蛋白质发现与设计的核心工具。
  3. 基因组学:变换器能精准建模基因组的长程调控相互作用,极大地提升了基因表达预测和变异解读的准确性。

未来展望
生物医学AI的未来将是构建统一的、多模态的基础模型。临床、蛋白质和基因组学应用并非孤岛,它们的结合将催生新的科学发现。人工智能在生物医学领域的贡献,最终目标是与科学家和医生一道,推动人类健康,甚至可能取得诺贝尔奖级别的突破。

变换器不仅改变了生物医学研究,其在此领域的需求(如长序列建模)也反过来推动了AI架构本身的进步,形成了良性的双向学习循环。这是一个充满机遇、令人兴奋的交叉领域。

课程 P18:源于联合神经科学的人工智能 🧠

在本节课中,我们将学习稀疏分布式记忆(SDM)模型,并探讨其与Transformer注意力机制之间的深刻联系。我们将看到,一个源于神经科学、旨在解释大脑如何存储和检索记忆的模型,如何为现代人工智能中最强大的架构之一提供理论基础。


概述:从大脑到人工智能

稀疏分布式记忆(SDM)是一个有数十年历史的计算模型,旨在以生物合理的方式解释大脑的联想记忆功能。Transformer及其注意力机制则是近年来推动人工智能发展的核心架构。本节课将揭示,SDM的读写操作在数学上可以近似Transformer中的注意力机制,这为理解AI的成功以及探索更类脑的智能系统提供了新的视角。


第一部分:稀疏分布式记忆(SDM)简介 🧩

上一节我们概述了课程目标,本节中我们来看看SDM模型的基本动机和核心操作。

SDM的动机基于一个根本问题:大脑如何以高容量、对噪声鲁棒且生物可行的方式读写记忆,以便后续能正确检索。它与Hopfield网络等关联记忆模型的不同之处在于,它在非常高维的二进制向量空间中操作,且只有一小部分“神经元”被激活(稀疏性),所有读写操作都适用于被激活神经元附近的所有单元(分布式)。

SDM的写操作

以下是SDM写入记忆的过程:

  1. 我们有一个高维二进制向量空间,使用汉明距离作为度量。
  2. 一个待存储的“模式”(例如一个绿色向量)会激活空间中一定汉明距离内的所有神经元(用圆圈表示)。
  3. 这些被激活的神经元内部会存储这个绿色模式。神经元可以叠加存储多个模式。
  4. 接着,我们写入第二个模式(橙色)和第三个模式(蓝色),它们会激活各自附近的神经元并存储自身。

SDM的读操作

现在,我们想从系统中读取信息:

  1. 我们提出一个查询(用粉色星星表示),它也是一个高维向量,会激活空间中附近的神经元。
  2. 被激活的神经元会输出它们之前存储的所有模式。
  3. 系统对输出的所有模式进行简单的多数表决,以决定最终的检索结果。例如,如果输出的模式中蓝色最多,则查询结果就更新为蓝色。

SDM的核心思想在于,查询与存储模式之间的相似性,由它们所激活的神经元集合的交集大小来决定。这个交集大小近似于指数衰减,这是连接SDM与注意力机制的关键。


第二部分:Transformer注意力机制回顾 ⚙️

上一节我们介绍了SDM如何读写记忆,本节中我们回顾一下Transformer中的注意力机制,这是进行比较的基础。

注意力机制是Transformer架构的核心。我们以一个简单的序列预测任务为例:预测句子“The cat sat on the ___”中的下一个词“mat”。

注意力操作有四个主要步骤:

  1. 生成键(Key)、值(Value)和查询(Query):输入序列中的每个词(如“The”、“cat”、“sat”)通过线性变换生成对应的键向量和值向量。待预测的下一个词(作为上下文)生成查询向量。
  2. 计算相似度:将查询向量与每个键向量进行点积运算,计算相似度。
  3. Softmax归一化:对相似度分数应用softmax函数,将其转化为加和为1的注意力权重。Softmax会让较大的相似度值变得更大,实现“聚焦”重要信息、忽略次要信息的效果。
  4. 加权求和:使用注意力权重对所有的值向量进行加权求和,得到最终的输出向量,用于后续的预测。

完整的注意力方程可以表示为:

[
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V
]

其中,( Q ) 是查询矩阵,( K ) 是键矩阵,( V ) 是值矩阵,( d_k ) 是键向量的维度。


第三部分:SDM如何近似注意力机制 🔗

上一节我们回顾了注意力机制,本节中我们来看看SDM的数学描述如何与注意力机制惊人地相似。

连接SDM与注意力的关键在于:在高维空间中,两个超球体(即SDM中模式与查询的激活区域)的交集大小,随着它们中心点之间距离的增加而近似指数衰减。这与注意力机制中,使用点积相似度再经过softmax(本质是指数运算)得到的权重分布非常相似。

具体来说,在一定的假设和变换下,SDM的读取更新规则可以重写为以下形式:

[
\text{SDM-Read} \approx \frac{\sum_{\mu} \exp(\beta \cdot \text{sim}(q, p_\mu)) \cdot v_\mu}{\sum_{\mu} \exp(\beta \cdot \text{sim}(q, p_\mu))}
]

这里,( q ) 是查询,( p_\mu ) 是存储的模式,( v_\mu ) 是对应的值,( \beta ) 是一个缩放参数,( \text{sim} ) 是相似性度量(如余弦相似度)。这个形式与注意力机制中的加权求和公式在本质上是一致的。

因此,我们可以得出一个核心观点:Transformer的注意力操作,可以看作是在近似执行一种稀疏分布式记忆的读取过程。注意力中的softmax对应着SDM中交集大小的指数衰减特性,而查询、键、值的概念也对应着SDM中决定激活(键)和存储内容(值)的分离。


第四部分:生物学联系与启发 🧬

上一节我们从数学上建立了SDM与注意力的联系,本节中我们探讨这种联系的生物学意义以及对AI的启发。

SDM模型最初就是为了解释小脑等脑区的功能而提出的。其电路模型可以很好地映射到小脑的微观结构:

  • 输入纤维:决定神经元是否激活(类似“键”)。
  • 爬行纤维:独立地指导神经元存储什么内容(类似“值”)。
  • 浦肯野细胞:执行类似“多数表决”的整合与去噪操作。

这表明,大脑可能早已在使用一种高效且鲁棒的“注意力”机制来处理信息。Transformer在工程上的巨大成功,或许正是因为它在无意中捕捉到了这种关键的认知操作原理。

这种联系是双向的:

  1. 从神经科学到AI:SDM的生物学合理性为注意力机制提供了理论基础,并可能启发更高效、更鲁棒的类注意力模块(例如,探索替代softmax的方法)。
  2. 从AI到神经科学:Transformer的成功反过来支持了SDM可能是小脑等功能脑区的一个良好计算模型,为神经科学提供了可检验的预测。

第五部分:总结与展望 🚀

本节课中,我们一起学习了稀疏分布式记忆(SDM)模型和Transformer注意力机制,并深入探讨了它们之间深刻的理论联系。

我们学到的主要内容有:

  1. SDM是一个在高维稀疏空间中工作的联想记忆模型,通过激活神经元的交集来实现读写。
  2. Transformer的注意力机制通过查询、键、值的点积和softmax操作,实现了对信息的聚焦与整合。
  3. 数学上,SDM中模式与查询激活区域的交集大小近似指数衰减,这使得其读取规则可以重写为与注意力机制相似的形式。
  4. 这一联系将现代人工智能的核心组件与大脑的可能工作原理桥接起来,具有重要的理论和实践意义。

这项研究提出了许多有趣的前沿问题:Transformer的成功是否因为它模拟了大脑的基本算法?SDM是否精确描述了小脑的功能?能否基于SDM原理设计出更强大的AI架构?对这些问题的探索,将继续推动神经科学与人工智能的融合,帮助我们更好地理解智能的本质,并建造更先进的智能系统。

课程 P2:GPT模型的发展与Transformer的应用 🚀

在本节课中,我们将学习Transformer架构在语言模型中的发展历程,特别是GPT系列模型。我们将从早期的语言模型开始,逐步了解GPT-1、GPT-2、GPT-3以及它们在无监督学习、多模态处理和代码生成方面的应用。课程将解释核心概念,并通过公式和代码示例帮助初学者理解。


语言模型的早期发展 📜

上一节我们介绍了课程概述,本节中我们来看看语言模型的早期发展。

早期的语言模型基于n-gram统计方法。这类模型通过查找表来预测下一个词,但生成的句子往往不连贯。

公式示例:一个简单的bigram模型计算下一个词 w_t 的概率为:
P(w_t | w_{t-1}) = count(w_{t-1}, w_t) / count(w_{t-1})

生成的样本类似这样:“从$2004063%的 99.6 亿”。这些词虽然来自同一领域,但句子缺乏连贯性。


深度学习与递归神经网络 🤖

随着深度学习的兴起,基于神经网络的语言模型开始出现,特别是递归神经网络(RNN)。RNN通过内部状态记忆信息,避免了巨大的查找表。

代码示例:一个简单的RNN单元更新其隐藏状态 h_t 的公式为:
h_t = tanh(W_{hh} * h_{t-1} + W_{xh} * x_t)

使用RNN生成的样本为:“生活的意义是古代人类繁殖的传统对好男孩的影响较小,因此移除图形的时机不佳”。虽然句子仍然缺乏明确意义,但开始具备真实句子的流畅感。


LSTM模型的改进 🔄

LSTM(长短期记忆网络)是RNN的一种架构创新,具有更好的梯度流,能更有效地建模长期依赖关系。

通过LSTM模型生成的样本为:“在过去三年中,市场上迅速出现了更多新技术,以及越来越多的公司必须应对不断变化的在线环境或挑战”。句子开始变得有意义,尽管存在如“不断变化”这类短语重复的伪影。


Transformer与自回归语言模型 ⚡

从2018年开始,基于自回归的Transformer语言模型出现,它们在建模长期依赖关系方面表现更佳。

以下是模型根据提示“这段文字在堪萨斯州摇摆”生成的完成示例。完成内容在多个句子中保持连贯,尽管存在如“无论费用如何”的拼写错误。


GPT-2:大规模Transformer模型 💪

GPT-2是一个拥有15亿参数的Transformer模型。它能根据虚构的提示生成连贯、多段落的内容。

例如,对于提示“寻找独角兽和南美的科学家”,模型创造了虚构的“佩雷斯博士”角色,并使其在多个段落中保持一致。值得注意的是,这是从10个生成样本中挑选出的最佳结果,表明生成过程仍需要多次采样以获得高质量输出。


GPT-3:性能的飞跃 🦾

GPT-3拥有1750亿参数,其生成文本的连贯性和质量显著提升。从GPT-2的多个样本中挑选的最佳结果,大致相当于GPT-3的首次生成结果。

以下是GPT-3生成的小说风格文本示例:“血液透过她的外套,深红色的花朵在她的胸口绽放”。其隐喻和比喻非常富有诗意,表明模型能理解并模仿特定文体风格。

关于模型规模的研究表明,性能提升符合神经网络规模法则。最初的性能提升(如1%)与最后的提升效果不同,后期的提升能更有效地挤出准确性。


真实性与检测挑战 🕵️

随着生成文本越来越真实,一个自然的问题是:人类能否区分真实与生成的文本?

在一项针对新闻文章的测试中,随着GPT-3参数量的增加,人类区分其生成文章与真实文章的能力下降至随机水平。这表明模型生成的文本已高度逼真。

生成新闻文章的一种可能方法是:提供几篇新闻文章作为引导,设置分隔符,然后让模型从那里开始生成。


为何关注语言建模?🎯

我们为何关心语言建模?它似乎只是一个生成文本的狭窄能力。实际上,语言建模是解决无监督学习问题的关键工具。

监督学习(如图像分类)需要大量标注数据,而这在语言任务中往往稀缺且昂贵。无监督学习则试图从海量未标记数据(如互联网文本)中学习通用特征,以适配各种下游任务。

语言是尝试无监督学习的理想领域,因为存在大量未标记数据。


为何使用自回归生成模型?🧠

选择自回归生成模型基于一个直观论点:“我无法创造的,我不理解。”(理查德·费曼)。反之,能够生成多样且连贯的样本,意味着模型建立了有助于语言理解的表征。

自回归模型通过预测下一个词进行训练。虽然这是一个局部目标,但要出色完成(例如,预测推理小说的结局),模型需要对整个故事的上下文和逻辑有深刻理解。


OpenAI的早期探索:从情感分析到GPT-1 🔍

OpenAI的首次探索是训练一个LSTM模型来预测亚马逊评论中的下一个字符。尽管没有使用任何情感标签,但模型隐藏层中的某些神经元激活与评论情感(正面/负面)高度相关。

在此基础上训练的线性分类器能有效预测情感。这表明,仅通过预测下一个字符,模型就能学习到有用的语义特征。

GPT-1将这种方法推广到互联网文本的预训练,并在多种下游任务(如文本蕴含、相似性分析)上通过微调取得了良好效果。微调过程非常轻量,通常只需为特定任务添加一个新的分类头。


GPT-2:零样本任务处理 🌐

GPT-2的核心洞察是:许多下游任务可以自然地表述为语言模型任务,从而实现零样本学习。

以下是任务表述示例:

  • 阅读理解:将段落和问题拼接为:“问题:[问题文本] 回答:”,让模型完成。
  • 文本摘要:在文章段落后添加“TLDR:”,让模型生成摘要。
  • 机器翻译:设置提示为:“将法语翻译成英语:[法语句子] 英语:”

随着模型参数规模的增加,这种零样本能力逐渐显现并增强。规模是性能提升的关键因素。


GPT-3:元学习与上下文学习 🧩

GPT-3的主要洞察是将训练过程视为元学习。模型在训练中发展了根据提示快速识别并适应新任务的能力。

在推理时,通过提供少量示例(少样本学习),模型能内化任务模式。例如,在算术任务中,提供几个“题目-答案”对,然后让模型解决新题目。

示例提示

3 + 4 = 7
5 + 1 = 6
31 + 41 =

研究表明,在数十个任务上,模型的零样本、单样本和少样本性能都随规模平滑提升,且少样本与零样本之间的性能差距也随规模扩大而改善。


Transformer的普适性:超越语言 🌈

Transformer是序列模型,可处理任何字节序列。这引发了一个问题:它能否用于建模图像、音频等其他模态?

答案是肯定的,即使在图像这种已有强大归纳偏置(卷积)的领域。


图像GPT:像素预测 🖼️

将GPT应用于图像,只需将目标改为预测下一个像素。图像被展开为像素序列进行训练。

这个称为“图像GPT”的模型,在给定图像上半部分时,能生成多样且合理的下半部分。例如,给定一只鸟的上半身,模型可能将其置于不同的背景中。

更重要的是,在低数据 regime(如SVHN数据集)中,使用该模型特征训练的线性分类器,其性能优于使用在ImageNet上有监督预训练的ResNet特征。这表明纯序列建模方法即使没有2D归纳偏置也能学习到有效表征。


DALL·E:多模态生成 🎨

DALL·E探索了将文本和图像两种模态同时输入Transformer模型。模型学习根据文本描述生成图像。

除了文本到图像的生成,DALL·E还能进行零样本图像变换,例如:

  • 风格转换:输入一张猫的照片和“素描”描述,模型能将照片下半部分渲染为素描风格。
  • 语义编辑:输入一张猫的照片和“给猫戴上太阳镜”的描述,模型能进行相应编辑。

这些能力并非通过专门训练获得,而是模型从海量图文配对数据中学习到的。


Codex:代码生成模型 💻

为什么要专门训练代码生成模型?

  1. GPT-3已具备初步代码生成能力,专门训练有望获得更大提升。
  2. 代码有明确的正确性标准(通过单元测试),评估更客观。
  3. 存在大量公开的代码数据。

我们创建了包含164个编程问题的人类评估数据集,每个问题包含函数签名、文档字符串和单元测试。

评估指标是pass@k:生成k个样本,计算至少有一个样本通过所有单元测试的问题比例。


Codex的训练与评估 ⚙️

Codex通过在约160GB的GitHub代码上微调GPT-3得到。为了提高训练效率,引入了额外的标记来压缩代码中常见的连续空格。

在评估中,简单的任务(如列表元素加一)通过率很高(90%),而复杂任务(如特定解码函数)通过率较低(<1%)。

研究证实,传统的语言评估指标(如BLEU分数)与代码的功能正确性相关性很弱,凸显了新评估方法的必要性。


采样的力量与模型局限 🎲

一个关键发现是:采样是一种异常有效的提升方式。通过从模型中生成大量样本(如100个),并从中选择,可以将任务通过率从不足30%大幅提升至70%以上。这表明模型能生成多种功能不同的解决方案。

在没有单元测试的情况下,按生成概率对样本进行排序是一种有效的启发式方法。

Codex也存在局限,例如在处理长距离变量依赖和复杂操作组合时仍有困难。

通过在有正确解的竞争编程和持续集成数据上进一步微调(得到Codex-S),模型性能可以得到进一步提升。


总结与要点 ✅

本节课我们一起学习了以下核心内容:

  1. 神经语言建模进展迅速:从n-gram、RNN/LSTM发展到Transformer,生成文本的连贯性和质量实现了巨大飞跃。
  2. 推动无监督学习:GPT系列的核心目标是通过语言建模推动无监督学习,利用海量未标记数据学习通用表征。
  3. 自回归建模具有普适性:Transformer的自回归框架不仅能处理语言,在图像、多模态数据上也表现出强大能力。
  4. 强大的代码生成模型:通过微调GPT得到的Codex模型,在代码生成任务上表现优异,并且采样是提升其性能的有效策略。

通过本节课,你应该对GPT模型的发展脉络、Transformer架构的灵活性以及它们在语言、图像和代码领域的应用有了基本的了解。

课程 P3:视觉中的变换器 🧠

在本节课中,我们将要学习视觉变换器。这是一种将原本用于处理文本的变换器模型,应用到计算机视觉任务中的方法。我们将探讨其背后的动机、核心原理、实现方式以及它如何通过规模化训练超越传统的卷积神经网络。


背景与动机 🎯

上一节我们介绍了视觉变换器的概念。本节中,我们来看看为什么我们需要通用的视觉表示。

我和我的合作者的目标是找到一种通用的视觉表示。这意味着我们希望模型能够像人类一样,通过少量示例快速理解新事物并进行泛化。例如,人类在看到几朵不同种类的花后,就能识别出一种从未见过的新花。这种能力对于构建能够理解世界的智能系统至关重要。

一个理想的场景是,未来能有机器人帮助完成日常任务,而良好的通用视觉理解能力是其中的关键组成部分。


衡量进展:视觉任务适应基准 📊

为了衡量向“通用视觉表示”这一目标的进展,我们与合作伙伴创建了“视觉任务适应基准”。

这是一种对我们之前提到的“小游戏”的形式化。该基准包含一系列多样化的视觉任务,例如:

  • 自然图像分类:如识别猫、狗。
  • 专业图像理解:如分析卫星图像。
  • 非分类任务:如计数、估算距离(可通过分类接口表达)。

参与者可以使用任何数据和模型进行预训练。然后,模型需要在每个新任务上,仅凭每个类别的几个示例(少量样本)进行适应(如微调),并表现出色。最终,我们计算所有任务的平均得分,以此评估模型的通用视觉表示能力。


核心概念:预训练与迁移 🔄

在深入变换器之前,我们需要明确两个核心概念:

  1. 预训练:也称为上游训练。指在一个大型数据集上初步训练模型,使其学习通用的特征表示。
  2. 迁移:也称为下游任务。指将预训练好的模型应用到新的、特定的任务上,通常只需少量数据和微调。

我们的工作流程是:先进行大规模预训练,然后通过简单的微调将其迁移到各种下游任务中。


规模化监督预训练的突破 💥

我们尝试了多种预训练方法,包括自监督和半监督学习。但一个关键的突破来自于纯粹的规模化监督预训练

我们发现,要获得强大的通用视觉表示,需要两个关键要素:

  1. 海量数据:使用远超ImageNet(300万张图像)规模的数据集进行训练。
  2. 大型模型:同时扩大模型的参数量。
  3. 耐心:训练需要非常长的时间,性能提升可能在训练后期才显现。

公式可以简单表示为:性能提升 ∝ 数据规模 × 模型规模 × 训练时间

当同时扩展数据和模型规模时,模型在下游任务上的迁移学习性能、以及对分布外数据的鲁棒性都获得了显著提升。这为尝试新架构(如变换器)奠定了基础,因为变换器在数据充足时往往表现更优。


视觉变换器的核心设计 🧩

在语言领域,变换器已取代LSTM成为主流。我们思考:既然视觉领域现在也有了海量数据,能否将变换器直接应用于图像?

视觉变换器的设计非常直观:

  1. 图像分块:将输入图像分割成固定大小的不重叠图像块(例如16x16像素)。
  2. 线性投影:将每个图像块展平,并通过一个可学习的线性层投影到一个嵌入向量中。这类似于NLP中将单词转换为词向量。
    # 伪代码示意:将图像块投影为嵌入向量
    patch_embedding = Linear(flatten(patch))
    
  3. 添加位置信息:为每个嵌入向量添加一个可学习的位置嵌入,因为模型本身没有空间位置的概念。
  4. 添加分类令牌:在序列开头添加一个可学习的[CLS]令牌,其最终状态用于分类。
  5. 变换器编码器:将得到的序列(图像块嵌入 + 位置嵌入 + [CLS]令牌)输入标准的变换器编码器进行处理。
  6. 分类头:用[CLS]令牌对应的输出向量进行最终分类。

简而言之,视觉变换器就是将图像视为一系列“视觉单词”(图像块)的序列,然后直接套用语言变换器的架构


视觉变换器 vs. 卷积神经网络 ⚖️

视觉变换器的性能与数据规模密切相关:

  • 数据量较少时:视觉变换器的表现不如经典的ResNet等卷积神经网络。
  • 数据量巨大时:视觉变换器开始展现出优势,其性能可以超越ResNet,并且缩放定律(scaling laws)表现更好,即随着模型和数据增大,性能提升的曲线更优。

这表明,视觉变换器是面向未来的架构。随着可用数据量的持续增长,其潜力巨大。


关键细节与特性 🔍

以下是关于视觉变换器的一些重要细节:

位置嵌入的学习
尽管我们没有提供任何位置信息,模型通过可学习的位置嵌入,自动学会了捕捉图像块之间的空间邻近关系。可视化显示,学习到的位置嵌入与相邻位置具有更高的相似性。

模型缩放策略
我们研究了如何高效地缩放视觉变换器。发现同时增加模型深度(层数)和宽度(嵌入维度)是有效的。此外,减小图像块尺寸(从而增加序列长度)是提升计算资源利用率、获得性能增益的一个有效维度。

计算复杂度
自注意力机制的计算复杂度与序列长度的平方成正比。对于图像,序列长度是图像块的数量,因此整体复杂度与图像尺寸的四次方相关。虽然在当前常用分辨率下尚可接受,但在处理极高分辨率图像时,这将成为一个挑战,也是后续研究的重点。

感受野分析
对自注意力机制的分析发现,在网络的浅层,有些注意力头关注局部邻域,有些则关注全局。随着网络加深,注意力逐渐更多地聚焦于全局信息。这表明模型自动学习了从局部到全局的特征抽象。


超越视觉变换器:更少的归纳偏置 🚀

视觉变换器虽然减少了卷积神经网络固有的局部性等归纳偏置,但其输入层(线性投影分块)仍是一种手工设计。我们探索了MLP-Mixer等架构,它使用纯粹的多层感知机来处理图像块序列,进一步减少了架构中的手工设计成分。

实验表明,在超大规模数据上,这类更简单、更通用的架构有可能表现出与视觉变换器相当甚至更优的性能。这支持了我们的核心哲学:在足够数据的前提下,减少人为的归纳偏置,让模型自己从数据中学习最优的解决方案


总结 📝

本节课中我们一起学习了视觉变换器。我们从对通用视觉表示的追求出发,介绍了通过规模化监督预训练获得强大模型的方法。核心内容是视觉变换器的设计:它将图像分割为块序列,并利用标准的变换器架构进行处理。其性能在数据充足时能超越CNN,且具有良好的缩放特性。最后,我们看到了向更少归纳偏置架构(如MLP-Mixer)探索的趋势,这预示着在巨量数据驱动下,视觉模型的设计可能变得更加通用和简洁。

视觉变换器开启了计算机视觉研究的新篇章,证明了变换器架构在视觉领域的强大潜力,并强调了数据与模型规模化的极端重要性。

课程 P4:4. 决策变换器 🧠 - 通过序列建模进行强化学习

在本节课中,我们将要学习一种名为“决策变换器”的新方法,它使用序列建模(特别是变换器模型)来处理强化学习问题。我们将探讨其动机、核心思想、模型架构、训练方法以及实验结果。


动机:为什么需要变换器进行强化学习?

在过去的几年里,变换器模型在人工智能的许多领域(如自然语言处理、计算机视觉)都取得了巨大成功。这些模型具有出色的可扩展性和稳定的训练动态。然而,强化学习领域,特别是深度强化学习,通常面临训练不稳定、模型规模较小(通常只有几千万参数)和难以扩展的挑战。

强化学习的目标是让智能体通过与环境的交互试错,学习一个策略以最大化累积奖励。传统的强化学习方法(如基于动态规划的算法)在优化上往往不稳定。本次演讲的主题是探讨如何将变换器的优势引入强化学习,特别是“离线强化学习”场景,即我们仅使用预先收集的交互数据(而非实时交互)来训练智能体。


决策变换器模型概述

上一节我们介绍了强化学习面临的挑战。本节中,我们来看看决策变换器的核心模型设计。

决策变换器的核心思想非常简单:将强化学习中的轨迹(状态、动作、奖励序列)视为一个序列,并使用因果变换器(类似于GPT)对其进行建模。模型的目标是预测动作序列。

模型输入与输出

模型的输入是一个轨迹序列,其中每个时间步包含三个标记:

  1. 状态 (State)
  2. 动作 (Action)
  3. 回报 (Return)

这里的“回报”不是单步奖励,而是未来回报,即从当前时间步到轨迹结束的累计奖励之和。其公式为:
R_t = Σ_{t'=t}^{T} r_{t'}
其中,r_{t'} 是时间步 t' 的即时奖励,T 是轨迹总长度。

模型的输出是预测的动作序列。我们使用因果变换器,这意味着在预测时间步 t 的动作时,模型只能看到时间步 t 之前的所有信息(状态、动作和回报)。

模型前向传播

以下是模型前向传播的关键步骤:

  1. 标记化与嵌入:将每个时间步的状态、动作、回报分别嵌入为向量。
  2. 位置编码:为每个标记添加位置编码,以注入时间步信息。
  3. 标记融合:将状态嵌入、动作嵌入和回报嵌入相加(而非拼接),形成该时间步的最终输入向量。公式表示为:
    输入向量_t = 状态嵌入_t + 动作嵌入_t + 回报嵌入_t
  4. 变换器处理:将序列输入因果变换器。
  5. 动作预测:从变换器的输出中,只提取对应“动作”位置的隐藏表示,用于预测动作。对于连续动作使用均方误差损失,对于离散动作使用交叉熵损失。

如何训练与使用决策变换器?

我们已经了解了模型的结构,现在来看看如何训练和使用它。

训练过程

训练决策变换器是一个监督学习过程,目标是最小化预测动作与数据集中真实动作之间的差异。这避免了传统强化学习中不稳定的动态规划目标,使得训练更加稳定。

评估与使用(自回归生成)

在评估阶段,我们使用模型以自回归的方式生成轨迹:

  1. 初始化:设定一个目标回报(例如,设置为略高于数据集中最佳轨迹的回报),并给定初始状态。
  2. 生成循环
    • 模型根据当前的序列(包含历史状态、动作、回报以及当前的目标回报和状态)预测第一个动作。
    • 执行该动作,从环境中得到下一个状态和即时奖励。
    • 计算新的回报:新回报 = 旧回报 - 刚获得的即时奖励。这代表了达成剩余目标还需获得的奖励。
    • 将新的状态、预测的动作和更新后的回报添加到序列末尾。
    • 保留最近K个时间步(上下文长度)的序列,输入模型,预测下一个动作。
  3. 重复步骤2,直到轨迹结束。

通过改变输入的目标回报,我们可以引导模型产生不同性能水平的策略,这为实现多任务和条件策略提供了可能。


核心优势与实验结果

决策变换器的设计带来了几个关键优势,并通过实验得到了验证。

实验验证的关键优势

以下是论文中展示的一些核心实验结果和结论:

  • 在标准离线RL基准上具有竞争力:在Atari游戏和OpenAI Gym的MuJoCo环境中,决策变换器的性能与最先进的无模型离线RL方法(如CQL)相当。
  • 稳定的训练:得益于监督学习目标,其训练过程比许多传统RL算法更稳定。
  • 处理长期信用分配:在“钥匙到门”等需要长期信用分配的稀疏奖励环境中,决策变换器显著优于传统方法。
  • 回报条件化:模型能够根据输入的不同目标回报,生成相应性能水平的策略,显示出良好的外推和条件控制能力。
  • 对数据量的鲁棒性:在数据量相对较少时(例如Atari),决策变换器相比简单的过滤式行为克隆方法表现更优。
  • 长上下文的重要性:增加变换器的上下文长度(K)能显著提升性能,证明了利用历史信息(非马尔可夫性)对决策有益。

与行为克隆的对比

一个强有力的基线是“前百分位行为克隆”,即只使用数据集中回报最高的前百分之X的轨迹进行行为克隆。决策变换器在中等数据量下与该基线表现相当,但在低数据量或需要轨迹“拼接”以实现更优行为的任务中表现更好。


未来方向与总结

决策变换器为强化学习提供了一种基于序列建模的新范式。本节课中我们一起学习了它的工作原理、简单而有效的设计以及初步的实验成果。

未来可能的研究方向

  1. 多模态输入:集成视觉、语言等多种感知输入,构建更通用的决策智能体。
  2. 丰富的多任务指定:超越回报条件化,探索通过目标状态、自然语言指令等指定任务。
  3. 多智能体系统:利用变换器处理长序列和非马尔可夫交互的优势,应用于部分可观察的多智能体环境。
  4. 在线强化学习:探索如何将决策变换器框架与探索机制结合,扩展到在线交互学习场景。

总结

决策变换器通过将强化学习问题转化为序列预测问题,借鉴了变换器在感知领域的成功经验。其设计简单,训练稳定,并在需要长期推理和信用分配的任务中显示出潜力。这项工作是为构建可扩展、通用决策模型迈出的第一步。

课程 P5:专家混合(MoE)范式和开关变压器 🧠

在本节课中,我们将学习如何通过稀疏性来扩展变压器模型。具体来说,我们将探讨一种名为“专家混合”的范式,以及其简化且高效的变体——“开关变压器”。我们将了解它们的工作原理、优势、训练技巧以及如何在实际硬件上高效运行。


概述:通过稀疏性扩展模型

社区普遍认识到,扩大模型规模是提升性能的重要途径之一。目前,不同实验室之间几乎在进行一场持续的“军备竞赛”,争相训练最大的模型。一篇名为“Scaling Laws for Neural Language Models”的论文发现,模型性能遵循可预测的缩放定律,随着模型大小呈幂级数增长。因此,如果我们训练非常大的模型,可以预期获得稳定的性能提升。

然而,传统的扩展方式主要是增加模型的维度(即参数数量),这带来了巨大的计算成本。稀疏性为我们提供了一个新的扩展维度。其核心思想是:每个输入可以激活并使用不同的权重子集,从而应用不同的计算量。这可以追溯到1991年的“自适应局部专家的混合”论文,最近被Noam Shazeer和谷歌大脑的团队重新审视并应用于LSTM和Transformer架构中。


专家混合(MoE)范式

上一节我们介绍了扩展模型的新思路——稀疏性。本节中,我们来看看实现稀疏性的经典方法:专家混合。

MoE的工作原理大致如下:

  • 模型包含多个“专家”,每个专家通常是一个小型前馈网络。
  • 模型还有一个额外的“路由器”网络,它接收输入并输出一个概率分布,指示应将输入发送给哪些专家。
  • 根据路由器的输出,选择概率最高的一个或几个专家来处理该输入。
  • 最终输出是所有被选专家输出的加权组合。

这种方法,尤其是在机器翻译任务中,取得了相当大的成功。然而,它也引入了一些复杂性,例如更高的通信成本和训练不稳定性。


开关变压器:简化的MoE

上一节我们看到了MoE的基本原理及其挑战。本节中,我们来看看一个旨在解决这些问题的简化变体——开关变压器。

开关变压器的工作方式如下:

  1. 在一个标准的Transformer模型中(包含自注意力层和前馈层),我们每隔一层或两层,就用一个“开关层”替换原来的前馈层。
  2. 在开关层中,输入令牌会被发送到一个路由器。
  3. 路由器计算该令牌对于所有专家的概率分布。
  4. 与MoE不同,开关变压器只将令牌发送给概率最高的那个专家(即Top-1路由)。
  5. 被选中的专家(一个独立的前馈网络)处理该令牌并产生输出。

核心简化公式
输出 = 专家[argmax(路由器(输入))] (输入)

这种仅发送给一个专家的策略,显著简化了算法并降低了通信成本。


改进的训练技术

为了让稀疏模型(特别是开关变压器)能够稳定且高效地训练,研究人员引入了多项改进技术。以下是关键的三个方面:

1. 选择性精度

在训练大型模型时,使用较低的精度格式(如bfloat16)非常重要,因为它能提升速度并减少内存占用。然而,稀疏模型在低精度下训练时容易不稳定。研究发现,将路由器计算中的一部分(特别是涉及指数运算的部分)保持为float32精度,可以极大地提升训练稳定性,而对整体速度影响微乎其微。

2. 改进的初始化与调度

标准的权重初始化方法可能导致稀疏模型训练不稳定。一个简单而有效的修复方法是缩小初始化的规模,这被证明能显著提高模型质量。此外,也采用了改进的学习率调度策略。

3. 专家内Dropout与负载均衡

由于稀疏模型参数更多,在数据量较小的下游任务上微调时更容易过拟合。解决方法是在专家层内部使用更高的Dropout率来进行正则化。

同时,为了在硬件上高效运行,我们希望每个专家接收到的令牌数量大致相等。因此,在损失函数中添加了一个可微分的负载均衡损失。其基本思想是鼓励路由器将令牌均匀地分配给所有专家。


路由策略与专家容量

在硬件上高效实现动态路由面临挑战。框架通常需要静态形状,但路由决策是动态的。为了解决这个问题,引入了专家容量的概念。

我们通过一个容量因子来参数化每个专家能处理的令牌数量上限。

  • 容量因子 = 1.0:每个专家的容量刚好等于“批次大小 / 专家数量”。如果路由到某个专家的令牌超过其容量,多出的令牌将被丢弃(不进行计算)。
  • 容量因子 > 1.0:每个专家拥有额外的缓冲容量,可以减少令牌丢弃,但会增加设备间的通信成本。

一个自然的想法是设计“无令牌丢弃”的多阶段路由算法(例如,将溢出的令牌发送给第二优先的专家)。但实验表明,这种方法并没有提升性能,有时甚至有害。模型似乎更倾向于将计算应用于它首选的专家。


性能对比:Switch vs. MoE

现在,让我们将开关变压器(Top-1)与传统的MoE(Top-2)进行性能对比。

以下是关键发现:

  • 高容量因子(如2.0)下,MoE(Top-2)模型质量优于Switch(Top-1),因为它利用了额外的缓冲。
  • 低容量因子(如1.0或1.25)下,Switch(Top-1)模型在质量和训练速度的帕累托前沿上表现更优。尽管单步质量可能略低,但其更低的通信和计算开销使得总体训练效率更高。
  • 结论:使用较低容量因子的Top-1路由,比使用较高容量因子的Top-2路由更具帕累托效率。

模型扩展与并行策略

开关变压器如何随着专家数量增加而扩展?研究表明,在固定计算量(FLOPs)的情况下,增加专家数量(即增加稀疏参数量)能持续提升性能,但收益会递减。

与通过模型并行来扩大稠密模型相比,通过专家并行来扩大稀疏模型是更高效的方式。即使在专家数量很少的情况下(例如只有2个专家),稀疏模型也能展现出比同等大小的稠密模型更好的扩展属性,这对于计算资源有限的环境非常有前景。

为了训练超大规模模型(如1.6万亿参数),需要结合多种并行策略:

  • 数据并行:在不同设备上复制模型,处理不同数据批次。
  • 模型并行:将单个模型的权重划分到多个设备上。
  • 专家并行:将不同的专家放置在不同的设备上。
    大规模稀疏模型的训练通常需要混合使用这些策略。

下游任务表现与知识推理

一个有趣的发现是,稀疏模型和稠密模型在下游任务上的表现并非完全由预训练困惑度决定。

  • 知识密集型任务(如问答):在相同的预训练困惑度下,稀疏模型的表现显著优于稠密模型。这表明额外的参数对于存储和回忆知识非常有效。
  • 推理密集型任务(如SuperGLUE):在相同的预训练困惑度下,稠密模型的表现往往优于稀疏模型。这可能意味着固定的计算量(FLOPs)对于复杂推理更为关键。

例如,一个拥有1.6万亿参数但FLOPs较少的稀疏模型,在知识任务上表现异常出色,但在推理任务上则相对较弱。这揭示了仅凭预训练指标评估模型的风险。


蒸馏与多语言应用

稀疏模型的一个缺点是参数量大,不利于部署。知识蒸馏技术可以将大稀疏模型(教师)的能力迁移到小稠密模型(学生)中。

实验表明,通过蒸馏,稠密学生模型可以保留教师稀疏模型相对于基线稠密模型约30%的性能增益。这意味着我们可以用一个小得多的模型,获得大部分稀疏性带来的好处。

此外,稀疏性在多语言场景中表现自然且强大。专家可以在不同语言之间进行专业化。实验证明,在超过100种语言上,稀疏模型的表现都超越了对应的稠密基线模型。


总结与未来方向

本节课中,我们一起学习了如何通过稀疏性扩展Transformer模型。

核心要点总结

  1. 开关变压器是专家混合(MoE)的一种高效简化,采用Top-1路由,降低了通信和计算复杂度。
  2. 通过选择性精度、改进初始化和负载均衡等技巧,可以稳定训练稀疏模型。
  3. 在扩展性上,通过专家并行增加稀疏参数,比通过模型并行增加计算量更高效。
  4. 稀疏模型在知识密集型任务上表现突出,但在推理任务上可能需要平衡计算量。
  5. 通过知识蒸馏,可以将稀疏模型的能力压缩到稠密模型中,便于部署。
  6. 稀疏范式在多语言建模中同样有效。

未来,稀疏性和自适应计算(让不同输入应用不同计算量)的结合是一个充满希望的方向。同时,模型设计、硬件特性和分布式算法的协同优化,将继续是提升大规模机器学习能力的关键。

课程 P6:DeepMind 的 Perceiver 和 Perceiver IO 新数据家族架构 🧠

在本节课中,我们将要学习 DeepMind 提出的 Perceiver 和 Perceiver IO 系列架构。这些架构旨在构建一个能够处理多种数据模态(如图像、文本、音频等)的通用模型,而无需为每种模态手动设计特定的网络结构。我们将从通用架构的动机开始,逐步解析其核心设计思想、工作原理,并了解其在多个领域的应用效果。

概述:为什么需要通用架构? 🎯

我们希望构建能够处理所有可能数据类型的架构,这主要基于两个务实的理由。

首先,现实世界中的数据模态极其多样,包括触觉、前庭感知、回声定位、文本、基于事件的摄像头,甚至嗅觉和深度感知等。为每一种模态手动设计网络结构(即“归纳偏置”)是不切实际的,这种方法无法扩展。

其次,处理复杂多模态数据的传统方法通常是为每个模态构建独立的子系统,再设计方法将它们组合。这会导致系统复杂、脆弱且难以维护。一个统一的“黑箱”架构可以简化系统构建,让我们能更专注于更高层次的问题。

从 Transformer 到瓶颈:核心挑战 ⚙️

上一节我们介绍了构建通用架构的动机,本节中我们来看看实现这一目标的基础——Transformer,以及它所面临的挑战。

Transformer 是目前最通用的架构之一,它采用了几种关键的归纳偏置:

  • 非局部性:不对数据点间的关联做领域特定假设,允许全局交互。
  • 位置特征化:将位置信息作为输入特征,而非硬性的架构约束。
  • 权重共享与硬件友好:广泛共享权重并基于矩阵运算,适合 GPU/TPU 加速。

然而,标准 Transformer 有一个致命缺点:其核心的自注意力机制的计算和内存复杂度是输入序列长度的平方级,即 O(M²L),其中 M 是输入大小,L 是深度。这使其难以处理大规模数据(如高分辨率图像)。

Perceiver 的核心创新:交叉注意力瓶颈 🔄

上一节我们看到了标准 Transformer 的扩展性问题,本节中我们来看看 Perceiver 如何通过引入“交叉注意力”瓶颈来解决这个问题。

标准自注意力机制可以表示为:
注意力输出 = softmax(Q * K^T / sqrt(d_k)) * V
其中 Q(查询)、K(键)、V(值)均由输入线性变换得到,导致 QK^T 计算复杂度为 O(M²)。

Perceiver 的关键改进是将第一层的自注意力替换为交叉注意力。它引入一个可学习的潜在数组(Latent Array),其长度 N 远小于输入长度 M。这个潜在数组作为查询 Q,而键 K 和值 V 仍来自原始输入。

此时,注意力计算变为:
潜在输出 = softmax(Q_latent * K_input^T / sqrt(d_k)) * V_input
由于 Q_latent 的维度是 N,计算复杂度从 O(M²) 降为 O(N * M),实现了线性缩放。

这个潜在数组就像一个“RNN的初始状态”或一组“聚类中心”,它通过注意力机制从庞大的输入中提炼信息。之后,网络可以在固定大小的潜在空间(而非庞大的输入空间)内,使用标准的 Transformer 块(自注意力)进行深层处理,此时的复杂度仅与潜在大小 N 的平方相关,而 N 是我们可以控制的超参数。

架构细节与对比 🔍

上一节我们介绍了 Perceiver 的核心模块,本节中我们来看看一些实现细节,并将其与其他方法进行对比。

位置编码:为了让模型感知输入结构(如图像的2D空间),我们为每个输入点添加位置编码。对于图像,使用2D傅里叶特征(正弦/余弦函数)效果很好。我们发现,采样频率覆盖到奈奎斯特极限(即像素分辨率允许的最高频率)能获得最佳性能,这确保了每个点都能被清晰区分。与语言模型通常将嵌入与位置编码相加不同,在 Perceiver 中拼接(concatenate)内容与位置特征通常表现更好。

与 ViT 对比:视觉 Transformer (ViT) 通过将图像分割为补丁(patch)来应用 Transformer。这本质上是为图像数据引入了2D卷积的归纳偏置,限制了其在非网格数据(如点云)上的通用性。Perceiver 则完全不做此类假设,仅通过位置编码提供结构信息,因此更为通用。

与使用交叉注意力的其他工作对比:交叉注意力在计算机视觉中早有应用,例如 DETR(目标检测)和 Slot Attention(无监督物体分割)。这些工作通常使用卷积主干提取特征,再用交叉注意力将其转换为目标表示(如边界框或物体槽)。Perceiver 的不同之处在于,它完全摒弃了卷积主干,从原始像素开始就用交叉注意力将输入映射到潜在空间。

Perceiver 的演进:Perceiver IO 与多模态处理 🌐

上一节我们了解了基础 Perceiver 模型,本节中我们来看看其升级版 Perceiver IO 如何实现任意输出,并处理多模态数据。

基础 Perceiver 主要适用于分类等输出固定的任务。Perceiver IO 的核心思想是:使用另一个交叉注意力层进行解码。我们为每个期望的输出点准备一个查询(Query),这个查询包含了该输出点的语义和位置信息。然后,以 Perceiver 编码器输出的潜在表示作为键(Key)和值(Value),进行交叉注意力计算,从而生成最终输出。

这种设计带来了极大的灵活性:

  • 密集预测:如图像自编码,可以为每个像素生成一个查询,重建整张图像。
  • 多任务学习:通过在查询中附加任务标识,让同一模型处理不同任务。
  • 多模态输出:可以同时为视频、音频、标签等不同模态生成输出,尽管它们的输出规模和形式各异。

处理多模态输入:对于来自不同模态(如视频帧和音频波形)的输入,Perceiver 的处理方式非常直接:

  1. 为每种模态学习特定的模态标识嵌入,并将其拼接到对应输入的特征中。
  2. 将所有模态的输入(连同它们的位置编码和模态标识)拼接成一个大的输入数组
  3. 将这个统一数组输入给 Perceiver 编码器。

模型本身并不“知道”哪些数据来自视频,哪些来自音频,它需要从数据中学习这些关联。

应用与实验结果 📊

上一节我们探讨了 Perceiver IO 的通用性,本节中我们通过具体实验来看看它的实际表现。

图像分类 (ImageNet):早期的 Perceiver 在 ImageNet 上取得了与 ResNet-50 和当时 ViT 模型相当的结果。更有趣的是,当我们将图像像素随机打乱后,严重依赖2D结构的 ResNet-50 性能大幅下降,ViT 也有明显下降,而 Perceiver(尤其是使用学习式位置编码的版本)表现出了更强的鲁棒性。这表明 Perceiver 对输入结构的假设更少,更依赖于学习到的内容关联。

大规模语言建模:Perceiver IO 的一个显著优势是能够直接处理字节序列,从而避免传统 NLP 中分词器(Tokenizer)带来的问题(如对稀有词处理不佳、对空格敏感、跨语言迁移困难)。实验表明,在相同计算量(FLOPs)下,Perceiver IO 的性能与 BERT-base 相当。而当移除 BERT 的分词器时,由于其 Transformer 对序列长度平方扩展,性能会急剧下降;而 Perceiver IO 在无分词器设置下,仅需轻微调整即可保持性能,展示了其在长序列处理上的效率优势。

光流估计:光流估计是一个经典的、需要建立长距离像素对应的密集预测任务。此前的最先进方法 RAFT 包含了精心设计的关联体积、迭代更新等复杂模块。Perceiver IO 仅以简单的图像块作为输入,配合其通用架构,就在 Sintel 和 KITTI 等标准光流数据集上取得了具有竞争力的结果,甚至在某些基准上达到了新的最优水平。这验证了通用架构在复杂任务上的迁移能力。

总结与展望 🚀

本节课我们一起学习了 DeepMind 的 Perceiver 和 Perceiver IO 架构。我们从构建通用架构的动机出发,深入分析了标准 Transformer 的扩展性瓶颈,以及 Perceiver 如何通过引入可学习的潜在数组交叉注意力机制,将计算复杂度从平方级降至线性级,同时保持了处理任意模态数据的能力。

Perceiver IO 进一步通过对称的解码器交叉注意力,实现了从任意输入到任意输出的灵活映射,并在图像分类、语言建模、光流估计等多个差异巨大的任务上展现了强大且通用的性能。

这些工作表明,追求更少归纳偏置、更统一的架构是可行且富有前景的方向。未来的研究可能会集中于如何在小数据场景下更有效地使用这类架构,以及如何让单个模型同时协同处理多种模态和任务,向真正通用的多模态智能系统迈进。

课程 P7:自注意力与非参数变换器 (NPTs) 🧠

在本节课中,我们将要学习Transformer架构的核心思想,并深入探讨一种名为“非参数变换器”的创新架构。我们将从Transformer的基本概念讲起,然后了解NPTs如何通过利用整个数据集的信息来进行预测,从而挑战传统的参数化深度学习范式。


第一部分:Transformer架构回顾 🔄

上一节我们介绍了课程概述,本节中我们来看看Transformer架构的核心组成部分。Transformer首次引入了两个主要概念:多头注意力和自注意力,并结合了快速自回归解码。

自注意力与多头注意力

在Transformer之前,模型主要使用LSTM及其注意力机制。注意力模块通常关联两个不同的序列:源序列和目标序列。源序列中的每个词会与目标序列中的一个元素建立软关联。

自注意力则不同,它使用同一个序列作为源和目标。这样,序列中的每个元素都可以与序列内的其他元素关联。其核心思想是学习句子中词语之间的关系。例如,在短语“蓝色的球”中,模型需要将形容词“蓝色”与名词“球”关联起来。

多头注意力进一步扩展了这个概念。每个词用一个嵌入向量表示。我们将这个表示在深度维度上分成若干组(例如四组),对每一组独立应用注意力机制。处理完成后,再将结果拼接起来,恢复成原始的模型维度表示。这样做的好处是,每个注意力头可以专注于学习一种特定的关系模式。例如,一个头学习形容词与名词的关系,另一个头学习其他不同的关系,从而能够学习一个层次化或多样化的关系列表。

快速自回归解码

另一个关键部分是快速自回归解码。在标准的自回归解码中,模型生成第一个标记,然后基于第一个标记生成第二个,再基于前两个生成第三个,如此循环。这个过程非常缓慢。

Transformer采用了一种技巧来加速训练:它假设模型总是生成正确的内容。具体做法是,在训练时,我们不进行循环生成,而是直接将完整的、正确的目标序列输入模型。模型的任务是,在已知前k个正确标记的情况下,预测第k+1个标记,并计算该位置的损失。

虽然模型在训练初期可能生成无意义的内容,但损失计算时假设它已经看到了所有正确的历史标记。这种方法的精妙之处在于,它允许所有位置的预测并行计算,极大地提升了训练速度,这也是Transformer模型可扩展性强的关键。

为了防止模型在训练时“作弊”(即直接看到它要预测的未来标记),我们需要在架构内部阻止注意力机制关注它不应该看到的标记。这是通过创建一个注意力掩码来实现的。

以下是注意力掩码的一个简单示例:

# 假设序列长度为5,我们创建一个下三角掩码(不包括对角线)
mask = torch.tril(torch.ones(5, 5)) == 0
# 在计算注意力分数后,将未来位置的分数设置为一个极小的负数
attention_scores.masked_fill_(mask, -1e9)

这样,对于序列中的每个位置,模型都无法关注其后的位置,从而确保了自回归属性。


第二部分:非参数变换器 (NPTs) 的动机 🎯

上一节我们回顾了Transformer的基础,本节中我们来看看NPTs如何引入新的预测范式。传统的监督深度学习依赖于参数化预测。我们使用训练数据学习一组参数θ,然后在测试时仅使用这些参数对新数据进行预测。这意味着测试时的预测完全独立于训练数据本身。

参数化预测很方便,因为所有从训练数据中学到的知识都浓缩在参数中,无需存储庞大的原始数据。然而,现代架构(如批处理)已经让数据在训练时产生了交互。

NPTs的核心思想是:既然我们在预测时已经可以并行处理一批数据,为什么不直接让模型在预测时也能利用训练数据呢?我们挑战参数化预测的主导地位,希望赋予模型在预测时使用训练数据的额外灵活性。

更具体地说,NPTs将整个数据集(或一个批次)作为输入,并学习从数据点之间的交互中进行预测。它使用多头自注意力作为通用推理层,并借鉴了自然语言处理中的随机掩码机制,以指定需要预测的位置并对学习任务进行正则化。

简单对比:

  • 经典参数模型:预测时,仅查看单个测试数据点的特征,使用训练好的参数θ进行预测。
  • NPTs:预测时,将测试点与(部分)训练数据一起输入。模型可以查看所有样本的特征和目标值,通过数据点间的注意力交互来进行预测。

有人将这种方式称为“KNN 2.0”,因为它像K近邻一样利用其他数据点,但通过强大的Transformer架构学习更复杂的关系。


第三部分:NPTs 架构详解 ⚙️

上一节我们了解了NPTs的动机,本节中我们深入探讨其架构细节。NPTs有三个关键组成部分。

1. 数据集作为输入

NPT的输入包括两部分:

  1. 数据矩阵 X:形状为 [n, d],其中 n 是数据点数量,d 是属性(特征+目标)数量。每一行是一个数据点,每一列是一个共享语义的属性。
  2. 掩码矩阵 M:形状与X相同,是一个二进制矩阵,用于指定哪些条目(可以是特征或目标)被掩盖,需要模型预测。

对于不同长度的输入(例如不同数据点特征数不同),可以采用填充(Padding)策略。对于表格数据,我们通常假设每个数据点的特征数量是固定的。

2. 嵌入与位置编码

我们将数据矩阵X和掩码矩阵M堆叠,并进行线性嵌入。具体操作如下:

  • 对每个数据点独立应用相同的线性变换。
  • 为每个属性(列)学习一个独立的嵌入,因为不同列(如年龄、性别)的语义不同。
  • 对属性的索引进行位置编码,因为列的顺序可能包含信息。
  • 对列的类型(连续型、分类型)进行编码。

最终,我们得到一个形状为 [n, d, e] 的张量,其中 e 是嵌入维度。

3. 数据点间的自注意力

这是NPT的核心。为了实现数据点间的交互,我们首先将 [n, d, e] 的张量重塑为 [n, d*e],即将每个数据点的所有属性嵌入拼接成一个长的“令牌”表示。然后,我们在这个 n 个“数据点令牌”上应用标准的、堆叠的多头自注意力层。这允许模型学习数据点之间的高阶、复杂依赖关系。

与一些只使用单层注意力进行简单查找的方法(如神经过程)不同,堆叠多层注意力极大地增强了模型的表达能力。NPT对数据点的排列是等变的,即预测结果不依赖于数据点输入的顺序。

4. 基于掩码的训练目标

训练目标是基于随机掩码的。我们会以一定概率随机掩盖特征值和目标值,然后要求模型根据观察到的条目预测被掩盖的条目。损失函数是特征重建损失和目标预测损失的加权和。

特征掩码:这起到了正则化的作用,使任务更具挑战性,并引入了额外的自监督信号,有助于学习更好的特征表示。

随机目标掩码:这是NPT独特且关键的一点。在训练时,部分训练数据点的目标值不会被掩盖,而是作为输入提供给模型。这意味着模型在预测某个训练点的掩盖目标时,可以利用其他训练数据点的特征和目标。因此,模型无需在参数中死记硬背输入-输出的映射,而是可以学习一个利用其他数据点信息的插值或查找函数。这本质上使模型能够学习类似K近邻但更复杂的预测机制。


第四部分:实验与验证 📊

上一节我们剖析了NPTs的架构,本节中我们通过实验来看看它的实际表现。

在表格数据上的表现

我们主要在表格数据上评估NPTs,因为这是一个具有挑战性且实用的领域。我们选择了涵盖不同规模、特征类型和任务类型(二分类、多分类、回归)的多个数据集。

我们将NPTs与主流基线进行比较,包括:

  • 基于树的模型:XGBoost, CatBoost。
  • 经典深度学习:MLP。
  • 表格数据专用Transformer:TabNet。

实验结果显示,NPTs在多个数据集上取得了有竞争力的性能,甚至在一些任务上表现最佳。这表明,学习数据点间交互的简单想法在实践中是有效的。

消融实验:NPTs是否真的利用了交互?

一个关键问题是:NPTs性能的提升真的是因为利用了数据点间的交互,而不是仅仅学习了更好的每点参数化表示吗?

为了验证这一点,我们设计了一个“干扰实验”。在预测某个特定数据点时,我们保持该点所有信息不变,但将其他所有数据点的每个属性值分别进行随机排列。这样,其他数据点与当前点的任何有意义的关系都被破坏了,但批次统计信息(如均值、方差)得以保留。

实验发现,在进行干扰后,NPTs的性能在大多数数据集上显著下降,有时甚至从最佳变为最差。这强有力地证明NPTs确实依赖并利用了数据点之间的交互信息来进行预测。在少数性能下降不明显的数据集上,我们推测模型可能认为学习关系预测的收益不大,从而更倾向于参数化预测。

合成实验:学习复杂关系

为了更深入地测试NPTs学习非参数预测机制的能力,我们设计了一些合成实验。

  1. 精确查找任务:我们复制原始数据集的行,并揭示副本的目标值。NPTs需要学会根据特征匹配,从副本中查找并复制目标值到原始行。实验表明,NPTs成功学会了这一机制,注意力图清晰地显示模型在预测时关注到了正确的副本行,预测相关性接近完美。
  2. 干预与泛化:我们进一步在测试时改变副本数据点的目标值。如果NPTs真正学会了“查找-复制”的因果机制,那么它的预测也应该随之改变。实验结果显示,预测值与干预值保持了极高的相关性,证明了NPTs学会了稳健的机制,并能泛化到训练分布之外的情况。
  3. 超越简单KNN:我们将任务复杂化,例如给所有副本的目标值加一个常数。简单的KNN会失败,因为它会找到正确的特征匹配但预测错误的目标值(原值+1)。而NPTs可以轻松学会在查找后再减去这个常数,因为它建模的是特征与目标的联合分布,而不仅仅是条件分布。

这些实验表明,基于梯度的优化能够使NPTs发现并利用数据中复杂的、非参数化的预测机制。


总结与展望 🚀

本节课中我们一起学习了Transformer的自注意力机制,并深入探讨了非参数变换器这一创新架构。

我们了解到,NPTs的核心在于将整个数据集作为输入,利用Transformer强大的自注意力机制来建模数据点之间复杂的高阶关系。它通过随机掩码训练目标,使模型能够学习利用其他数据点的信息进行预测,从而部分摆脱了对参数化记忆的依赖。

实验证明,NPTs在表格数据等任务上表现良好,并且确实依赖于数据点间的交互。合成实验进一步展示了其学习复杂、稳健预测机制的能力。

展望未来,NPTs有许多有趣的发展方向:

  • 扩展性:研究如何超越小批量近似,利用稀疏注意力等技术处理超大规模数据集。
  • 应用领域:将NPTs应用于元学习、少样本学习、领域适应、半监督学习等更广泛的场景。
  • 与其他领域联系:NPTs与图神经网络有相似之处,特别是在学习实体间关系方面,这为交叉研究提供了机会。

NPTs为深度学习提供了一种新的、充分利用数据内部结构的预测范式,值得我们持续关注和探索。

课程 P8:Transformer 电路、诱导头与上下文学习 🧠

在本节课中,我们将深入探讨 Transformer 模型内部的工作机制,特别是它们如何实现令人惊讶的上下文学习能力。我们将从一个观察到的“相变”现象出发,逐步解析单层和双层注意力 Transformer 的电路结构,并最终揭示“诱导头”这一核心概念如何驱动上下文学习。


概述:一个关于上下文学习的谜团

Transformer 模型最引人注目的特性之一是它们的上下文学习能力。模型能够在没有更新任何内部参数的情况下,仅根据上下文中的几个示例就学会执行新任务。然而,我们发现这种能力并非均匀发展,而是在训练过程中的某个特定时刻突然出现一个“相变”,模型预测序列中靠后位置 token 的能力急剧提升。本节课的目标就是理解这一现象背后的机制。


第一部分:机械可解释性简介

在深入 Transformer 之前,我们首先需要明确我们所探讨的“可解释性”类型。我称之为“机械可解释性”。

其核心思想是:神经网络的参数可以被视为一种编译后的计算机程序,而神经元则类似于变量或寄存器。我们的目标是将这些嵌入在权重中的复杂“程序”反向工程为人类可以理解的算法。这项工作不仅有助于我们理解 AI 如何完成人类无法直接编程的任务,也对确保未来 AI 系统的安全性至关重要。


第二部分:单层注意力 Transformer 的电路分析

上一节我们介绍了机械可解释性的目标,本节中我们来看看如何将其应用于最简单的模型:单层注意力 Transformer。

Transformer 的线性视角

我们可以将单层注意力 Transformer 的输出逻辑写为以下形式:

logits = E^T * (I + ∑_h A_h * W_OV_h) * E * x

其中:

  • E 是嵌入矩阵。
  • I 是恒等映射,代表信息直接通过残差流。
  • A_h 是注意力头 h 的注意力模式矩阵。
  • W_OV_h = W_V_h * W_O_h 是值-输出电路矩阵。

这个视角的关键在于:如果固定注意力模式,整个模型对 token 的映射是线性的W_OV 矩阵直接告诉我们,如果某个 token 被关注,它会对哪些后续 token 的预测概率产生多大影响。

单层 Transformer 在做什么?

通过分析 W_OV 矩阵,我们可以理解模型的行为。以下是其主要学习到的模式:

  • 复制(Copying):看到 token A,增加 token A 在未来出现的概率。例如,看到“完美”,会增加“完美”再次出现的可能性。
  • 跳元组(Skip-Trigrams):这是一种粗糙的上下文学习。模型学习到类似“A ... B”的模式,当它再次看到 A 时,会增加 B 出现的概率。例如,在代码中看到“lambda”,之后看到“\”,就会增加输出“lambda”的概率。
  • 词段补全:由于分词(tokenization),一个单词可能被拆成多个 token。模型会学习到,看到词段(如“Pix”),就补全整个词(如“map”)。

核心结论:单层注意力 Transformer 几乎将所有能力都投入到了上述这种基于 token 相似性的、粗糙的上下文学习(复制和跳元组)中。然而,它的能力有限,无法实现我们观察到的那种“相变”和强大的上下文学习。


第三部分:特征值——理解电路的快捷方式

上一节我们通过直接查看巨大的权重矩阵来理解模型,但还有更高效的方法。

由于 W_OV 矩阵将 token 映射到 token(同一空间),我们可以分析它的特征值和特征向量。这为我们提供了一种快速总结注意力头行为的强大工具:

  • 正特征值:意味着“复制”。特征向量对应一组 token,看到它们会增加它们自身出现的概率。
  • 负特征值:意味着“反复制”。看到某些 token 会降低它们未来出现的概率。
  • 虚数特征值:意味着看到某些 token 会增加其他不相关 token 的概率。

通过绘制单层 Transformer 各注意力头 W_OV 矩阵的特征值,我们发现绝大多数头都具有大的正特征值,这直观地证实了它们主要在进行“复制”操作。


第四部分:双层注意力 Transformer 与诱导头

单层模型无法解释“相变”,因此我们转向双层注意力 Transformer。通过类似的数学展开,我们可以将模型输出分解为不同路径的贡献。

分析发现,在双层模型中,最重要的贡献来自于各个独立的注意力头项。特别是,第二层的某些注意力头表现出与第一层截然不同的行为

诱导头的发现

这些特殊的第二层注意力头就是“诱导头”。它们的工作机制如下:

  1. 模式识别:在当前 token 的位置,它并不关注前一个 token,而是关注序列中更早出现的、与当前 token 相同的那个 token。
  2. 预测:它读取那个更早 token 之后的 token,并增加当前 token 之后出现相同 token 的概率。

简单来说,诱导头执行的操作是:“上次我看到这个(token A)时,接下来是 B。所以这次我又看到 A 时,接下来很可能又是 B。”

这本质上是一种在上下文内部进行的最近邻查找和模式匹配

如何用特征值识别诱导头?

诱导头在电路特征上具有双重特征:

  • 它的 W_OV 电路具有大的正特征值(进行复制)。
  • 它的 W_QK 电路也具有大的正特征值(倾向于关注相同的 token,但位置偏移)。

因此,在特征值图谱上,诱导头会聚集在(正,正)的象限。


第五部分:解开谜团——诱导头驱动上下文学习

现在,我们可以回到最初的谜团:上下文学习能力的“相变”从何而来?

我们有以下强证据支持“诱导头假说”:

  1. 时间相关性:在训练过程中,诱导头恰好在我们观察到“相变”(上下文学习能力陡增)的同一时刻形成并变得强大。
  2. 消融实验:如果我们人工“关闭”(消融)模型中的诱导头,模型的上下文学习能力会显著下降,而消融其他头则影响不大。
  3. 功能解释:诱导头提供的“上下文最近邻”算法,是一种比单层模型的简单复制更强大、更通用的学习机制。它可以解释许多上下文学习现象:
    • 文本复制:直接预测重复的短语。
    • 翻译:在双语对照句中,诱导头可以学会关注源语言句子中的词,并预测对应的目标语言词(这是一种“软”诱导,关注相似而非相同的 token)。
    • 学习新函数:即使是一个完全虚构的、由符号映射定义的函数(如“四月&狗 -> 真”),诱导头也能通过匹配上下文中的相同模式(“四月&狗 -> 真”)来学会并应用它。

结论:双层(及更多层)Transformer 通过形成诱导头,获得了强大的上下文学习能力。这种能力不是均匀增长的,而是在训练中某个时刻,当诱导头电路被有效配置后,突然涌现的。这解释了我们在训练曲线中观察到的“相变”。


总结与展望

本节课中我们一起学习了:

  1. 机械可解释性的目标是将神经网络权重反向工程为可理解的算法。
  2. 通过线性分解和特征值分析,我们理解了单层注意力 Transformer 主要进行粗糙的 token 级复制和跳元组预测。
  3. 双层注意力 Transformer 中,诱导头的出现是关键。它通过“上下文最近邻”算法,实现了强大的模式识别和上下文学习。
  4. 有充分证据表明,训练中观察到的上下文学习能力的“相变”,正是由诱导头的形成和激活所驱动的。

这项工作为我们打开了一扇窗,让我们得以窥见 Transformer 内部进行上下文学习的核心机制。然而,这仅仅是开始。大型语言模型中还有太多未解之谜,例如前馈神经网络层的确切作用、如何进行复杂推理、如何建立心理模型等。对这些问题的探索,将是通向更安全、更可靠、更可理解的人工智能的关键一步。


注:本教程内容基于与 Anthropic 团队(特别是 Catherine 和 Nelson)的未发表合作研究。

课程P9:音频研究中的Transformer应用 🎵

在本节课中,我们将学习Transformer模型如何应用于音频、语音和音乐领域。我们将从音频表示的基础知识开始,探讨如何利用Transformer进行原始音频的生成建模和语言建模,并了解如何结合信号处理技术来提升模型性能。

音频表示基础 📊

上一节我们介绍了课程的整体框架,本节中我们来看看音频是如何被表示和处理的。

音频信号本质上是连续的时域信号。为了用计算机处理,我们需要将其转换为数字表示。一种常见的方法是使用频谱图

你可以将任何时域信号分解为多种基函数。进行傅里叶变换,就像是将实际时域信号分解为正弦基组件。例如,一个由三个纯正弦波组成的波形,其傅里叶变换的幅度谱会显示各个成分的强度。

然而,许多信号是不连续的,其变化相当大。因此,我们需要一种方法来分析信号的局部特性。传统做法是对信号进行加窗处理,然后对每个窗口应用傅里叶变换。

对于频谱图表示,你不断堆叠这些傅里叶变换切片的幅度,从而获得音频信号的二维表示。其中,x轴是时间,y轴是频率,强度(通常用颜色表示)代表能量。

以下是不同类型的音频表示:

  • 原始波形:直接对连续信号进行采样和量化。例如,电话语音通常以每秒16000次(16kHz)的速率采样,每个样本用8位或16位量化。
  • 线性频谱图:对加窗信号进行傅里叶变换后得到的幅度谱。
  • 对数梅尔频谱图:将频率轴转换为对数尺度(如梅尔尺度),以更接近人类的听觉感知。其优势在于不同频率之间的谐波间距保持一致,便于卷积滤波器学习。

将连续音频问题转化为离散空间(如256个量化级别),就进入了语言建模的领域。

原始音频的生成建模 🎛️

上一节我们了解了音频的表示方法,本节中我们来看看如何利用Transformer对原始音频进行生成建模。

这类似于使用Transformer的WaveNet。其核心思想是将音频样本的预测视为一个语言建模问题。模型需要根据过去的上下文,预测下一个音频样本(在255个离散级别中)的概率分布。

WaveNet是一种基于扩张卷积的模型,它通过跳过连接有效解决了长序列建模中的梯度消失问题。然而,Transformer通过自注意力机制,可以更灵活地学习序列中长距离的依赖关系,理论上应能超越WaveNet。

我们面临的挑战是计算复杂度。注意力机制需要存储O(n²)的矩阵,对于长音频序列(如10秒对应160,000个样本)内存消耗巨大。我们的解决方案是引入条件处理。我们使用CNN层对过去的上下文进行编码,生成一个潜在表示,然后用这个潜在表示来条件化Transformer,以预测下一个样本。

在评估中,我们比较了在相同参数规模和交叉熵损失下,条件化Transformer与堆叠WaveNet在下一个样本预测任务上的表现。

音频的离散化与语言建模 🔤

上一节我们探讨了在样本级别进行生成建模,本节中我们来看看如何在更高、更语义的层次上对音频进行语言建模。

这与声学场景理解有关。目标是理解一段音频的内容,其应用广泛,如自动驾驶中的声音检测、健康监测、音乐推荐等。

当前的一个流行范式是:在离散标记空间中进行语言建模。Transformer在处理离散序列方面表现出色。因此,解决方案是先将连续的音频信号转换为离散的代码序列。

向量量化(VQ) 是实现这一点的关键算法。其基本功能是为连续的嵌入空间提供离散代码。例如,你可以训练一个自编码器来学习音频片段的嵌入,然后在嵌入空间的瓶颈层应用K-means聚类,将每个连续嵌入映射到最近的聚类中心(即一个离散代码)。

一旦获得离散代码序列,就可以像处理文本一样,使用自回归Transformer模型来预测下一个代码。生成了未来的代码序列后,可以使用如WaveNet之类的解码器将代码转换回连续的音频波形。这与OpenAI的Jukebox等工作思路相似。

在我们的实验中,我们直接在频谱图片段上应用VQ,学习离散代码,并用Transformer进行预测。我们发现,代码的数量至关重要:代码太少会丢失信息,太多则会对噪声敏感。

与纯监督学习方法相比,这种无监督的“音频语言模型”在大量数据上表现出潜力,尽管目前仍有性能差距,但随着数据和模型规模的扩大,其表现有望持续提升。

结合信号处理的音频Transformer 🛠️

上一节我们讨论了在离散空间进行语言建模,本节中我们来看看如何将视觉Transformer的思路与信号处理结合,直接应用于音频分类。

基本方法类似于视觉Transformer(ViT)。我们将输入信号(原始波形或频谱图)分割成小块,通过线性投影转换为嵌入向量,然后输入标准的Transformer编码器,最后通过一个分类头进行预测。

我们的工作在此基础上更进一步,尝试引入层次结构来提升性能。我们在Transformer的中间嵌入上应用了小波分解

用小波的术语简单来说,这就像是将中间嵌入分解成不同“速度”的分量:一些代表缓慢变化的趋势(低频),一些代表快速变化的细节(高频),还有一些保持原始分辨率。这样,在Transformer的单层嵌入中,我们就学习到了一种树状的层次结构。

具体操作是,对Transformer某一层的所有输出嵌入,我们通过平均池化等方式,生成一组分辨率递减的嵌入序列(例如,全分辨率、半分辨率、四分之一分辨率),然后将它们重新组合。这个过程不引入额外参数,只是定义了处理嵌入的基函数。

在音频分类任务上的实验表明,即使是很小的Transformer模型,其性能也超越了传统的CNN模型(如DenseNet)。加入多尺度(小波)处理或池化层后,性能得到了进一步提升。

此外,我们还分析了模型第一层学习到的表示。与固定的傅里叶基函数不同,Transformer学习到了一种适应于特定任务的时间-频率表示。例如,它自动学到了类似于起始检测器、汉明窗以及针对不同频率的正弦波等滤波器,这相当于让模型根据任务调整了自己的“耳朵”,是一个非常有趣的发现。

总结 📝

本节课中我们一起学习了Transformer在音频领域的多种应用方式。

我们首先回顾了音频的频谱图等表示方法。接着,我们探讨了如何用Transformer进行原始音频样本的生成建模,将其视为一个离散序列预测问题。然后,我们介绍了通过向量量化将音频转换为离散代码,并在该空间中进行语言建模的流行范式,这有助于音频内容的理解和生成。最后,我们看到了如何将视觉Transformer的结构直接用于音频分类,并通过引入小波分解等多尺度处理来提升性能,同时发现模型能自动学习到适应任务的前端滤波器。

Transformer因其灵活性和强大的序列建模能力,正在音频、语音和音乐研究中证明其价值,不断推动着这些领域的发展。

斯坦福 GPT/Transformer 原理介绍 - P13:大型语言模型的涌现能力与扩展 🚀

在本节课中,我们将要学习大型语言模型(LLMs)中一个引人注目的现象:涌现能力。我们将探讨什么是涌现能力,如何衡量它们,以及为什么随着模型规模的扩大,模型会展现出一些在小模型中完全不存在的新能力。同时,我们也会了解一种强大的提示技术——思维链,它如何利用涌现能力来解决复杂的推理任务。


概述:什么是涌现能力?

涌现能力是指那些在较小规模的语言模型中不存在,但在模型规模(如参数数量、训练计算量)超过某个阈值后突然出现的能力。这种现象类似于“量变引起质变”。理解涌现能力对于预测和利用大型语言模型的潜力至关重要。


涌现能力的定义与衡量

上一节我们介绍了涌现能力的基本概念,本节中我们来看看如何具体定义和衡量它。

在科学文献中,涌现被描述为从数量变化中产生的质变。例如,少量铀不会发生特别反应,但足够多的铀聚集在一起就会引发核反应。

对于大型语言模型,我们采用一个具体的定义:如果某种能力在较小的模型中不存在(表现不优于随机猜测),但在更大的模型中存在(表现显著优于随机),那么这种能力就被认为是涌现的

衡量模型规模通常有三个维度:

  • 计算量(FLOPs):训练模型所消耗的浮点运算次数。
  • 参数数量:模型的大小。
  • 数据集大小:用于训练的数据量。

在大多数研究中,图表通常使用训练FLOPs模型参数数量作为X轴,因为对于固定架构的模型,它们与数据集大小高度相关。


涌现能力的图表解读

以下是理解涌现能力图表的典型方式:

  • X轴:代表模型规模(例如,训练FLOPs,以10为底的对数刻度)。
  • Y轴:代表模型在某个特定任务上的性能(例如,准确率)。
  • 图表内容:每个点代表一个不同规模的语言模型(例如来自OpenAI、Google、DeepMind的不同模型)。

在图表中,你会观察到:对于非常小的模型,其性能曲线基本是平坦的,接近随机水平。然而,一旦模型规模超过某个临界点,性能会突然急剧上升,显著超越随机水平。这条陡然上升的曲线就是“涌现”的直观体现。如果你仅根据小模型的表现进行推断,你可能会错误地认为模型永远无法胜任该任务。


涌现能力的实例

让我们通过几个具体任务来看看涌现能力是如何表现的。

实例一:大规模多任务语言理解(MMLU)

MMLU是一个涵盖从高中到专业水平各种考试题目的基准测试。模型需要回答未见过的题目。

现象:当模型训练计算量达到约 10^24 FLOPs 时,其准确率从接近随机水平突然跃升,显著超越随机猜测。这表明解决复杂知识问题的能力是涌现的。

实例二:英语到国际音标(IPA)音译

此任务要求模型将英文句子转换为其发音的音标。

现象:随着模型规模增大,其性能(用BLEU分数衡量)起初停滞不前,而后在某个规模阈值后突然提升。这展示了模型处理特定语言学任务的能力是涌现的。

一个有趣的“反涌现”案例

有一个奖项旨在寻找那些随着模型规模增大,性能反而下降的任务。其中一个例子是“重复我的句子”任务。

  • 输入:“All that glitters is not gold”
  • 期望输出:“gold”
  • 小模型:由于不知道这个谚语,它简单地复制输入“All that glitters is not gold”,意外地获得了高分。
  • 中等模型:它知道了这个谚语,并输出“gold”,但这不符合任务指令(重复句子),因此性能下降。
  • 超大模型:它既知道谚语,又理解了“重复我的句子”这一指令,因此能正确输出“gold”,性能恢复。这也是一种特殊形式的涌现。

这个例子说明,性能曲线并非总是单调上升,中间可能出现波折。


影响涌现能力的因素:不仅仅是规模

虽然规模是关键驱动力,但并非唯一因素。模型的质量也受到数据、架构和算法的影响。

数据质量的影响:一个实验训练了一系列小型BERT模型来学习主谓一致(如“he runs” vs. “they run”)。研究发现,即使模型规模固定,如果训练数据中某个动词出现的频率更高(更高质量或更相关的数据),模型在该动词上的错误率也会显著降低。这说明更好的数据可以在不增加规模的情况下提升特定能力

模型改进的影响:比较不同公司训练的模型可以发现,在相似参数规模下,使用更好数据训练的模型(如PaLM)可能更早地展现出某些涌现能力,而其他模型(如LaMDA, GPT-3)则没有。这表明通过改进训练数据和方法,可以降低涌现所需的规模门槛。

总结:涌现的阈值并非固定不变。通过使用更高质量的数据、更优的模型架构和训练算法,我们有可能在更小的模型中激发出期望的能力。


思维链提示:一种利用涌现的推理技术

现在,我们来看一种能有效利用大型语言模型涌现能力的强大技术——思维链提示。

什么是思维链提示?

思维链提示模仿人类解决复杂问题时的思考过程:它要求模型在给出最终答案之前,先输出其推理的中间步骤。

标准提示(Few-shot)

问题:罗杰有5个网球。他又买了2罐网球,每罐有3个。他现在一共有多少个网球?
答案:11
问题:食堂有23个苹果。如果他们用了20个做午餐,又买了6个,现在有多少个苹果?
答案:

模型可能错误地回答“9”。

思维链提示

问题:罗杰有5个网球。他又买了2罐网球,每罐有3个。他现在一共有多少个网球?
推理:罗杰最初有5个球。2罐新网球,每罐3个,就是2*3=6个球。5+6=11。
答案:11
问题:食堂有23个苹果。如果他们用了20个做午餐,又买了6个,现在有多少个苹果?
推理:

模型会先生成:“食堂最初有23个苹果。用掉20个,剩下23-20=3个。又买了6个,现在有3+6=9个。”然后输出“答案:9”。

思维链为何有效?

  1. 分配计算:复杂问题无法通过单步预测解决。思维链将问题分解为多步,让模型有更多的“计算步骤”来处理信息。
  2. 技能组合:大模型在预训练中学到了大量基本技能(如算术、逻辑、常识)。思维链提示引导模型将这些基本技能以正确的顺序组合起来,解决更复杂的问题。
  3. 涌现特性:思维链提示本身的效果也是涌现的。小模型无法生成连贯、有用的推理链,而大模型可以。下图展示了在数学和常识推理任务上,思维链提示的性能随着模型规模增大而涌现。

思维链的进阶技巧:自一致性

自一致性是对思维链的改进。其步骤是:

  1. 温度采样让模型对同一个问题生成多条(例如40条)不同的推理路径和答案。
  2. 忽略中间推理过程,只收集所有最终答案。
  3. 通过多数投票选择出现频率最高的答案作为最终输出。

这种方法通过“集思广益”显著提升了答案的准确性,例如在GSM8K数学数据集上能将准确率从56%提升到74%。自一致性的性能增益同样具有涌现性,需要足够大的模型才能体现。


总结与展望

本节课中我们一起学习了大型语言模型的两个核心概念:涌现能力思维链提示

  • 涌现能力揭示了模型规模与能力之间的非线性关系。许多有趣且复杂的能力只有在模型参数或计算量超过某个阈值后才会出现。这为扩展模型规模提供了动机,但也意味着开发成本高昂。
  • 思维链提示是一种巧妙利用大模型涌现出的多步推理能力的技术。它通过引导模型展示内部推理过程,显著提升了其在数学、符号推理和复杂常识问题上的表现。自一致性等进阶技巧能进一步挖掘这种潜力。

展望未来,除了单纯扩大模型规模,我们还需要:

  1. 更好的提示与评估:深入理解如何与语言模型交互,并建立更强大、更难以被快速解决的基准测试。
  2. 降低应用成本:研究如何通过知识蒸馏、高效微调等方法,将大模型的涌现能力迁移到更小、成本更低的模型中。
  3. 预测与安全:研究如何预测未来的涌现能力,特别是那些可能带来风险的能力,并制定相应的安全策略。

涌现能力展示了大型语言模型通向更通用人工智能的潜力,而如何负责任地研究、开发和应用这些能力,将是整个领域面临的持续挑战与机遇。

斯坦福 GPT/Transformer 原理介绍 - P16:常识推理 🧠

在本节课中,我们将要学习如何通过神经符号方法增强大型语言模型的常识推理能力。我们将探讨大型模型在常识任务上的局限性,并介绍三种研究思路:通过“迷宫法”提升逻辑一致性、通过“符号知识蒸馏”构建更优的小模型,以及构建用于道德推理的常识模型。


概述:常识推理的挑战与机遇

当前的大型语言模型(如GPT-3)在诸多任务上表现出色,但在常识推理方面仍存在逻辑不一致、对抗性脆弱等问题。本次课程的核心观点是:更小的模型可以更好,而知识就是力量。我们将通过算法创新和高质量数据,而非单纯扩大模型规模,来提升模型的常识推理能力。


第一部分:通过“迷宫法”提升逻辑一致性 🧩

上一节我们概述了常识推理的挑战。本节中我们来看看如何通过“迷宫法”(Socratic Method)来诊断并提升语言模型的逻辑一致性。

语言模型有时会给出令人惊叹的正确回答,但有时也会产生自相矛盾的错误。例如,模型可能对同一个事实在不同提问方式下给出相反的判断。这表明模型内部的知识表征可能存在逻辑不一致。

“迷宫法”的工作流程如下:

  1. 构建推理树:针对一个问题,我们让模型分别以“答案为真”和“答案为假”为前提进行解释,生成解释链(E_T 和 E_F)。
  2. 检查一致性:让模型评估自己生成的解释是否逻辑自洽。例如,用模型自己的解释去反驳它,看它是否同意。
  3. 修剪与优化:剔除逻辑不一致的分支,保留逻辑完整的分支。对于剩余节点,计算其置信度(信念)和节点间的成对一致性权重。
  4. 约束求解:将问题转化为一个约束优化问题,目标是为每个节点分配真/假标签,以最大化整个图的整体一致性。这可以通过可满足性(SAT)求解器来完成。

以下是置信度计算的简化表示:
信念(node) = P(标签为真 | 解释) / (P(标签为真 | 解释) + P(标签为假 | 解释))

实验结果表明,这种无监督的推理时算法能显著提升GPT-3在常识问答基准(如CommonsenseQA 2.0)上的表现,甚至超过了使用思维链(Chain-of-Thought)或自我一致性(Self-Consistency)等提示方法。这证明,通过显式的符号推理和一致性约束,可以有效弥补大型神经网络在逻辑严谨性上的不足。


第二部分:符号知识蒸馏——构建更优的小模型 🍶

上一节我们介绍了通过算法提升推理一致性的方法。本节中我们来看看如何通过“符号知识蒸馏”来训练一个比庞大教师模型更优秀的学生模型。

尽管大规模语言模型蕴含海量知识,但它们并非专门为常识推理设计的“知识模型”。我们之前构建了一个名为ATOMIC的众包常识知识图谱,并基于此训练了专门的常识模型(如COMET),其性能优于同等提示下的GPT-3。然而,众包方式存在规模和质量瓶颈。

符号知识蒸馏的核心思想是:利用强大的教师模型(如GPT-3)自动生成大量的常识知识,然后通过一个批评者模型进行过滤,保留高质量部分,最后用这些高质量数据训练一个更小的学生模型。

流程如下:

  1. 教师生成:使用GPT-3(宽松教师)针对常识关系生成大量可能的知识条目(句子)。
  2. 批评者过滤:训练一个较小的分类模型(如RoBERTa)作为批评者,判断生成的知识是否正确。设定较高阈值,积极过滤掉低质量数据。
  3. 学生训练:使用过滤后的高质量数据训练一个更小的学生模型(如T5或BART)。

关键发现是:经过严格过滤的、数量更少的数据,训练出的学生模型性能,优于用原始教师生成的全部数据训练出的模型。学生模型不仅更小,而且在因果常识推理任务上的准确率首次接近90%,超过了基于人类众包数据训练的模型。

这揭示了对于常识推理,数据的质量远比数量更重要。通过符号知识蒸馏,我们可以将庞大、通用的语言模型中的知识,提炼并浓缩到更小、更专精的常识模型中。


第三部分:常识与道德推理——以Delphi为例 ⚖️

上一节我们探讨了如何蒸馏出更好的常识模型。本节中我们将关注一个特殊的常识领域:道德推理。语言模型已广泛应用于社会,其输出隐含道德判断,因此构建显式的道德推理模型至关重要。

我们介绍了Delphi模型,这是一个基于日常情境道德判断数据训练的模型。其目标是学习描述性伦理——即人们在实际生活中如何做出道德判断,而非规定性伦理。

构建Delphi的挑战包括:

  • 情境复杂性:道德判断高度依赖具体情境(如时间、地点、人物关系)。
  • 价值观多元:不同文化、个人持有的道德准则(经验法则)各不相同。
  • 对抗性脆弱:模型容易受到精心设计的、非常规的对抗性例子的攻击。

Delphi基于一个在多样QA任务上预训练的模型(Unicorn)进行微调,训练数据整合了来自Reddit等来源的超过100万个真实生活情境及其对应的道德判断。实验显示,经过专门训练的Delphi在道德判断任务上显著优于零样本或少样本的GPT-3。

然而,部署道德模型也引发了深刻讨论:

  1. 目的澄清:让AI学习道德互动不等于赋予AI道德权威。其目的是使AI输出更符合人类规范,而非取代人类做终极判断。
  2. 偏见与包容:训练数据本身可能包含社会偏见(如Delphi被指出具有“左倾”倾向)。关键在于持续改进,致力于服务多元化群体,而非回避问题。
  3. 必要性与协作:由于AI已在隐含地进行道德判断,不研究如何使其更合理是一种失职。这需要AI研究者与人文学科(哲学、心理学、法学)专家紧密合作。

后续的“Delphi混合”模型尝试引入神经符号推理架构,通过解析事件、结合常识知识图谱进行推理,以提升模型的可解释性和对抗鲁棒性。这指明了未来价值对齐研究的一个方向:结合符号逻辑的严谨性与神经网络的灵活性。


总结与展望

本节课中我们一起学习了增强语言模型常识推理能力的三种路径:

  1. 迷宫法:通过在推理时引入符号逻辑约束和一致性优化,直接提升现有大模型的逻辑严谨性。
  2. 符号知识蒸馏:通过“教师生成-批评者过滤”的流程,从大模型中提炼高质量常识知识,训练出更小、更专精、性能更优的学生模型。
  3. 道德常识建模:通过构建Delphi等模型,显式地学习人类社会的描述性道德规范,并直面其中的复杂性、偏见和挑战。

核心结论是:在常识推理领域,盲目扩大模型规模并非唯一出路。通过算法创新、高质量数据构建以及神经符号方法的结合,我们能够更高效、更可控地提升机器的常识理解能力。未来,要使AI系统与人类价值观更好对齐,需要在技术、数据、以及跨学科协作上持续投入。

posted @ 2026-02-05 08:54  绝不原创的飞龙  阅读(2)  评论(0)    收藏  举报