三元后缀分词方案在数值推理中的应用
摘要
本文提出三元后缀分词(TST)方案,一种确定性分词方案,将数字划分为三位组,并附加显式的数量级标记,以改进大语言模型的数值推理能力。该方法通过在标记级别提供透明的数量级关系,解决了标准分词器中数字分割不一致的问题,并提供两种可扩展词汇量的实现变体。
arXiv:2604.11582v2 公告类型:替换
摘要:标准的子词分词方法对数字的分割不一致,导致大语言模型(LLMs)丧失位置和小数结构信息——这是算术和科学推理错误的主要驱动因素。我们引入三元后缀分词(TST),这是一种确定性方案,将数字划分为三位组,并为每个三位组标注显式的数量级标记。关键是,该方案为整数部分(千位、百万位、十亿位等)定义了后缀与数量级之间的固定一一映射,以及为小数深度(十分位、千分位、百万分位等)定义了并行的重复标记系统。与依赖位置推断的方法不同,本方法提供了一致的梯度信号,应确保稳定的收敛。提出了两种实现变体:(1)基于词汇表的方法,向现有词汇表添加至多 10,000 个固定标记,覆盖 33 个数量级($10^{-15}$ 到 $10^{18}$);(2)后缀标记方法,使用少量特殊标记动态表示数量级。两种变体都保留精确数字,同时在标记级别透明展示数量级关系。虽然我们重点关注 3 位分组(三元),但该框架本质上可扩展到任何分组大小,以实现精确的词汇优化。此外,它允许线性词汇扩展以适应任意精度和范围。TST 与架构无关,可作为预处理步骤集成。实验验证将在未来工作中进行。
查看缓存全文
缓存时间: 2026/04/20 08:32
# 数值推理的三元后缀分词方案 来源:https://arxiv.org/html/2604.11582
Olga Chetverina,莫斯科物理技术学院讲师,俄罗斯。电子邮件:tst\.chetverina@gmail\.com。ORCID:0000\-0003\-4924\-8130 (https://orcid.org/)。之前存档于 Zenodo:DOI 10\.5281/zenodo\.18999577。本研究独立进行,不属于任何机构任务,未使用任何机构资源。
###### 摘要
标准的子词分词方法对数字的分割不一致,导致大型语言模型(LLM)丧失位置和小数结构信息——这是算术和科学推理中错误的主要驱动因素。我们引入三元后缀分词(TST),一种确定性方案,将数字分组为三位数三元组,并用显式的量级标记注释每个三元组。重要的是,该方案为整数部分(千、百万、十亿等)定义了固定的一一对应关系,以及为小数深度(十分位、千分位、百万分位等)定义了一套平行的复制标记系统。与依赖位置推断的方法不同,此方法提供一致的梯度信号,应确保稳定收敛。提出了两种实现变体:(1) 基于词表的方法,向现有词表最多添加 10,000 个固定令牌,覆盖 33 个数量级(10⁻¹⁵ 到 10¹⁸);(2) 使用一小组特殊令牌动态表示量级的后缀标记方法。两种变体都保留精确数字,同时在令牌级别使数量级关系透明化。虽然我们专注于 3 位分组(三元),但该框架本质上可扩展到任何分组大小,以进行精确的词表优化。此外,它允许线性词表扩展以容纳任意精度和范围。TST 与架构无关,可作为即插即用的预处理步骤集成。实验验证推迟到未来工作。
## 1 引言
大型语言模型(LLM)在复杂推理任务中取得了显著成就,但在基本数值理解上经常失败。著名的"9.11 > 9.9"失败案例说明了模型如何误判小数量级[3](https://arxiv.org/html/2604.11582#bib.bib3)。这个弱点主要源于分词:数字被分割成任意子词单位,丧失了位置和量级信息[4](https://arxiv.org/html/2604.11582#bib.bib4),[10](https://arxiv.org/html/2604.11582#bib.bib10)。标准分词器将"100400"分割为"100"和"400",但没有编码前者代表数万的信息。因此,模型必须从头学习量级关系——这是一项统计上低效的任务。
最近的工作探索了各种解决方案:专用数字令牌[6](https://arxiv.org/html/2604.11582#bib.bib6)、连续数字编码(如 xVal)[11](https://arxiv.org/html/2604.11582#bib.bib11)、从右到左的分词和逗号分隔[5](https://arxiv.org/html/2604.11582#bib.bib5),以及全面的基准(如 NumericBench[1](https://arxiv.org/html/2604.11582#bib.bib1) 和 Number Cookbook[3](https://arxiv.org/html/2604.11582#bib.bib3))。比较十进制(位级)与千进制(三元级)分词的研究表明,位级方法更具数据效率,但在量级理解上存在困难[5](https://arxiv.org/html/2604.11582#bib.bib5),[4](https://arxiv.org/html/2604.11582#bib.bib4)。本文介绍了一种简单而有效的分词方案,结合三元分组(千进制)和整数和小数部分的显式量级注释,为数值推理提供更强的归纳偏差。
## 2 相关工作
位级分词(十进制)将每一位数字作为独立令牌。虽然数据高效,但缺乏显式量级提示,强制模型单独从位置模式推断顺序[5](https://arxiv.org/html/2604.11582#bib.bib5)。多位分词由 GPT-3.5 和 GPT-4 使用,减少了序列长度但引入了可能不一致地分割数字的任意边界[4](https://arxiv.org/html/2604.11582#bib.bib4)。xVal 使用单个令牌将数字编码为连续嵌入,展示了强大的插值性能[11](https://arxiv.org/html/2604.11582#bib.bib11)。然而,它丢弃精确数字,用平滑性换取精度——这种权衡不适合需要精确算术的任务。
从右到左分词,每三位数字从右侧添加逗号,已被证明相比未格式化的数字,整数算术性能提升最多 20%[4](https://arxiv.org/html/2604.11582#bib.bib4),[5](https://arxiv.org/html/2604.11582#bib.bib5)。这表明即使简单的格式转换也能帮助模型推理数字。然而,逗号仅分组数字,不指示每个分组的量级。模型仍必须从序列中的位置推断"123"表示 123、123,000 还是 123,000,000。
最近的工作也探索了修改损失函数而非分词。数字令牌损失(NTL)[9](https://arxiv.org/html/2604.11582#bib.bib9) 用类似回归的目标替换标准交叉熵损失以处理数字令牌,在训练期间将数字视为连续值。这种方法保留精确数字,同时提供平滑的梯度信号。重要的是,NTL 在训练级别运行,正交于分词方案——它可与任何输入表示结合。
多个已建立的基准可在未来研究中评估数值推理:NumericBench 评估六项基本数值能力[1](https://arxiv.org/html/2604.11582#bib.bib1),Number Cookbook 涵盖 17 种不同的数值任务[3](https://arxiv.org/html/2604.11582#bib.bib3),探测枚举能力的研究表明,即使是最先进的模型也缺乏系统枚举[2](https://arxiv.org/html/2604.11582#bib.bib2)。
## 3 提议的方法:三元后缀分词(TST)
### 3.1 核心原则
1. 将数字分组为三元组(千、百万等)。
2. 用显式量级标记注释每个三元组。
3. 保留精确数字。
### 3.2 整数部分
从右到左分组数字:
100400 → 100k 400
1234567 → 1m 234k 567
100200400 → 100m 200k 400
123456789012345 → 123t 456b 789m 012k 345
**表 1:整数后缀**
#### 3.2.1 为什么用后缀而不仅仅用逗号
与仅分组数字的从右到左逗号不同,后缀 k、m、b、t、q 明确指示数量级。这使模型能直接访问每个数字组的规模,而不是强制其从位置推断量级。
### 3.3 小数部分
小数数字从左到右分组,带有重复的"p"标记。为确保规范表示并保持令牌和数值之间的一一对应关系,所有小数三元组都用尾零右填充至固定的三位长度。此规范化确保数值等价的表示(如 0.1 和 0.100)产生相同的令牌序列。
1.12345678 → 1. 123p 456pp 780ppp
0.0045 → 0. 004p 500pp
π → 3. 141p 592pp 653ppp 589pppp 793ppppp
最大实际深度通常为 5 个"p"(15 位小数)。不进行填充,词表会不必要地扩展以包括次三元变体,模型将被迫学习 0.1、0.10 和 0.100 表示相同值。填充确保每个令牌一致地表示形式为 n × 10⁻³ᵏ 的值,其中 n ∈ [0,999],每个三元深度仅需 1,000 个令牌。此规范化优先考虑数值一致性和计算精度而非保留原始表面形式。
虽然将数值等价值映射到单个序列可改进收敛,但某些任务要求尾零具有语义意义。对此权衡和为精度保留应用提出的小扩展的详细讨论见第 6.2 节。
### 3.4 词表考虑
有两种选项可能:
- **选项 A(分离令牌)**:将数字组和后缀保持为分离令牌。词表仅添加 10 个新令牌(k、m、b、t、q、p、pp、ppp、pppp、ppppp)。这最小化地扩展词表;模型可学会结合数字与后缀。
- **选项 B(复合令牌)**:创建"100k"、"234m"等复合令牌。带有从 000–999 的三元和 5 个整数后缀:1000 × 5 = 5,000 个令牌。对于带有最多 5 个"p"深度和从 000–999 的三元的小数:再添加 5,000 个令牌。总计 10,000 个新令牌——对现代词表而言可管理。
选项 B 产生更短的输入序列(较低*令牌计数*),并向模型呈现现成的量级数字单位,消除任何关于哪个后缀属于哪个数字组的歧义。选项 A 的较小词表很有吸引力,但序列长度和词表大小之间的权衡仍是一个经验问题。虽然我们专注于 N=3(三元)因其与人类可读性的对齐和在词表大小与序列长度之间的有效平衡,但该框架本质上针对任何分组大小 N 设计,允许精确优化模型的词表足迹。
值得注意的是,选项 B 产生与简单三位分组完全相同数量的输入令牌。即使在 N=1 的极端情况下,输入上下文长度也不大于标准逐位表示,因为每一位融合到其量级标记中,形成单个原子令牌。选项 A 更"令牌贪婪",因为它发出分离标记,但对于相对较大的分组大小(N ≥ 3)可能仍具有实用性,其中相对开销变得可忽略。
TST 方案完整确定性步骤的正式化(说明如选项 B 所述量级感知复合令牌的生成)见算法 1。对于选项 A,算法保持相同,除第 4 步,其中数字组和后缀作为两个分离令牌而非单个复合单位附加。
**算法 1:广义后缀分词(GST)映射**
输入:原始数值字符串 S,内部分组大小 N 为模型词表优化。
输出:量级感知令牌序列 T
// 步骤 1:规范化和清理
Prefix ← ExtractPrefix(S)
S' ← NormalizeToStandardDigits(S)
I, F ← SplitIntoIntegerAndFractionalParts(S')
// 步骤 2:整数处理
ℐ ← DivideIntoGroupsOfSizeFromRightToLeft(I, N)
I' ← PadWithZerosFromLeftToMultipleOf(ℐ, N)
// 步骤 3:规范小数处理
ℱ ← DivideIntoGroupsOfSizeFromLeftToRight(F, N)
F' ← PadWithZerosFromRightToMultipleOf(ℱ, N)
// 步骤 4:带后缀的令牌生成
T ← [ ]
if Prefix is not empty then
T.append(Prefix)
endif
// 处理整数部分(描绘选项 B)
for each group Gₖ in ℐ at magnitude order k do
suffix ← GetMagnitudeSuffix(k)
T.append(Gₖ + suffix)
endfor
T.append(".")
// 处理小数部分
for each group Gₚ in ℱ at decimal depth p do
suffix ← GetPrecisionSuffix(p)
T.append(Gₚ + suffix)
endfor
return T
## 4 注释位置:前缀与后缀
相关研究 NumeroLogic[8](https://arxiv.org/html/2604.11582#bib.bib8) 添加了表示数字总位数的前缀(如数字 42 为 2 4 2)。在短数字算术(最多三位数字的加法)上,此方法提高了准确性,证明显式结构注释很有帮助。然而,NumeroLogic 为每个数字提供单个前缀,不注释单个三元组。其在较长数字或小数精度任务上的有效性仍是开放问题。
相比之下,TST 通过用其量级注释每个三元组,设计为跨 33 个数量级(10⁻¹⁵ 到 10¹⁸)扩展。考虑到前缀长度注释在短数字上的成功,人们可能期望从 TST 更详细的逐三元注释在完整数值范围内获得相似或更强的效益。
除了单个长度前缀和逐三元后缀选择之外,还存在在每个三元内放置标记位置的问题:数字前(前缀)或后(后缀)。例如,数字 123,456 可表示为:
- **后缀格式**:123k 456
- **前缀格式**:k123 456
使用复合令牌时(选项 B:123k 或 k123 作为单个令牌),前缀和后缀之间的区别在令牌级别消失——两者都成为原子词表单位,嵌入层无论内部顺序如何都相同处理。然而,当数字逐位分词时,后缀位置提供多个优势:
- **确定性边界**:后缀标记三元组的结束。对于 1 2 3k 4,模型知道"1 2 3"在看到进一步数字前形成完整千位分组。带前缀(k 1 2 3 4),模型无法知道分组在何处结束。
- **与人类阅读对齐**:后缀记号法(如"123k")与数字自然书写方式(123,000)和表达方式("一百二十三千")相匹配。
- **隐含长度信息**:后缀如 q(四倍数)告诉模型恰好有 15 位更多数字(5 个三元组)跟随,为整数部分总长度提供强先验。
前缀位置可能略早提供量级信息,但代价是边界歧义略增。由于这些原因,当使用位级分词时,我们对 TST 采用**后缀**位置。在复合令牌变体(选项 B)中,选择无关紧要。后缀与前缀问题在某些情况下仍是经验问题,但确定性边界属性使后缀成为自然而稳健的默认值。
## 5 统计分析
### 5.1 比较框架
不同方法的比较见表 2。
**表 2:分词方案比较:归纳偏差**相似文章
Compute Optimal Tokenization (2分钟阅读)
本文通过训练近1300个模型,系统推导了压缩感知的神经缩放定律,证明了广泛使用的每参数20个词元的启发式方法是由特定分词器造成的。作者提出了基于字节的分词器无关缩放定律,为跨多样语言和模态的计算高效训练提供了新框架。
答案词元如何读取推理轨迹?思维大模型在定量推理中的自读模式
研究发现,思维大模型中的答案词元在定量推理时遵循结构化自读模式——前向漂移+聚焦关键锚点,并据此提出免训练 SRQ 引导方法,无需微调即可提升准确率。
使用Token叠加的高效预训练
Token叠加训练(TST)通过将连续token组合成包并在叠加阶段使用多热交叉熵目标,在不改变架构的情况下实现预训练时间最多减少2.5倍,从而提高LLM预训练效率。
随机分词法提高模型鲁棒性
本论文证明了使用随机分词而非确定性标准分词来训练大型语言模型,可以显著提升模型对对抗攻击和随机扰动的鲁棒性。这种改进在预训练、微调和上下文学习阶段都有表现,且不会增加推理成本。
TabularMath:用大语言模型理解表格上的数学推理
TabularMath 引入了一个基准和 AutoT2T 框架来评估 LLM 对表格数据的数学推理能力,揭示表格复杂性、数据质量和模态对模型性能的重大影响。该研究通过系统地评估模型对真实场景中不完整或不一致表格信息的鲁棒性,填补了 LLM 评估中的空白。