【科普】大模型中常说的 token 和 Tokenizer 是指什么?

在大语言模型(LLM)日益普及的今天,我们往往关注模型的参数、结构和预训练数据,但实际上,支撑这些模型顺利理解和生成语言的一个重要环节——Tokenizer,常常被人忽视。本文将带你了解大模型中 Tokenizer 的基本概念、常见技术以及它在模型性能和效率中的关键作用,同时力求既不流于表面,也不陷入晦涩难懂的技术细节。 token 和 Tokenizer 是什么? 简单来说,Tokenizer 就是将连续的文本拆分成模型能处理的基本单位——Token 的工具,而 “token” 是模型理解和生成文本的最小单位。对于计算机来说,处理原始文本是非常困难的,因此我们需要一个中间层,把文字转换为一系列的数字序列(即,一个个离散的 token),这些 token 既可以是单个字符、词语,也可以是子词(subword)。而这个转换过程正是由 Tokenizer 完成的。 在传统的自然语言处理中,我们可能直接按照单词或字符来分割文本;而在大模型中,常见的方法则是采用子词级别(subword-level)的分割方式。这种方式既能保证足够细致(能够捕捉到拼写变化、罕见词等信息),又不会使得词表过大,进而影响模型的效率和泛化能力。 在中文中,token 通常是单个汉字(或者在某些情况下是常见词汇)。 在英文中,token 通常是一个词或单词的一部分,平均而言大约 4 个字符或 0.75 个单词,但具体拆分方式依赖于采用的 tokenizer 算法。 Tokenizer 的主要方法 目前大模型常用的 Tokenizer 方法主要包括: Byte-Pair Encoding (BPE) BPE 是目前最流行的子词分词算法之一。其核心思想是:从最基本的字符开始,不断将在训练语料中频繁共现的字符或子串合并为一个新的 Token,直到达到预设的词表大小。这种方式能够灵活处理词汇稀缺问题,同时对英文这种单词之间有明显分隔的语言效果很好。 SentencePiece SentencePiece 算法则不依赖于空格分词,适合处理中文、日文等没有明显分词边界的语言。它同样采用子词或字节级别的编码方式,保证了不同语言之间的一致性。由于其不依赖传统分词规则,因此在多语种模型中得到了广泛应用。 其他创新方法 近年来,随着大模型规模的不断扩大和应用领域的拓展,关于如何更好地进行 Tokenization 的研究也不断涌现。例如,有学者提出结合认知科学“最省力原则”构建更高效的 Tokenizer;也有工作探讨利用自适应的“Learn Your Tokens”策略,根据输入自动学习最优的分词单元。尽管这些方法尚处于探索阶段,但都表明 Tokenizer 的设计对模型的最终性能具有不容忽视的影响。 Tokenizer 对大模型的影响 模型训练效率 在大模型的训练过程中,Tokenizer 决定了输入序列的长度和词表大小。分词粒度过细(例如仅按字符分割)虽然能覆盖所有细节,但会导致序列变得冗长,使得 Transformer 中自注意力机制的计算复杂度呈平方级增长,从而大大增加训练时间和资源消耗;而分词粒度过粗(直接按单词分割)又可能无法有效处理罕见词或新词。因此,子词分词方法(如 BPE 和 SentencePiece)正好在二者之间取得了平衡,不仅能减少序列长度,还能保持语义信息。 模型效果与泛化能力 一个精心设计的 Tokenizer 不仅有助于训练速度,还能提升模型在下游任务中的表现。良好的 Tokenizer 能够保证同一语义在不同上下文下尽量映射到相似的 Token 序列,从而使模型更容易捕捉到语言中的规律和细微差别。反之,不合理的分词方式可能会使模型“误解”文本信息,导致输出不连贯甚至产生幻觉。 多语言和特殊场景 对于多语言大模型来说,如何构造一个既能覆盖英文又能适应中文、日文等其他语言的 Tokenizer,是一个具有挑战性的问题。研究表明,多语种 Tokenizer 往往需要更大的词表来处理不同语言的字符和词汇,但词表过大又可能影响模型效率。因此,如何在覆盖率与高效性之间取得平衡,是 Tokenizer 设计的重要课题。...

February 19, 2025 · 2 min · fisherdaddy

【科普】人工智能中的“量化”,到底是什么?

在人工智能蓬勃发展的今天,深度学习模型已经在图像识别、自然语言处理和自动驾驶等领域取得了令人瞩目的成绩。然而,随着模型规模不断增大,如何在保证模型性能的同时降低计算资源和能耗,成为了研究者和工程师们面临的重要课题。量化(Quantization)技术正是在这一背景下应运而生,并在实际应用中发挥了巨大作用。本文将带你深入了解人工智能中的量化技术,探讨它的原理、优点以及所面临的挑战。 什么是量化? 量化,顾名思义,就是将连续的数值转换为有限的、离散的数值集合。在计算机系统中,数据通常以二进制形式存储和处理。传统的深度学习模型中,神经网络的参数(如权重和激活值)通常使用 32 位浮点数(float32)表示,这样既能保证计算精度,也便于训练和优化。但在模型推理(Inference)阶段,对于一些对精度要求没有那么高的场景,我们可以用更低位数的数据来表示这些参数,这就是量化技术的基本思想。 1. 高精度浮点数 数据类型 位宽 符号位 指数位 尾数位 存储占用 主要特点 FP64(双精度) 64 1 11 52 8 字节 超高精度,适用于科学计算,存储和计算成本高 FP32(单精度) 32 1 8 23 4 字节 计算精度和存储占用均衡,深度学习主流格式 FP16(半精度) 16 1 5 10 2 字节 存储占用更低,适用于加速推理和混合精度训练 bfloat16 16 1 8 7 2 字节 与 FP32 共享相同指数位,训练稳定性更强 2. 低精度整数 数据类型 位宽 符号位 数值范围 存储占用 主要应用 int8 8 ✅ -128 ~ 127 1 字节 量化神经网络,提高推理速度,降低功耗 uint8 8 ❌ 0 ~ 255 1 字节 适用于正数数据的量化,提高数值范围 int16 16 ✅ -32,768 ~ 32,767 2 字节 需要更大范围整数时使用,深度学习较少用 int4 4 ✅ -8 ~ 7 0....

