深入理解 ChatGPT:预训练(Pre-train)的奥秘
今天我们来深入探讨 ChatGPT 背后的核心技术之一:预训练(Pre-train)。这不仅是理解 ChatGPT 强大能力的关键,也是当前大模型领域的热门话题。
什么是预训练?
预训练,又被称为自监督学习(Self-supervised Learning)或构建基石模型(Foundation Model)。它在 ChatGPT 的命名中占据了“P”的位置,代表着“Pre-trained”。
简单来说,ChatGPT 的核心功能是文本接龙。它是一个函数,能够根据输入生成连贯的文本。这个函数的能力并非凭空而来,而是通过以下两种方式获得的:
人类老师的教导:提供大量的输入-输出对,让模型学习正确的响应。
网络上的海量数据:通过自监督学习从无标签数据中提取知识。
传统机器学习的局限性
在传统的监督学习中,例如英中翻译系统,我们需要收集大量的成对的(paired)中英对照例句。人类老师需要明确告诉机器,输入“I eat an apple”应该输出“我吃苹果”。机器通过这些成对数据来学习翻译函数。
然而,这种方式存在一个显著的局限性:人类老师能够提供的成对数据是极其有限的。如果训练数据中从未出现过“喜马拉雅山”这个词,那么即使机器学会了翻译,它也无法回答“世界第一高峰是哪座山”这样的问题。这意味着,仅仅依靠人类标注的有限数据,模型的知识和能力将非常有限。
预训练如何解决数据稀疏问题?
为了克服传统监督学习的局限性,预训练技术应运而生。它的核心思想是无痛地制造大量成对数据。
具体来说,网络上的每一段文字都可以被用来训练模型进行文本接龙。例如,对于句子“世界第一高峰是喜马拉雅山”,我们可以将前半部分“世界第一高峰是”作为输入,将后半部分“喜马拉雅山”作为输出,让模型学习这种接龙关系。同样,对于“今天天气真好,我要出去玩”,模型会学习到“今天天气真好”后面应该接“逗号”。
通过这种方式,模型可以从海量的无标签文本数据中学习语言的模式和知识,而无需人工标注。
GPT 系列模型的发展
ChatGPT 的成功离不开其前身 GPT 系列模型的发展:
GPT-1 (2018):最初的 GPT 模型相对较小,拥有 1.17 亿参数,训练数据量为 1GB。
GPT-2 (2019):GPT-2 的规模是 GPT-1 的 10 倍,拥有 15 亿参数,训练数据量达到 40GB。GPT-2 已经展现出回答问题和文本摘要的能力,这在当时引起了学界的轰动。
GPT-3 (2020):GPT-3 的规模更是达到了 GPT-2 的 100 倍,拥有 1750 亿参数,训练数据量高达 570GB。570GB 的文本数据相当于把《哈利波特》全集读了 30 万遍。GPT-3 甚至能够生成代码,因为它在预训练过程中接触了大量的代码和注释。
预训练的巨大帮助:多语言能力
预训练带来的一个惊人效果是模型的多语言能力。
研究发现,在多种语言上进行预训练后,模型可以展现出**零样本(Zero-shot)**的跨语言迁移能力。这意味着,你只需要在某种语言(例如英语)上训练模型完成某个任务(例如阅读理解),它就能自动在其他语言(例如中文)上执行相同的任务,而无需额外的翻译或特定语言的训练。
例如,在 DRCD 中文阅读理解数据集上,一个在 104 种语言上进行预训练的 BERT 模型,即使只在英文阅读理解任务上进行微调,其在中文阅读理解任务上的表现也与直接在中文上微调的模型相近。这表明,预训练让模型学会了将不同人类语言内化为同一种内部表示,从而实现了跨语言的知识迁移。
ChatGPT 的训练流程:三步走
ChatGPT 的强大能力是分阶段训练的结果,主要包括以下三个步骤:
预训练(Pre-train):
模型通过阅读海量的网络文本数据,学习文本接龙的能力。
这个阶段是自监督学习,无需人工标注,模型从数据中自动生成训练信号。
例如,GPT-3 就是通过预训练获得的基石模型。
监督学习(Supervised Learning):
在预训练的基础上,引入人类老师进行微调(Fine-tune)。
人类老师提供高质量的输入-输出对,纠正模型在预训练中可能学到的不符合人类意图的回答。
例如,当用户问“台湾最高的山是哪座?”,人类老师会明确告诉模型输出“玉山”。
强化学习(Reinforcement Learning, RL):
为了进一步提升模型的对话质量和安全性,引入强化学习。
在这个阶段,人类不再直接提供正确答案,而是对模型的回答进行好坏评价(点赞或点踩)。
这种方式更省力,也更适用于那些没有明确“正确答案”的问题,例如“请帮我写诗赞美AI”。
预训练的“前世记忆”
尽管经过了监督学习和强化学习的微调,ChatGPT 有时仍然会展现出预训练阶段的**“前世记忆”**。
例如,当你输入“今天天气真不错”时,ChatGPT 可能会回复一段以逗号开头的文本,例如“,温暖的阳光照耀着大地,微风轻拂…”。这表明它仍然在执行文本接龙的任务,试图将你的输入作为某个长句的开头,并继续生成后续内容,而不是像人类一样直接开始一个新句子。这提醒我们,即使模型能力强大,其底层逻辑仍然是基于预训练阶段学到的模式。