ChatGPT 可以回答问题、编写程序、总结文档、翻译语言、分析图片,还可以借助不同工具完成比较复杂的任务。
但在聊天窗口背后,究竟发生了什么?
ChatGPT 的核心是一类被称为“大语言模型”的人工智能模型,英文是 Large Language Model,通常简称为 LLM。
大语言模型并不会像人类一样思考,也不是简单地从一个巨大的答案数据库中寻找现成内容。
它会处理用户输入的文字,识别其中的模式和上下文,然后一次生成一个很小的文字单位,逐步组成完整回答。
下面,我们从最基本的概念开始,看看大语言模型和 ChatGPT 到底是如何工作的。
一、LLM 是什么意思?
LLM 是 Large Language Model 的缩写,中文通常翻译为“大语言模型”。
这个名称可以分成三个部分。
Large:大
这里的“大”,主要是指模型包含数量极其庞大的可调节数值,也就是“参数”。
训练这些参数需要大量数据、计算资源和存储空间。
Language:语言
它的主要任务是处理和生成人类语言。
这里的语言不仅包括日常对话,还包括:
- 技术文章
- 程序代码
- 数学表达
- 文档格式
- 不同语言之间的翻译
Model:模型
模型是一个经过训练的数学系统。
它通过训练数据学习文字、短语、事实、代码、写作风格和不同概念之间的关系。
正因为学习了这些关系,大语言模型才能完成问答、写作、翻译、编程和内容分析等任务。
二、LLM 本质上是一个神经网络
大语言模型的核心,是一个规模非常庞大的人工神经网络。
神经网络由很多层数学运算组成。
每一层都会接收上一层传来的数据,对数据进行变换,再把结果传递给下一层。
传统程序通常依赖明确的规则,例如:
如果用户提出这个问题,就返回这个答案。
大语言模型并不是这样工作的。
它不会为每个问题预先保存一条固定规则,而是在训练过程中学习大量统计关系。
例如,模型可能发现下面这些词经常出现在相同的技术语境中:
- CPU
- 指令
- 寄存器
- 缓存
- 内存
模型并不只是记住这些单词,而是学习它们之间可能存在的关系。
这使它能够回答以前没有以完全相同形式见过的问题。
三、文字首先会被转换成 Token
大语言模型不能直接处理完整的自然语言句子。
在进入模型之前,文字需要先被切分成更小的单位,这些单位叫作 Token。
Token 可以是:
- 一个完整单词
- 单词的一部分
- 一个数字
- 一个标点符号
- 一小段字符
例如下面这句话:
The GPU renders an image.
可能会被切分成:
The|GPU|renders|an|image|.
这里的每一部分都可以成为一个 Token。
英文中的一个单词可能对应一个 Token,也可能被拆分成多个 Token。
中文的一个汉字、词语或标点,也可能分别成为不同的 Token。
因此,Token 并不完全等于“单词”。
Token 是大语言模型读取和生成文字时使用的基本单位。
四、Token 会被转换成数字
计算机不能直接理解“CPU”“处理器”或“香蕉”这些词的含义。
因此,每一个 Token 都需要被转换成一组数字。
这组数字通常称为:
- 向量
- 词向量
- Embedding
- 嵌入表示
这些数字用来表示模型在训练中学到的关系。
例如,“CPU”和“处理器”的含义比较接近,它们对应的数值表示也可能比较接近。
而“CPU”和“香蕉”之间的含义差别较大,它们在向量空间中的距离通常也会更远。
模型还需要知道 Token 的排列顺序。
例如:
狗追赶猫。
和:
猫追赶狗。
这两个句子包含几乎相同的词,但因为顺序不同,意思也完全不同。
因此,模型不仅需要表示 Token 本身,还需要表示每个 Token 在句子中的位置。
五、Transformer 架构
大多数现代大语言模型都建立在一种叫作 Transformer 的神经网络架构之上。
Transformer 在2017年的论文《Attention Is All You Need》中被正式提出。
早期的一些语言模型主要按照顺序逐步处理文字。
Transformer 则大量使用注意力机制,可以同时处理和比较句子中的多个位置,因此更适合并行计算。
Transformer 通常由很多重复的处理模块组成。
每个模块主要包括两个部分:
- 注意力机制
- 前馈神经网络
文字信息会不断经过这些模块。
随着处理层数增加,模型会逐渐形成更加丰富的上下文表示。
例如,模型最开始可能只识别单词本身,后面的层则可能逐渐识别:
- 语法关系
- 主语和宾语
- 前后文联系
- 技术概念
- 整段文字的含义
六、什么是注意力机制?
注意力机制帮助模型判断:在处理当前 Token 时,前面哪些 Token 更重要。
例如:
服务器无法启动,因为它失去了电源。
为了理解“它”指的是什么,模型需要判断“它”很可能指前面的“服务器”。
注意力机制会比较句子中的不同 Token,并为它们分配不同的重要程度。
模型并不是只查看距离最近的词。
它可以在更长的句子甚至更长的文章中寻找相关信息。
现代 Transformer 通常使用 多头注意力机制。
所谓“多头”,就是让多组注意力计算同时分析同一段文字。
不同的注意力头可能分别关注:
- 语法结构
- 主语和代词的关系
- 时间关系
- 技术上下文
- 前后句之间的联系
通过这些并行的分析,模型可以建立更加完整的上下文理解。
七、什么是参数?
大语言模型内部包含大量可以调整的数值。
这些数值被称为:
- 参数
- 权重
- Weights
参数控制信息如何在神经网络中流动。
在训练刚开始时,这些参数通常没有什么实际意义,模型的预测可能接近随机。
随着训练不断进行,系统会反复调整这些参数。
如果模型的预测不够准确,训练算法就会计算误差,然后稍微修改模型中的参数。
经过大量重复训练后,模型预测文字的能力会逐渐提高。
因此,模型的知识并不是存放在一个简单的文件夹、文章库或者问答表中。
它分散在大量参数形成的数值关系里。
大语言模型并不是这样存储答案的:
问题一对应答案一。
问题二对应答案二。
问题三对应答案三。
训练主要是改变模型的参数,让参数能够表示训练数据中存在的各种模式和关系。
八、大语言模型是如何训练的?
大语言模型的第一个重要训练阶段通常叫作 预训练。
在预训练过程中,模型会接收一段由 Token 组成的文字,并尝试预测缺失的 Token 或下一个 Token。
例如:
操作系统负责管理计算机的……
后面可能出现:
- 硬件
- 内存
- 资源
- 设备
- 软件
模型会为每一个候选 Token 计算一个概率。
例如:
- 硬件:40%
- 资源:30%
- 内存:20%
- 软件:7%
- 其他:3%
训练系统知道原始文本中的正确答案。
如果模型给正确答案的概率太低,系统就会计算误差,并稍微调整模型参数。
然后再进行下一次预测。
这个过程会在海量训练数据上不断重复。
随着训练进行,模型会逐渐学会:
- 语法
- 句子结构
- 写作风格
- 程序代码模式
- 不同概念之间的关系
- 如何生成合理的后续内容
表面上看,训练目标似乎非常简单:
预测下一个 Token。
但想要准确预测下一个 Token,模型往往需要学习大量关于语言、知识、逻辑和上下文的模式。
九、模型如何学会听从指令?
只经过预训练的语言模型,可能很擅长续写文字,但不一定是一个好用的聊天助手。
例如,用户提出一个问题时,未经专门训练的模型可能只是继续补全问题,而不是认真回答问题。
因此,模型还需要学习如何听从指令。
一种常见方法叫作 监督微调。
人类会编写大量示例,告诉模型:
- 用户提出了什么要求
- 一个有帮助的助手应该怎样回答
- 哪些回答更加清楚
- 哪些回答不够准确
- 哪些回答存在风险
人类评估者还可以比较多个不同回答,并指出哪个回答更好。
一些模型训练方法还会使用:
- 人工示范
- 回答排序
- 奖励模型
- 基于人类反馈的强化学习
- 其他偏好优化方法
经过这些训练,模型会更加擅长:
- 回答问题
- 遵循格式
- 按要求改写内容
- 减少无关回答
- 生成更有帮助的结果
需要注意的是,当前商业模型的完整训练流程通常不会全部公开。
不同公司和不同模型使用的方法也可能不同。
十、发送一个 Prompt 后发生了什么?
当用户在 ChatGPT 中发送一条消息时,系统首先会准备模型需要的信息。
简化后的流程大致如下:
用户输入
↓
Token 化
↓
Token 向量
↓
Transformer 层
↓
候选 Token 概率
↓
选择下一个 Token
↓
重复
模型处理的不一定只有用户刚刚输入的这一句话。
根据具体功能和设置,上下文还可能包括:
- 当前对话中的早期消息
- 指导助手行为的系统指令
- 用户上传的文件
- 搜索或工具返回的信息
- 已启用的相关记忆
- 图片、代码或其他输入
模型把这些内容组合成上下文,然后计算下一个 Token 的概率。
它会选择一个 Token,把它加入回答,再重新计算下一个 Token。
例如,模型可能先生成:
然后继续生成:
CPU 是
再继续生成:
CPU 是计算机
接下来逐步形成完整句子。
虽然用户看到的结果像是一整段同时生成的文字,但实际上,回答通常是逐个 Token 生成的。
十一、为什么大语言模型会产生幻觉?
大语言模型的主要任务,是根据上下文生成概率较高的后续内容。
它不会自动把每一句话都拿到权威资料中进行验证。
因此,它有时会生成一种看起来非常流畅、非常自信,但内容实际上错误甚至完全虚构的回答。
这种现象通常被称为 幻觉。
大语言模型产生幻觉的原因可能包括:
- 训练数据不完整
- 用户的问题存在歧义
- 模型错误组合了几个相关概念
- 问题涉及训练之后的新信息
- 上下文提供的信息不足
- 模型生成了听起来合理但缺少证据的文字
例如,模型可能知道某个人、某家公司和某项技术都是真实存在的,却错误地把它们组合成一个并不存在的事件。
因此,在处理重要信息时,不能只看回答是否流畅。
还需要检查:
- 原始资料
- 官方文档
- 权威媒体
- 研究论文
- 真实数据
- 可靠数据库
让模型使用网页搜索、文件、数据库、计算器和专业工具,可以提高准确性。
但工具也不能保证每一个结论都绝对正确。
重要信息仍然需要核实。
十二、ChatGPT 不只是一个大语言模型
大语言模型是语言处理引擎。
ChatGPT 则是建立在一个或多个人工智能模型之上的完整产品。
可以把它们理解为:
一辆汽车不仅需要发动机,还需要方向盘、刹车、仪表、车身和控制系统。
根据任务和功能,它还可能把模型与下面这些组件组合起来:
- 系统指令
- 安全机制
- 对话历史
- 记忆
- 网页搜索
- 文件分析
- 图片理解
- 代码执行
- 外部工具
因此,用户看到的 ChatGPT 能力,是模型和产品系统共同工作的结果。
不过,当前版本 ChatGPT 的完整内部架构、模型选择方式和任务路由系统属于专有技术。
外界无法准确知道其中的每一个内部步骤。
但最基本的工作流程仍然可以理解:
把输入转换成 Token。
让 Token 通过神经网络层。
使用注意力机制分析上下文。
计算不同输出 Token 的概率。
逐个 Token 生成回答。
这些过程需要进行大量矩阵计算。
GPU 拥有大量并行计算单元和高带宽显存,能够高效完成大语言模型训练和推理所需的大规模矩阵运算。
结语
大语言模型不是一个普通数据库,也不是传统搜索引擎,更不是人类大脑。
它是一个经过海量数据训练的数学模型。
它通过参数、向量、Transformer 和注意力机制,学习文字与概念之间的复杂模式,然后根据上下文逐个 Token 生成内容。
理解下面这些基本概念,是进一步学习人工智能和大语言模型的基础:
- Token
- 向量和 Embedding
- 参数
- Transformer
- 注意力机制
- 预训练
- 微调
- 推理
- 幻觉
下一篇文章,我们将更加详细地介绍 Token,看看 Token 化如何影响大语言模型的上下文长度、运行速度、性能和使用成本。
