目录
[基础 ------ 预训练目标](#基础 —— 预训练目标)
[三、 Transformer 模型架构和自注意力](#三、 Transformer 模型架构和自注意力)
[四、 视觉模型和语言模型](#四、 视觉模型和语言模型)
[2.基本原理 ------ 微调](#2.基本原理 —— 微调)
[3. 语言技术重点 ------ 因果建模和缩放法则](#3. 语言技术重点 —— 因果建模和缩放法则)
[4. 编码器和解码器](#4. 编码器和解码器)
一、引言
从 70 多年的人工智能研究中习得的最大教训是,利用计算的一般方法终将是最有效的,而且在很大程度上是如此...... 从长远看,计算也是唯一重要的事。
------Richard Sutton,"The Bitter Lesson",2019 (1)
本文将介绍当今许多人工智能和机器学习系统的支柱 ------ 基础模型,特别是,将深入探讨其创建过程(也称为预训练),并了解其在提高模型准确性上的竞争优势。还将讨论支撑模型的核心 Transformer 架构,介绍可用于解决各种用例的编码器和解码器框架。
二、预训练和微调艺术
人能够创造出最伟大的美,提出最深刻的问题,但在许多情况下,对自身基础底层构成的认识却极度匮乏。意识究竟为何物?心灵又是何物?心应系于何处?身而为人的意义何在,以及如何学习?
当来自无数学科的科学家、艺术家和思想家努力思考且试图解决这些复杂的问题时,计算领域也正在复制(某些情况下甚至是超越)人类智慧的道路上奋进。如今,从自动驾驶汽车到编写剧本、搜索引擎和问答系统的应用程序都有一个共同点,即都用到了模型,甚至是许多不同类型的模型。这些模型来自哪里,它们是如何获得智力的,可以采取什么步骤来应用它们以获得最大的影响呢?基础模型本质上是大量数据集的紧凑表示。而这种表示又是通过将预训练目标应用到数据集上来实现的,从预测掩膜词元到完成句子。基础模型非常有用 ------ 一旦创建了模型,通过称为预训练的过程,模型就可以直接部署,或针对下游任务进行微调。直接部署的基础模型的一个例子是 Stable Diffusion,其基于数十亿的图像 - 文本对进行预训练,预训练后便能立即从文本中生成有用的图像。微调基础模型的一个例子是 BERT,BERT 基于大型语言数据集进行预训练,但最适用于下游领域(如分类)。
当应用于自然语言处理时,这些模型可以完成句子,将文本分类,生成摘要,回答问题,做基础的数学运算,并生成创造性作品,如诗歌和歌曲等。在计算机视觉中,基础模型可用于图像分类、生成、姿态估计、目标检测、像素映射等任何地方。
而这都源于定义了一个预训练目标。此外,我们还将介绍它的同类方法 ------ 微调,它可帮助模型了解关于特定域的更多信息。通常,这属于迁移学习的范畴,即采用预训练的神经网络,并为其提供一个新的数据集,增强其在某个维度上的知识。在视觉和语言方面,这些术语都有一些明确的区别,但别担心,后面将用更多的篇幅来介绍它们。我一般使用 "微调" 一词来指代将一个模型适应于另一个领域的一整套技术,而非狭义的、经典的术语。
基础 ------ 预训练目标
大规模预训练的核心均围绕 "预训练目标" 概念展开。"预训练目标" 是一种利用数据集中随时可用的信息且不需要大量人工词元的方法。一些预训练目标包括掩膜、提供唯一的 [MASK] 词元来代替某些单词和训练模型填充这些单词。其他预训练目标则采取不同的方法,使用给定文本字符串的左侧内容来尝试生成右侧内容。
训练过程通过前向传递(forward pass)进行,将原始训练数据发送到神经网络以产生一些输出单词。然后,损失函数会计算该预测单词与数据中所找到的单词之间的差值。预测值和实际值之间的差值是反向传递(backward pass)的基础。反向传递本身通常利用某种随机梯度下降来更新神经网络关于相同损失函数的参数,确保下次更有可能获得更低的损失函数。
在 BERT (2) 的情况下,预训练目标被称为掩膜词元损失(masked token loss)。对于 GPT (3) 变体的生成式文本模型,预训练目标被称为因果语言损失。另一种考虑整个过程的方式是自监督学习(self-supervised learning),其利用数据集中已有的内容作为模型的信号。而这在计算机视觉中又被称为代理任务(pretext task)。
我个人认为预训练是机器学习研究中最令人激动的进展之一。为什么?因为,它与 Richard Sutton 在本文开头提出的带有争议的观点是契合的 ------ 在计算上是有效的。使用预训练可以基于互联网上大量的可用信息构建一个模型,然后使用自己的专有数据将所有这些知识结合起来,应用于应用程序。此外,预训练还为公司、国家、语言和领域的巨大合作打开了方便之门。该行业在发展、完善和利用预训练范式方面确实才刚刚起步。
众所周知,预训练既有趣又有效,但它自身的竞争力又在哪里呢?在自己的专有数据集非常大、与常见的研究数据集相左,且基本上没有词元类似的语料库上训练的 ------ 如维基百科、社交媒体、书籍和流行的互联网站。其中的许多语料库都只专注于英语语言,很少会有意识地使用视觉和文本数据之间的丰富互动。而本文则会有意识地探讨选择和完善预训练策略的细微差别和不同优势。
如果你的业务或研究假设依赖于非标准的自然语言,如金融或法律术语、非英语语言或来自另一个领域的丰富知识,就可能需要考虑从头开始预训练自己的模型。你要问问自己,核心问题是什么,在你的模型中,准确度每提高一个百分点会带来多大的价值?如果你不知道这个问题的答案,那么我强烈建议你花点时间寻找一个答案。一旦你可以自信满满地说,我的模型准确性的提高至少值几十万元,甚至可能值几百万元,就可以开始预训练模型了。
至此,基础模型就已经简单介绍完毕,但是它们是如何通过一个称为预训练的过程产生的,以及如何通过微调来适应特定领域的呢?接下来让我们一起了解关于 Transformer 模型架构的更多内容。
三、 Transformer 模型架构和自注意力
2017 年,著名的论文 Attention is all you need 提出了 Transformer 模型,成为机器学习行业的一个转折点。这主要是因为该模型使用了一种现有的数学技术,即自注意力机制,来解决与序列有关的 NLP 问题。Transformer 当然不是对序列建模的第一次尝试,以前,循环神经网络(recurrent neural network,RNN)甚至卷积神经网络(convolutional neural network,CNN)在语言中都非常流行。
然而,Transformer 却因其训练成本只占现有技术的极小百分比而脱颖而出。这不仅源于 Transformer 凭借其核心的自注意力过程从根本上超越了以前的技术,更容易并行化,还源于其刷新了机器翻译的新世界纪录。最初的 Transformer 同时使用了编码器和解码器。这种联合编码器 - 解码器模式已直接被其他专注于类似文本到文本任务(如 T5)的模型所借鉴。
2018 年,Alex Radford 和他的团队推出了生成式预训练 Transformer(Generative Pretrained Transformer),这是一种受 2017 年 Transformer 启发的方法,但只使用了解码器。该模型被称为 GPT,能够很好地处理大规模的无监督预训练,并与有监督的微调相结合,在下游任务中表现良好。正如前文提到的,这种因果语言建模技术优化了词元的对数概率,提升了从左到右找到序列中可能性最大的单词的能力。
2019 年,Jacob Devlin 和他的团队展示了 BERT:深度双向 Transformer 的预训练。BERT 还采用了预训练、微调范式,但实现了一个掩膜语言建模损失函数,帮助模型学习词元对词元前、后内容的影响。事实证明,这在消除不同上下文中单词的歧义方面很有用,并从那时起促进了仅使用编码器的任务(如分类)的发展。
尽管 GPT 和 BERT 的名字内都包含了 Transformer 一词,但都没有使用原 Transformer 论文中提及的完整的编码器 - 解码器,而是利用自注意力机制作为整个学习过程的核心步骤。因此,这才是我们实际上应该理解的自注意力过程。
首先要记住,每个单词或词元都可以表示为一个嵌入。使用词元分析器便可轻松创建嵌入,而词元分析器是每个模型的预训练数据对象,它会将单词映射为适当的密集向量。当每个词元都有一个对应的嵌入时,就可以使用可学习权重来生成 3 个新的向量:键(key)、查询(query)和值(value)。然后,使用矩阵乘法和少许步骤与键和查询交互,使用最后的值来确定序列中信息量最大的部分。在整个训练循环中,会根据你的预训练目标更新这些权重,以获得越来越好的互动。
预训练目标可作为如何更新模型参数的定向指南。换句话说,预训练目标为随机梯度下降更新过程提供了主要信号,根据模型预测的错误程度来改变模型的权重。当长时间训练时,这些参数应该反映出损失值的减少,从而提高整体的准确性。
有趣的是,Transformer 头的类型会根据所使用的不同类型的预训练目标而略有变化。例如,一个正常的自注意力模块使用来自词元左侧和右侧的信息来预测它。这是为预测提供信息量最大的上下文信息,在掩膜语言建模中很有用。在实践中,自注意力头被堆叠在嵌入的全矩阵进行操作,从而带来多头注意力。然而,因果语言建模使用了一种不同类型的注意力头:掩膜自注意力。这将预测信息的范围限制在矩阵的左侧,迫使模型学习从左到右的过程。这与更传统的自注意力形成了对比,后者可以同时访问序列的左侧和右侧进行预测。
直观地讲,需要了解 Transformer 和自注意力的内容有以下几点。
Transformer 本身是一个完全建立在自注意力函数上的模型:自注意力函数接收一组输入(如嵌入),并执行数学运算来组合这些输入。当与词元(单词或子单词)掩膜相结合时,该模型可以有效地学习嵌入的某些部分或序列对其他部分的重要程度。这正是自注意力的意义;该模型试图了解输入数据集的哪些部分与其他部分最相关。
Transformer 在使用序列时表现得非常好:近年来,大多数有突破的基准测试都来自 NLP,这是有充分理由的。这些预训练目标包括词元掩膜和序列完成,这两者不仅依赖于单个数据点,还依赖于它们的串接及其组合。这对那些已经在使用序列数据的人来说是个好消息,对那些不使用序列数据人来说则是一个有趣的挑战。
Transformer 在大规模环境运行得很好:底层的注意力头很容易并行化,这使它在参考其他候选的基于序列的神经网络架构(如 RNN)时具有强大的优势,包括基于长短期记忆(Long Short-Term Memory,LSTM)网络。在预训练情况下,自注意头可以设置为可训练的,在微调的情况下,自注意头则可以设置为不可训练的。
Transformer 并非是唯一的预训练方式。还有许多其他类型的模型(特别是在视觉和多模型的情况下)也可以提供最先进的性能。
四、 视觉模型和语言模型
如果你是机器学习的新手,那么一定渴望知道如何掌握最先进的技术。如你所知,有许多不同类型的机器学习任务,如目标检测、语义分割、姿势检测、文本分类和问题回答。每个任务都有许多不同的研究数据集。每个数据集都会提供标签,通常用于训练集、测试集和验证集的划分。这些数据集往往由学术机构托管,每个数据集都是专门为训练解决某一类问题的机器学习模型而构建的。
通常,当发布一个新的数据集时,研究人员还会发布一个已经基于训练集训练、基于验证集微调并在测试集上单独评估的新模型。该新测试集的评估分数便奠定了此特定类型的建模问题的最先进技术水平。在发表某类论文时,研究人员通常会试图提高这一领域的性能 ------ 例如,尝试在少数数据集上提高几个百分点的准确性。
最高水准的性能对你来说很重要,原因是它可以证实你的模型在最佳情况下的性能。大多数研究结果都很难再现,而且实验室通常都会研发特殊技术来提升性能,因此其他人不太容易目睹和复制这些技术。当数据集和代码仓库没有公开共享时,尤其如此,例如 GPT-3。当训练方法没有公开时,情况更是如此,例如 GPT-4。
然而,如果有足够的资源,就可能实现顶级论文展现的类似性能。Papers With Code 是一个由 Meta 维护并由社区赋能的优秀网站,是在任何特定时间点都可以获得最先进性能的绝佳场所。通过这个免费工具,很容易就能找到顶级论文、数据集、模型和 GitHub 网站的示例代码。此外,它们有很好的历史视图,从中可以查看不同数据集中的顶级模型随时间的演变历史。
1.对比预训练与自然语言监督
从李飞飞 2006 年的 ImageNet 到 2022 年 Stable Diffusion 中使用的 LAION-5B,现代和经典图像数据集的有趣之处在于,标签本身是由自然语言组成的。换句话说,因为图像的范围包括来自现实世界的物体,所以标签必然比单个数字更微妙。从广义上讲,这种类型的问题框架被称为自然语言监督(natural language supervision)。
想象一下,有一个由数千万张图像组成的大型数据集,每张图像都配有描述。除了简单地命名对象,描述还可以提供有关图像内容的更多信息。描述可以是任何东西,从 Stella sits on a yellow couch(斯特拉坐在黄色沙发上)到 Pepper, the Australian pup(澳大利亚小狗佩珀)。只需要几句话,就能立即获得比简单描述对象更多的上下文信息。现在,想象一下使用一个预训练的模型,如编码器,将语言处理成密集的向量表示。然后,将其与另一个预训练模型(这次是图像编码器)相结合,将图像处理成另一个密集向量表示。将这两者结合在一个可学习的矩阵中,就可以进行对比预训练了!同样由 Alex Radford 和他的团队在 GPT 问世几年后提出的这种方法为我们提供了一种共同学习图像和语言之间关系的方法,以及一种非常适合这样做的模型,该模型被称为对比语言图像预训练(CLIP)。
CLIP 当然不是唯一一个使用自然语言监督的视觉语言预训练任务。2019 年,一个来自中国的研究团队提出了一个试图实现类似目标的视觉语言 BERT(Visual-Linguistic BERT)模型。从那时起,视觉和语言基础模型的联合训练就变得非常流行了,Flamingo、Imagen 和 Stable Diffusion 都有不俗的表现。
毫无疑问,世界上的绝大多数自然语言都没有直接的数字标签。一些自然语言很适合贴上具体的标签,例如客观性毋庸置疑的情况。这可以包括回答问题、摘要、高级情感分析、文档检索等方面的准确性。
但是,确定这些标签并生成它们所需的数据集的过程可能会令人望而却步,因为这完全是由人工手动进行的。同时,许多无监督的数据集每秒都在增大。毕竟,当今的大部分全球对话都是在线的,各种各样的数据集很容易访问。那么,机器学习(ML)研究人员应该如何定位自己,从这些大型、无监督的数据集中获益呢?
这正是语言建模想解决的问题。语言建模是将数学技术应用于没有元文本的大型语料库的过程,依赖于各种预训练目标,以使模型能够理解文本。这也称为自监督,是一种可以因手头模型的不同而微调变化的概念。BERT 在整个数据集中随机应用掩膜,通过编码器学习预测被掩膜隐藏的单词;GPT 用解码器从左到右预测(如从句子开头预测结尾);T5 系列同时用编码器和解码器学习文本到文本的任务(如翻译、搜索)。ELECTRA 提出的替代方案是 "词元替换目标"------ 将新词元注入原始文本,而非掩膜。
2.基本原理 ------ 微调
基础语言模型需与 "微调" 方法结合才有用。微调的核心逻辑是:利用在其他数据上预训练好的基础模型,再用小量特定任务数据,让模型更专注于该任务(也叫 "域自适应",即把预训练模型适配到预训练任务未覆盖的新领域)。
微调任务非常广泛:用 BERT 微调可做文本分类、问答、命名实体识别;用 GPT - 2 微调可提取摘要;用 T5 微调可做翻译。核心是利用基础模型的 "智能"(计算、数据集、大型神经网络,以及研究人员继承的预训练方法)。还可通过 Hugging Face 等开源框架简化微调,该框架包含数万个预训练模型。微调类型多样,从参数有效微调,到指令微调、思想链,甚至检索增强生成(不严格更新核心模型参数)。
基础语言和视觉模型存在负面影响:对初学者而言,其庞大计算需求对服务商有显著能源需求,且成本高昂,给资源不足者带来挑战。
此外,大型模型易继承训练数据中的社会偏见(如职业性别歧视、种族判罪倾向等),研究人员已发现数百种可能渗透到 NLP 系统的偏差。设计者和开发者需意识到风险并采取措施削弱。
3. 语言技术重点 ------ 因果建模和缩放法则
ChatGPT 所属的 OpenAI 多年来致力于提升人工智能成果,在语言模型缩放方面大胆尝试,用类似物理学的推导公式解释 LLM 缩放性能。OpenAI 最初为非营利组织,后与微软达成独家协议,研发团队专注于专有模型和技术,不过仍为行业提供了 GPT、缩放法则等有用见解。
基于 GPT 的模型用 "因果语言建模" 从左到右学习完成文本,更新模型可学习参数直至文本准确。Jared Kaplan 带领 OpenAI 团队提出受物理学启发的理念:用公式估计模型数据集和计算环境大小对损失的影响,神经语言模型缩放法则表明,给定计算环境下最佳模型体量极大。
2018 年原始 GPT 有 1.17 亿参数,GPT - 2 参数增大 10 倍,精度提升超一倍;受此鼓舞,在 Kaplan 理论推动下,GPT - 3 参数又增 10 倍。模型尺寸从 13 亿参数增至 130 亿,最终到 1750 亿,准确性大幅飞跃,催化 NLP 领域,催生新用例和研究。之后出现更大的 PaLM 模型、更小的 Chinchilla 模型(后者更新了缩放法则);Yann LeCunn 团队提出特定领域优于大型模型的小型模型(如问答模型 Atlas);Amazon 推出性能优于 GPT - 3 的 AlexaTM 和 MM - COT;许多团队也在做 GPT - 3 开源版本(如 Hugging Face 的 BLOOM、EleutherAI 的 GPT - J、Meta 的 OPT)。
4. 编码器和解码器
编码器:是计算图(或神经网络、函数、对象),接收大特征空间输入,输出小特征空间对象,核心是学习输入数据的最重要信息。在大型语言和视觉模型中,编码器常由大量多头自注意力对象组成;基于 Transformer 的模型里,编码器通过自注意力步骤学习输入基本内容并传递给下游模型。分类任务中,编码器输出为每个类的 "分类头";掩膜语言建模中,编码器堆叠以更好预测替换掩膜的词元,输出词元嵌入或数字表示,再用词元分析器翻译回自然语言。BERT 是仅用编码器的模型代表,DeBERTa、DistilBERT、RoBERTa、DeBERTa 等基于 BERT 的模型也采用仅编码器的架构。
解码器:操作与编码器相反,从压缩表示开始,迭代重建为大特征空间。
编码器和解码器可像原始 Transformer 一样组合,解决文本到文本问题。下表总结了 3 种自注意力块(编码器、解码器、编码器 - 解码器)的输入输出大小、机器学习任务及示例模型:
输入和输出的大小 | 自注意力块的类型 | 机器学习任务 | 示例模型 |
---|---|---|---|
长到短 | 编码器 | 分类、任何密集表示 | BERT、DeBERTa、DistilBERT、RoBERTa、XLM、AlBERT、CLIP、VL - BERT、Vision Transformer |
短到长 | 解码器 | 生成、摘要、问题回答、任何稀疏表示 | GPT、GPT - 2、GPT - Neo、GPT - J、ChatGPT、GPT - 4、BLOOM、OPT |
相等 | 编码器 - 解码器 | 机器翻译、风格翻译 | T5、BART、BigBird、FLANT5、Stable Diffusion |
五、总结
本文系统介绍了人工智能领域的基础模型及其关键技术。文章首先阐述了70年AI研究的重要启示------计算能力是核心驱动力。随后详细解析了基础模型的预训练过程(如BERT的掩膜语言建模、GPT的因果语言建模)和微调技术,指出预训练是大规模利用互联网数据的有效方法。重点分析了Transformer架构的自注意力机制及其在编码器(BERT等)、解码器(GPT系列)和编码器-解码器(T5等)三类模型中的应用差异。文章还探讨了视觉与语言联合预训练(如CLIP)、模型缩放法则,以及最先进技术面临的挑战(计算成本、社会偏见等)。最后对比了不同架构适用的任务类型,为读者提供了基础模型的全面技术图谱。