真智AI 真智AI 2025年03月16日 12:00 重庆

真智AI
先进AI网站服务,AI使用技巧分享
1399篇原创内容
公众号


还记得 2020 年 OpenAI 发布 GPT-3 时的轰动效应吗?虽然 GPT-3 不是该系列的首款模型,但它凭借出色的文本生成能力迅速走红。自那时起,大量大型语言模型(LLMs)如雨后春笋般涌现,彻底改变了人工智能领域。
但有一个关键问题:你是否想过 ChatGPT 或其他 LLMs 是如何解析语言的?
如果你还没有深究过这个问题,今天我们将揭开 LLMs 处理文本输入的神秘面纱,探讨它们在训练和推理过程中如何拆解语言的机制。这个过程,专业上称为「分词」(Tokenization)。
本篇文章的灵感来源于 前特斯拉 AI 高级总监 Andrej Karpathy 在 YouTube 上发布的视频 《深入探讨类 ChatGPT 的 LLMs》。如果你想深入了解 LLMs 的技术细节,他的系列视频非常值得推荐。
LLM 的内部架构:神经网络与变压器模型在深入探讨分词机制之前,我们需要先理解 LLMs 的内部架构。如果你已经熟悉神经网络和 LLMs 的基本概念,可以跳过本节内容,直接进入核心主题。
LLMs 由变压器(Transformer)神经网络构成可以将神经网络视为庞大的数学表达式。 输入数据:神经网络的输入是一系列令牌(tokens),这些令牌通常通过嵌入层(embedding layer) 处理,转换为数值表示。 令牌的概念:可以将令牌简单理解为输入数据的基本单位,例如单词、短语或字符。 数学计算:这些输入数据被送入神经网络,与网络内部的参数(即权重)一起计算,最终生成输出。
现代神经网络拥有数十亿个参数! 训练初期:这些参数最初是随机初始化的,因此神经网络的预测结果也是随机的。 训练过程:通过迭代更新参数,使神经网络的输出模式与训练数据中的统计特征保持一致。
变压器架构的诞生变压器(Transformer)架构最早由 Vaswani 等人在 2017 年发表的论文《Attention is All You Need》 提出。 最初应用:该架构最早被用于神经机器翻译(Neural Machine Translation)。 核心优势:由于其强大的序列处理能力,变压器架构成为了 LLMs 的奠基石。
如果你想更直观地了解变压器神经网络的结构,可以访问 bbycroft.net/llm 进行交互式 3D 可视化探索。
Nano-GPT 变压器架构示例以 Nano-GPT 为例,它拥有大约 85,584 个参数。 输入:令牌序列从网络顶部输入。 处理:信息经过多层网络流动,经过注意力机制(attention mechanism) 和 前馈网络(feed-forward networks) 进行转换。 输出:最终生成下一个令牌的预测结果。
分词(Tokenization):LLM 解析文本的第一步训练一个先进的 LLM(如 ChatGPT 或 Claude)通常需要多个顺序排列的阶段。在我的上一篇关于 幻觉(Hallucinations) 的文章中,我简要介绍了 LLM 的训练流程。如果你对训练过程和幻觉现象感兴趣,可以参考该文章。
预训练(Pretraining)阶段数据需求:预训练阶段需要大规模、高质量、网络级别的数据集,通常达到TB 级别。 数据来源:主流 LLM 提供商的数据集通常不公开,因此我们可以参考 Hugging Face 提供的 FineWeb 开源数据集(采用 Open Data Commons Attribution License 许可)。
FineWeb 数据集的样本示例如下:
步骤 1:下载 FineWeb 数据集的一部分,选择前 100 个示例,并将它们合并为一个文本文件。 文本样本:这些数据是原始的互联网文本,包含各种模式。
从文本到令牌:如何将文本转换为神经网络可处理的格式?在将文本输入到神经网络之前,我们需要决定如何表示它们。 神经网络的需求:神经网络期望输入的是一维符号序列,而不是纯文本。 有限符号集:为了满足神经网络的需求,我们必须确定符号的集合,并将文本转换成符号序列。
文本的底层表示文本本质上是一个一维字节序列,可以使用 UTF-8 编码将文本转换为底层的二进制比特序列。 示例:如果查看下图,你会发现原始文本中第一个字母 "A" 的 UTF-8 编码占据了 8 位二进制数。
问题:二进制序列太长,如何优化? 直接使用二进制(0 和 1)作为符号集太低效,我们希望使用更少的符号来表示文本。 优化策略:将每 8 个连续比特组合为 1 个字节,这样符号集的大小变为 256(0 到 255),同时序列长度减少 8 倍。
Byte-Pair Encoding(BPE):进一步优化分词如果我们希望进一步压缩序列长度,可以使用 Byte-Pair Encoding(BPE)算法。 BPE 起源:最初用于文本压缩,现在广泛应用于变压器模型的分词任务。 GPT 系列:OpenAI 的 GPT 模型使用了 标准 BPE 和定制版本的 BPE 分词算法。
BPE 工作原理步骤 1:识别数据集中最常见的连续字节或符号对。 步骤 2:用新符号替换这些高频字节对,并赋予它们唯一的标识符。 步骤 3:重复该过程,逐步缩短序列长度,同时增加词汇表大小。
示例 在字节级文本序列中,我们发现 101 后面接 114 出现频率很高。 我们可以用一个新符号替换 101 114,并将这种替换反复应用。 通过多次迭代,GPT-4 发展出了 大约 100,000 个令牌的词汇表。
探索分词:Tiktokenizer 工具解析 GPT-4 的分词方式Tiktokenizer 是一个交互式 Web 界面,可以输入文本,并查看其在不同模型下的分词结果。
示例 输入文本的前四句话,选择 GPT-4 基础模型编码器 cl100k_base 进行分词。 彩色文本 显示了文本块如何对应于不同的符号。
总结:分词对 LLM 训练和推理的重要性分词是 LLMs 处理文本的重要步骤,它将原始文本转换为结构化格式,以便神经网络处理。 分词的关键目标 是在序列长度和词汇表大小之间取得平衡,优化计算效率。 现代 LLMs(如 GPT-4)使用 BPE 分词技术,能够高效解析文本并生成连贯的响应。
理解分词机制,有助于深入掌握 LLMs 的训练和推理过程,并优化模型性能!