February 6, 2025 · 2 min · fisherdaddy

【科普】人工智能中的“知识蒸馏”,到底是什么?

随着 DeepSeek R1 的爆火,知识蒸馏这一人工智能中常用的技术进入大众视野。本篇面向对人工智能和机器学习感兴趣的初学者的科普性文章,主题聚焦于当前深度学习领域中被广泛应用的「知识蒸馏(Knowledge Distillation)」技术,希望能帮助读者快速了解它的概念、作用以及应用场景。 什么是知识蒸馏? 在深度学习的发展过程中,模型的规模(参数量)越来越大,性能也随之提升。然而,大模型在带来卓越性能的同时,往往也伴随着体积庞大、推理速度较慢、对硬件资源要求较高等问题。为了让深度学习模型在更广泛的场景中应用,人们提出了多种模型压缩技术,而「知识蒸馏」就是其中的一种。 知识蒸馏最早由 Hinton 等人在 2015 年提出(Hinton 被誉为AI 教父,同时获得了图灵奖和诺贝尔奖,也是 OpenAI 前首席科学家兼创始人 Ilya Sutskeve 的导师),其核心思想是:将一个性能很强但体积庞大的「教师模型(Teacher Model)」所学习到的“知识”提炼出来,再教给一个较小且更轻量的「学生模型(Student Model)」,使得学生模型既能保持较好的性能,又显著降低模型大小和推理成本。 可以把知识蒸馏比作一位优秀教师将自己的知识精华传授给学生的过程。教师模型经过大量数据的训练,具备了很强的表达能力和预测精度,但它通常拥有成百上千亿的参数,体积庞大且计算消耗高。而学生模型则采用简化的网络结构,虽然参数较少,但通过“模仿”教师模型的行为,能够达到相近的效果,从而大幅降低计算资源的需求。 传统的教学方式是直接告诉学徒“标准答案”(硬标签,Hard Label),例如,告诉他“这张图片是猫”、“这句话是肯定的”。 但你作为经验丰富的老师,知道仅仅知道“答案”是不够的,更重要的是理解“为什么是这个答案”以及“其他可能的答案是什么”。 知识蒸馏就像一种更高级的教学方式。 它不仅仅传递“标准答案”,更重要的是传递老师模型在学习过程中获得的**“软标签 (Soft Label)”**,也就是模型对各种可能性的“思考”和“概率分布”。 举个例子: 假设我们训练了一个强大的图像识别模型(教师模型)来识别猫和狗。 当给它一张猫的图片时,教师模型可能不会简单地输出“猫”这个答案,而是会给出这样的概率分布: 猫: 95% 狗: 4% 其他动物: 1% 这个概率分布就包含了丰富的信息: 高概率的“猫”: 这是正确答案,表示模型高度确信这张图片是猫。 较低概率的“狗”: 表示模型也考虑过“狗”的可能性,但认为可能性较低。 极低概率的“其他动物”: 表示模型几乎排除了其他动物的可能性。 这些概率分布,就是“软标签”。 它比仅仅给出“猫”这个“硬标签”包含了更多的信息,体现了教师模型更深层次的理解和判断。 简单来说,知识蒸馏的过程包括: 训练教师模型: 首先,我们训练一个强大的、性能优越的模型作为教师模型。这个模型通常体积较大、参数较多,能够学习到丰富的知识。 生成软标签: 教师模型不仅给出最终的分类结果,还能输出一个反映各类别概率分布的“软标签”。这些软标签揭示了类别之间的细微关系,比传统的硬标签(例如 0 与 1)包含更多信息。 训练学生模型: 利用相同的数据,同时使用教师模型输出的软标签和原始的硬标签,训练出一个结构轻巧但性能优秀的学生模型。 模仿学习: 学生模型通过模仿教师模型的“思考方式”(软标签),学习到教师模型更深层次的知识和泛化能力。 知识蒸馏的原理 软标签与温度参数 在传统的分类任务中,模型输出经过 softmax 层后,会将每个类别的得分转化为概率。知识蒸馏中,通过引入一个温度参数 T 来调整 softmax 的输出分布。当温度 T 较高时,输出分布会变得更加平滑,弱化“自信”预测,使得学生模型能够捕捉到教师模型对各类别之间相似性的信息。这就好比老师在授课时适当放慢节奏,让学生更容易理解各知识点之间的联系。...

February 6, 2025 · 1 min · fisherdaddy