导读
都2025年了,关于“大模型”这个词,想必很多人多不陌生,它们似乎拥有神奇的力量,能够生成各种文本内容,从简单的对话到复杂的学术论文。然而,这些看似“魔法”的模型背后,其实有着严谨的科学原理和技术支撑。今天,我们就来揭开大语言模型的神秘面纱,深入探究它们是如何从预训练走向实际应用的。
下面将从 LLMs 的构建方式讲起。从宏观层面来看,LLMs 的训练分为两个关键阶段:预训练和后训练。
1. 预训练
在 LLM 能够生成文本之前,它必须先学习语言的运作方式。这通过预训练实现,是一项计算密集型任务。
第一步:数据收集和预处理
训练 LLM 的第一步是收集尽可能多的高质量文本。目标是创建一个庞大且多样化的数据集,包含广泛的人类知识。
一个数据来源是 Common Crawl,这是一个免费的、开放的网络爬取数据存储库,包含 18 年内 2500 亿个网页。然而,原始网络数据很嘈杂 —— 包含垃圾邮件、重复内容和低质量信息 —— 因此预处理是必不可少的。如果你对预处理后的数据集感兴趣,FineWeb 提供了 Common Crawl 的精选版本,并在 Hugging Face 上提供。
一旦文本语料库清理完毕,就准备好进行分词处理。
第二步:分词
在神经网络能够处理文本之前,文本必须转换为数值形式。这通过分词实现,将单词、子单词或字符映射到唯一的数值标记。
可以将标记视为构建块 —— 所有语言模型的基本构建块。在 GPT-4 中,有 100,277 个可能的标记。一个流行的分词器 Tiktokenizer 允许你尝试分词,并查看文本如何被分解成标记。试着输入一个句子,你会看到每个单词或子单词都被分配了一系列数值 ID。
第三步:神经网络训练
一旦文本被分词,神经网络就会根据上下文学习预测下一个标记。如上所示,模型接收一个输入标记序列(例如 “we are cook ing”),并通过一个巨大的数学表达式(代表模型的架构)进行处理,以预测下一个标记。
神经网络由两个关键部分组成:
- 参数(权重): 从训练中学习到的数值。
- 架构(数学表达式): 定义输入标记如何被处理以产生输出的结构。
最初,模型的预测是随机的,但随着训练的进行,它学会了为可能的下一个标记分配概率。当正确的标记(例如 “food”)被识别时,模型通过反向传播调整其数十亿个参数(权重)—— 一种优化过程,通过增加正确预测的概率并减少错误预测的可能性来强化正确预测。
这个过程在庞大的数据集上重复数十亿次。
基础模型 —— 预训练的输出
在这一阶段,基础模型已经学会了:
- 单词、短语和句子之间的关系。
- 训练数据中的统计模式。
然而,基础模型尚未针对现实世界任务进行优化。你可以将它们视为高级自动补全系统 —— 它们根据概率预测下一个标记,但遵循指令的能力有限。
基础模型有时会逐字背诵训练数据,并且可以通过上下文学习用于某些应用,即通过在提示中提供示例来引导其响应。然而,要使模型真正有用和可靠,需要进一步训练。
2. 后训练 —— 使模型变得有用
基础模型是原始且未经提炼的。为了使它们有帮助、可靠和安全,它们需要通过后训练,在更小、更专业的数据集上进行微调。
由于模型是神经网络,它不能像传统软件那样被显式编程。相反,我们通过在结构化标记数据集上训练它来隐式地 “编程”,这些数据集代表了期望的交互示例。
后训练的工作原理
创建专业数据集,包含模型在不同情况下应该如何响应的结构化示例。
后训练的一些类型包括:
- 指令 / 对话微调: 目标是教会模型遵循指令,以任务为导向,进行多轮对话,遵循安全指南并拒绝恶意请求等。例如,InstructGPT(2022 年):OpenAI 聘请了大约 40 名承包商来创建这些标记数据集。这些人工作为注释员,根据安全指南编写提示并提供理想的响应。如今,许多数据集是自动生成的,由人类审查和编辑以确保质量。
- 特定领域微调: 目标是使模型适应医学、法律和编程等专业领域。
后训练还引入了特殊标记 —— 在预训练期间未使用的符号 —— 以帮助模型理解交互的结构。这些标记指示用户的输入开始和结束的位置,以及 AI 响应的开始位置,确保模型正确区分提示和回复。
推理 —— 模型如何生成新文本
推理可以在任何阶段进行,甚至可以在预训练中途进行,以评估模型的学习效果。
当给定一个输入标记序列时,模型根据在训练期间学习到的模式,为所有可能的下一个标记分配概率。它不是总是选择最可能的标记,而是从这个概率分布中采样 —— 类似于掷一个有偏的硬币,概率更高的标记更有可能被选中。
这个过程迭代重复,每个新生成的标记都成为下一个预测的输入的一部分。标记选择是随机的,相同的输入可以产生不同的输出。随着时间的推移,模型生成的文本不在其训练数据中,但遵循相同的统计模式。
幻觉 —— 当 LLMs 生成错误信息时
为什么会出现幻觉?
幻觉发生是因为 LLMs 并不 “知道” 事实 —— 它们只是根据训练数据预测最有可能的单词序列。早期模型在幻觉问题上挣扎得很厉害。
例如,在下面的例子中,如果训练数据包含许多带有明确答案的 “Who is…” 问题,模型会学习到这种查询应该总是有自信的回答,即使它缺乏必要的知识。
当被问及一个未知的人时,模型不会默认回答 “我不知道”,因为这种模式在训练期间没有得到强化。相反,它会生成它最好的猜测,通常会导致捏造的信息。
如何减少幻觉?
- 方法 1:说 “我不知道”
提高事实准确性需要明确训练模型识别它不知道的内容 —— 这比看起来更复杂。这通过自我审视实现,这一过程有助于定义模型的知识边界。
自我审视可以使用另一个 AI 模型自动化,该模型生成问题来探测知识空白。如果它产生了错误答案,就会添加新的训练示例,其中正确回答是:“我不确定。你能提供更多上下文吗?”
如果模型在训练中多次看到一个问题,它会为正确答案分配高概率。如果模型以前没有遇到过这个问题,它会将概率更均匀地分布在多个可能的标记上,使输出更加随机。没有一个标记显得最有可能。
微调明确训练模型使用预定义的响应处理低置信度输出。例如,当我问 ChatGPT-4o “Who is asdja rkjgklfj?” 时,它正确回答:“我不确定这是谁。你能提供更多上下文吗?”
- 方法 2:进行网络搜索
一种更高级的方法是通过让模型访问外部搜索工具,扩展其知识超出训练数据。大致来说,当模型检测到不确定性时,它可以触发网络搜索。搜索结果随后被插入到模型的上下文窗口中 —— 本质上允许这些新数据成为其工作记忆的一部分。模型在生成响应时参考这些新信息。
模糊记忆与工作记忆
一般来说,LLMs 有两种知识获取方式:
- 模糊记忆: 从预训练中存储在模型参数中的知识。这基于它从大量互联网数据中学习到的模式,但不精确也不可搜索。
- 工作记忆: 在模型的上下文窗口中可用的信息,在推理期间直接可访问。提示中提供的任何文本都作为短期记忆,允许模型在生成响应时回忆细节。
在上下文窗口中添加相关事实可以显著提高响应质量。
自我认知
当被问及 “你是谁?” 或 “谁创造了你?” 等问题时,除非明确编程以准确回答,否则 LLM 会根据其训练数据生成统计上最有可能的猜测。LLMs 没有真正的自我意识;它们的回答取决于训练期间看到的模式。
为模型提供一致身份的一种方法是使用系统提示,该提示设定了关于它如何描述自己、其能力和限制的预定义指令。
总结
大语言模型从预训练到后训练,再到推理和应对幻觉现象,经历了一系列复杂的过程。预训练让模型掌握了语言的基础规律,后训练使其能够适应特定任务和领域,推理过程则赋予了模型生成新文本的能力。
然而,幻觉现象的存在也提醒我们,大语言模型并非完美无缺,它们的输出需要谨慎对待。尽管如此,大语言模型仍然是人工智能领域的一项重要成果,它们在许多领域都展现出了巨大的潜力和价值。随着技术的不断进步,我们有理由相信,大语言模型将变得更加智能、可靠和实用。
转载请注明:好奇网 » 3000字看懂LLMs 的工作原理:从预训练到推理