5.2 预训练范式的确立
Transformer 架构的出现催生了现代 AI 的核心范式 —— “预训练+微调”。以语言建模为预训练任务,2018 年诞生的 GPT 和 BERT 两大模型证明了其巨大潜力。GPT 通过生成式预训练展现了强大的文本生成能力,而BERT则通过双向编码和掩码语言建模,在各项自然语言理解任务上取得了突破性进展。它们的成功确立了先在大规模无标签数据上学习通用知识,再在特定任务上微调的黄金标准。
Transformer 架构问世后,研究者们很快意识到这个强大的模型架构蕴含着更大的潜力。如果 Transformer 能在机器翻译这样的有监督任务上表现出色,那么它在无监督学习上会有怎样的表现呢?
这个问题的答案,催生了现代 AI 的核心范式:大规模预训练(Large-scale Pretraining)。
5.2.1 预训练思想起源
预训练的思想其实并不新鲜,它的灵感来源于计算机视觉领域的成功经验。早在 2012 年 AlexNet 取得成功后,研究者们就发现了一个有趣的现象:在 ImageNet 这个包含超过 1400 万张图片的大数据集上预训练的模型,可以很好地迁移到其他视觉任务上。
这种迁移学习的威力令人惊叹。举个具体的例子:假设你想训练一个模型来识别医学影像中的肿瘤,但你只有几千张标注好的医学图片。如果从头开始训练,模型很难学到足够的特征表示。但如果你使用一个在 ImageNet 上预训练的模型作为起点,情况就完全不同了。
这个预训练模型虽然是在日常物体(猫、狗、汽车、飞机等)上训练的,但它的底层已经学会了识别边缘、纹理、形状等基础视觉特征。这些特征对于识别医学影像同样有用。你只需要将模型的最后几层替换成适合医学诊断的分类器,然后在医学数据上进行微调,就能获得比从头训练好得多的效果。
这种方法的成功揭示了一个重要原理:不同视觉任务之间存在共同的底层特征。无论是识别猫狗还是诊断肿瘤,模型都需要先学会”看“,即理解图像中的基本视觉元素。而ImageNet预训练提供了这种通用的“视觉理解”能力。
这种先在大数据集上学通用特征,再在小数据集上做特定任务的思路被称为 迁移学习(Transfer Learning)。它的核心思想就是:底层的特征往往是通用的,高层的特征才是任务特定的。就像人类学习一样,我们先学会识别线条、形状、纹理这些基础视觉概念,然后才能学会识别具体的物体。 但在自然语言处理即NLP领域,这种想法一直难以实现。
最大的障碍在于缺乏统一的架构。
不同的 NLP 任务(文本分类、机器翻译、语言建模等)通常需要不同的模型架构。这种架构的碎片化让预训练变得困难,因为你很难设计一个适用于所有任务的预训练模型。
第二个障碍是预训练目标不明确。
在计算机视觉中,ImageNet 的分类任务提供了一个清晰的预训练目标。但在 NLP 中,什么样的预训练任务最有效呢?是词向量训练?还是语言建模?还是其他什么任务?
第三个障碍是计算资源限制。
训练大规模语言模型需要巨大的计算资源,这在当时是很多研究机构都无法承受的。
Transformer 的出现一举解决了第一个问题。它提供了一个统一、强大、灵活的架构,既能做生成任务,也能做理解任务。而GPU算力的快速发展和云计算的普及解决了第三个问题。现在关键是要解决第二个问题:找到合适的预训练任务。
5.2.2 语言建模
答案其实一直就在眼前: 语言建模(Language Modeling)。这个任务在统计自然语言处理时代就已经存在,但直到深度学习时代,研究者们才真正意识到它的巨大潜力。
语言建模的任务看起来简单得甚至有些愚蠢:给定一段文本的前面部分,预测下一个词是什么。比如给定“今天天气很”,模型需要预测下一个词可能是“好”、“糟”、“热”等等。初看之下,这似乎是一个非常机械的统计任务。
但仔细想想,要做好这个“简单”的任务,模型其实需要掌握语言的方方面面。
首先是语法知识,模型必须理解词性、时态、语序等语法规则。比如在“我昨天去了”后面,模型需要知道应该跟一个地点名词,而不是动词或形容词。
其次是语义理解,模型需要掌握词汇的含义和语义关联。比如看到“医生拿起了”,模型应该知道后面更可能是“听诊器”或“手术刀”,而不是“吉他”或“画笔”。
更深层次的是常识推理能力。比如看到“雨下得很大,所以我带了”,模型需要调用关于天气和人类行为的常识,知道后面应该是“雨伞”而不是“太阳镜”。
最重要的是上下文理解能力。同样的词在不同语境中可能有完全不同的含义。比如“苹果”在“我吃了一个苹果”和“苹果公司发布了新产品”中显然指的是不同的东西。
语言建模任务的另一个巨大优势是它是自监督的。这意味着它不需要人工标注,任何文本都可以直接用作训练数据。你只需要把每个句子的最后一个词当作标签,前面的部分当作输入,就构成了一个训练样本。这种“免费”的监督信号让我们可以利用互联网上海量的文本数据来训练模型,这在之前是不可想象的。
5.2.3 生成式预训练模型——GPT
2018 年 6 月 OpenAI 发布了一篇论文 通过生成预训练提高语言理解能力(Improving Language Understanding by Generative Pre-Training),首次提出了 GPT(Generative Pre-trained Transformer)模型。这是第一个真正成功地将预训练范式应用到自然语言处理的模型。
GPT 的核心思想其实非常简单:既然 Transformer 架构如此强大,为什么不用它来做语言建模,然后将学到的知识迁移到其他任务上呢?这个想法听起来理所当然,但在当时却是相当大胆的尝试。
GPT 采用了一个两阶段的训练策略:
- 预训练阶段:OpenAI 团队使用了一个包含超过 7000 本书籍的语料库(被称为BookCorpus),大约40GB的文本数据,让一个 12 层的 Transformer 解码器进行语言建模训练。这个数据量在当时已经是前所未有的规模了。模型总共有 1.17 亿个参数,在 2018 年也算是一个“大”规模模型。
- 微调阶段:OpenAI 团队将预训练好的模型在各种特定任务的标注数据上进行微调。有趣的是,对于不同的任务,他们只需要在模型顶部添加一个简单的分类层,然后进行端到端的微调即可。
当 GPT 在各种自然语言理解任务上进行测试时,结果令人惊喜。在 GLUE 基准测试中的9个任务中,GPT 在其中 8 个任务上都超过了当时的最佳记录。更重要的是,这种提升不是微小的改进,而是显著的跃升。比如在文本蕴涵任务上,GPT 的准确率比之前的最佳结果提高了 8.9 个百分点。
但真正让研究者们眼前一亮的不是 GPT 在理解任务上的表现,而是它的生成能力。当你给 GPT 一个开头,GPT能够生成逻辑连贯、语法正确、甚至颇有见地的后续文本:
输入: "人工智能的发展将会"
GPT输出: "人工智能的发展将会对社会产生深远影响。它不仅会改变我们的工作方式,还会重塑教育、医疗、交通等各个领域。在享受AI带来便利的同时,我们也需要关注其潜在的风险和挑战..."
更有趣的是,GPT 展现出了一定的“零样本”学习能力。即使没有在特定任务上进行微调,它也能通过理解任务描述来执行一些简单的任务。比如你可以给它一个句子,然后说“这个句子的情感是积极还是消极?”,GPT 往往能给出合理的答案。
5.2.4 双向编码——BERT
如果说 GPT 证明了生成式预训练的可行性,那么 Google 在 2018 年 10 月发布的 BERT 则完全改写了自然语言理解的游戏规则。
BERT 的全称是 Bidirectional Encoder Representations from Transformers,即基于 Transformer 的双向编码器表示。这个名字本身就揭示了 BERT 的核心创新: 双向性。
在 BERT 之前,包括 GPT 在内的所有语言模型都是单向的,即只能从左到右或从右到左处理文本。但Google的研究者们提出了一个看似简单却极其深刻的问题: 为什么预训练只能单向进行?
人类在理解语言时,会同时考虑一个词的前后文。比如在句子“我喜欢苹果手机”中,如果没有后面的“手机”,我们会误以为说话者喜欢吃水果苹果。这种双向的理解能力对于真正的语言理解来说是至关重要的。
BERT的解决方案极其巧妙 —— 掩码语言建模(Masked Language Modeling) 的预训练方式,具体来说,就是在输入文本中随机掩盖 15% 的词汇,然后让模型根据上下文来预测这些被掩盖的词:
原句: "我昨天去了北京大学参观"
掩码: "我昨天去了[MASK]大学参观"
任务: 预测[MASK]位置的词是"北京"
这种训练方式的绝妙之处在于,它迫使模型同时利用被预测词的前文和后文信息。模型不能仅仅依赖“我昨天去了”来预测下一个词,它必须同时考虑后面的“大学参观”才能做出准确的预测。
除此之外,BERT 还引入了另一个预训练任务: 下一句预测(Next Sentence Prediction)。这个任务让模型判断两个句子是否在原文中是相邻的,从而学习句子间的关系。
当 BERT 发布时,它在几乎所有自然语言理解任务上都取得了碾压性的成功。在 GLUE 基准测试中,BERT-Large 模型获得了 80.5 分,而之前的最佳记录只有 68.9 分。更令人震惊的是,在一些具体任务上,BERT 的表现已经接近甚至超过了人类水平。比如在 SQuAD 阅读理解任务上,BERT 的 F1 分数达到了 93.2,而人类的表现是 91.2。
BERT 的成功不仅仅体现在数字上,更体现在它对整个领域的深刻影响。几乎一夜之间,所有的 NLP 研究者都开始使用 BERT 作为基础模型。“BERT牛皮!”基本成为了当时 AI 社区中的流行语。
5.2.5 “预训练+微调”范式
GPT 和 BERT 的相继成功标志着一个全新时代的到来。2018 年可以说是自然语言处理的分水岭年份:在这一年之前,研究者们还在为各种特定任务设计专门的模型架构;而在这一年之后,几乎所有的NLP研究都开始围绕 “预训练+微调” 这个核心范式展开。
先在大规模无标注数据上进行预训练,学习通用的语言表示;然后在特定任务的少量标注数据上进行微调,快速适应具体任务。就像人类学习一样,我们先通过大量的阅读和生活经验积累语言知识,然后在面对具体任务时快速应用这些知识。
这种方法带来的改变是革命性的。在传统的 NLP 方法中,每个任务都需要从头设计模型,收集大量的标注数据,进行长时间的训练。而现在,研究者们发现只需要几千个标注样本就能在很多任务上取得优异的效果。这种数据效率的提升对于实际应用来说意义重大,因为在现实世界中,标注数据往往是昂贵且稀缺的。
更重要的是,预训练模型展现出了前所未有的通用性。同一个 BERT 模型可以同时胜任情感分析、问答系统、文本分类、命名实体识别等多种任务。这种“一个模型打天下”的能力大大降低了 NLP 应用的开发成本和技术门槛。
预训练范式还带来了另一个意想不到的好处:“平权” 了 AI 技术。在预训练模型出现之前,只有拥有大量计算资源和专业知识的大公司才能在 NLP 领域取得突破。而现在,任何研究者或开发者都可以下载预训练好的模型,在几小时内就能为自己的应用构建出高质量的 NLP 系统。
同时,预训练范式的确立也为研究者们指明了通向通用人工智能的一条可能路径。如果一个模型能够通过预训练获得通用的语言理解能力,那么通过类似的方法,只要有足够的数据,我们是否也能训练出具有通用视觉理解、通用推理、甚至通用问题解决能力的模型呢?
Last updated on
5.1 Transformer横空出世
2017 年,Google Brain 团队发表的论文《Attention Is All You Need》彻底改变了序列建模领域,正式推出了 Transformer 架构。该架构完全摒弃了传统的循环网络(RNN),仅依赖于“自注意力机制”。通过多头注意力和位置编码等创新设计,Transformer 不仅能捕捉长距离依赖关系,更重要的是实现了完全并行计算,极大地提升了训练效率和模型性能,开启了大规模预训练模型的新纪元。
5.3 代码理解的 Transformer 时代
Transformer 架构的强大能力迅速被应用于代码理解领域,并显示出超越自然语言处理的潜力。模型如 CodeBERT 通过在代码和其对应的自然语言文档上进行双模态预训练,实现了代码搜索和克隆检测等任务的突破。随后的 GraphCodeBERT 进一步引入代码的数据流图,显式地建模程序结构,从而获得更深层次的语义理解能力。这标志着 AI 正从简单地“阅读”代码文本,迈向真正“理解”程序逻辑的时代。