单词到数字
边境处的翻译器
语言模型从不直接看到文本。它看到的是整数。分词器位于边境关口:人类的单词流入,整数 ID 流出。生成过程则反转流动:整数 ID 返回,分词器渲染文本。
三个任务:
1. 分段。 将字符串切分成片段(tokens)。
2. 映射。 为每个片段分配一个来自固定词汇表的唯一整数 ID。
3. 反向。 在生成时从 ID 重构文本。
为什么用片段,而不是整词
整词词汇表会爆炸式增长。仅英语就有数十万种形式。更糟的是,用整词训练的模型无法处理拼写错误、新名字或外语短语:任何未见过的词都会映射到单一的 <UNK> 槽位。
子词分词解决了这个问题。一个常见片段的词汇表可以组合成任何单词,包括训练中从未见过的单词。两种策略占主导地位:BPE(字节对编码)和分布式分割。ANDREA 选择了第二种策略。
为什么使用子词
单词在哪里断开
Zellig Harris, 1955
一位名叫Zellig Harris的语言学家注意到了一些事情。在一个单词内部,给定字母序列后跟随的不同字母的数量变化很大。在un之后,你可以找到数十种字母:a, b, c, d, e ... 而在unbel之后,只有极少数字母跟随:i(然后是ievable)。
后继多样性的激增标志着可能的语素边界。在un(一个前缀)之后,多样性急剧增加,因为许多词根可以跟随。在像believ这样的词根内部,多样性保持较低,因为字母之间相互预测。在语素之间的过渡处,多样性再次激增。
从多样性激增到片段
在训练语料库上运行该检测器。每个词都会贡献统计证据。一个分词器收集在词素形状边界处反复出现的高频片段:un、re、pre、believ、know、ing、able、ly、tion、ed。
无标签。 无语言学家手动标注词素。字母共现的统计量完成这项工作。
Harris 与 BPE
| 属性 | Harris | BPE |
|---|---|---|
| 边界标准 | 后继多样性峰值 | 配对频率 |
| 语言形态 | 形态素对齐(前缀、词根、后缀) | 频繁字节对 |
示例:unbelievably | un + believ + abl + y | unb + eli + eva + bly |
| 泛化 | 强(词根 + 词缀重组) | 较弱(配对无需对齐) |
两者都会产生子词片段。Harris 分段倾向于与语言学家称为形态素的对齐:最小的有意义单位。BPE 片段优化压缩:最频繁的字节对被合并,而不考虑含义。
分段一个单词
三个词汇层
ANDREA词汇的结构
Harris分词产生一个具有三个层的词汇:
板块 1:256 个基础字节。 每个可能的 UTF-8 字节(0x00 到 0xFF)都有自己的令牌 ID。安全网:语料库中包含的任何字符,分词器都可以表示为字节序列。<UNK> 永不触发。
板块 2:N 个词素片段。 通过分布分析发现的常见片段。ANDREA-12M 训练时 N = 4096;ANDREA-120M 训练时 N = 8192。每个片段将重复出现的多字节字符串压缩为单个令牌。
板块 3:1 个 BOS 令牌。 一个特殊标记,放置在每个训练序列的开头。让模型学习“此位置无过去”。ANDREA-12M 和 ANDREA-120M 都精确保留一个 ID 给 BOS。
词汇表大小
| 模型 | 基础字节 | 词素段 (N) | BOS | 词汇表大小 |
|---|---|---|---|---|
| ANDREA-12M | 256 | 4096 | 1 | 4353 |
| ANDREA-120M | 256 | 8192 | 1 | 8449 |
256 + N + 1 = 词汇表大小。简单。可重现。开放。
为什么字节块很重要
字节后备保证了覆盖率。如果模型遇到日本語且分词器没有日语形态素,单个UTF-8字节会承载序列通过。模型在字节上训练;稀有脚本的质量取决于容量和曝光度,但没有输入会崩溃分词器。
计算词汇表
序列开始
为什么序列需要一个标记
仅解码器 transformer 从先前的上下文预测下一个 token。位置 0 没有先前的上下文。没有标记的情况下,位置 0 处于逻辑空洞:模型无从关注。
BOS 解决了空洞。 一个特殊的单一 token(ID = 256 + N)在训练期间位于每个序列的开头。模型学习:
- “当你看到 BOS 时,预测自然文本的可能第一个 token。”
- “当你看到 BOS 后跟一个词时,那个词是序列的开始,而不是延续。”
一个标记,多重用途
BOS 出现在:
- 训练时: 预置到输入模型的每个文本块前。
- 推理时: 预置到提示前,让模型看到熟悉的“新开始”信号。
- 边界标记: 在某些流水线中,作为串联文档的分隔符。
ANDREA 为 BOS 保留了精确的一个 ID。没有 EOS,没有 PAD,除了词汇表所需之外没有特殊标记。简单性始终是 permacomputer 的核心价值:每个标记都必须证明其位置的价值。
活动 3 继续
活动 3 (grow_a_language_model_tokenizer_diet) 涵盖了当 N 过大或 tokenizer 语料库与训练语料库偏离时会发生什么。ANDREA-12M 浪费了 63.6% 的词汇表;ANDREA-120M 修复了它。请继续阅读。