Functionalizer 把大小写、变音符号与重复字符拆成可逆操作码,在语料穷尽条件下把词表需求最多压缩 19.7%,并让 98M 参数 GPT-2 的 Python 语法通过率从 7.70% 升到 9.12%
核心概要
该工作提出 Functionalizer——一个无损的预分词框架,把大小写、变音符号和字符重复等正字法变化分解为 Unicode 私用区中的操作码/操作数前缀流,在自然语言与代码语料上实现完整覆盖的同时把所需词表槽位最多减少 19.7%,并在 98M 参数 GPT-2 上把 Python 语法有效率从 7.70% 提升到 9.12%、把 FineWeb-Edu 散文的重复 n-gram 从 66.0% 降到 55.8%。
深度剖析
Functionalizer 把词形变化从词根中剥离:规范基元(操作数)加上参数化变换算子(操作码),操作码编码在 Unicode 私用区,覆盖大小写(CAPITALIZE)、13 个专用变音符号操作码以及字符重复(REPEAT、MULTIREPEAT),且完全可逆。 与把 hello、Hello、HELLO、Héllo 当作互不相关词表项(造成嵌入空间碎片化)或通过有损归一化丢弃这些差异的做法不同,也与 Factorizer 这类学习式、非双射的子词编码不同,该框架是确定性的、基于规则的、完全双射的指令集式方案,不依赖外部词典或频率阈值。 论文给出完整的操作码表(CAPITALIZE U+E100、13 个变音操作码 U+E101–U+E10D、REPEAT U+E200、MULTIREPEAT U+E201)以及附录 B 的编码示例,例如 Hello 编码为 CAPITALIZE(0)+hello、Héllo 编码为 ACUTE(1) CAPITALIZE(0)+hello、四个空格编码为 REPEAT(0,4)+空格,并说明解码按逆序恢复原文。
在无约束合并穷尽条件下,Functionalizer 让各语料以更小的词表实现完整覆盖,所需词表槽位减少 14.61% 至 19.72%,平均 17.16%,在 FineWeb-Edu 上达到峰值。 此前的工作多关注分词质量或序列长度,而这里把衡量标准放在“覆盖整个语料所需的总词表槽位”上,说明格式变体的折叠可以直接转化为词表预算的节省。 在 Wikitext、Python-Codes、FineWeb-Edu、GitHub-Code-Python 四个语料上各采样至多 100,000 篇文档,训练目标词表预算为 4096k 的 BPE 直到合并候选穷尽;表中给出基线对 Functionalizer 的词表规模,例如 Wikitext 106,023 对 90,531、FineWeb-Edu 1,214,684 对 975,169。
在 98M 参数 GPT-2 Small(12 层、768 隐藏维度、12 头、上下文 512、16k 词表)上,Functionalizer 配置把 GitHub-Code-Python 的 Python 语法成功率从 7.70% 提升到 9.12%(相对提升 18.4%),并降低代码字符级困惑度(1.5328 对 1.5697)。 论文把这一改善部分归因于结构化分解:标准 BPE 把缩进切成任意空白块,而 REPEAT 把缩进参数化为算术关系(共享基字符、只差一个序数计数),再结合标识符大小写约定的统一,为下游模型提供更清晰的结构表示。 五个随机种子(1–5)训练 50,000 步,每数据集 1,000 条验证提示做贪心解码(KV 缓存、最多 256 个新 token),并报告 Functionalizer 配置跨种子方差明显更小。
在自然语言散文上,Functionalizer 把 FineWeb-Edu 的重复词 n-gram 从 66.0% 降到 55.8%,GitHub-Code-Python 上从 25.5% 降到 17.9%,同时散文的字符级困惑度与基线基本持平(2.2656 对 2.2662)。 这说明把表层变化与词汇词根分离,可以在不牺牲归一化建模能力的前提下缓解重复退化;作者假设减少表层变化有助于模型不锁进重复的表层循环。 重复率按重叠词 n-gram 的重复比例(对 n 取平均)统计,生成在连续 4 次 token 循环时提前终止;同时报告了独立前缀带来的解码代价,散文上有 7.1% 的空序列,其中一部分是仅含操作码的序列。
启示与展望
该框架面向在标准分词器(如 Hugging Face BPE)之前运行的预分词阶段,需先经正则切分器(如 Llama Split)把文本切成局部片段,使数值参数落在单字节范围内;默认以独立前缀 token 形式输出操作码,也可在子词训练前与基元融合。它适用于希望在不丢弃正字法信息的前提下共享基元嵌入、并让缩进与大小写等结构以参数形式表达的语料与代码场景;作者指出融合配置、前缀感知注意力优化以及更大规模、等字节预算的评测是自然的下一步。
下游评测在 98M 参数、固定 50,000 步预算下进行,且由于独立前缀带来的序列扩张,Functionalizer 在预训练中处理的原始字节比基线少 8–16%,因此表征收益与序列长度差异尚未分离;独立前缀在小规模下会产生空序列与孤立控制字符,作者提出约束解码或前缀掩码作为缓解方向。当前参数寻址限于预切分片段内、变音符号限于 13 种组合标记,非拉丁文字、黏着语词形还原与数字/日期模板尚未覆盖;下游实验评估的是 CAPITALIZE、变音符号与 REPEAT 的复合管线,各组件各自的贡献仍待拆分。此外,所加载文本中若干结果表格的数值单元格为空,因此部分指标只能依据正文叙述而非表格数字来概括。
