题目重点:讨论未知词、多语言、序列长度和可逆性,不只背算法名。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 源只问比较tokenization methods;本文讨论常见训练合同,不锁定现行模型的具体tokenizer。
- tokenization与文本归一化分开,大小写/空白处理会影响可逆性。
解题路线
- 词级序列短但词表大且OOV多;字符级覆盖广但序列长;子词在频率与覆盖之间折中,字节可覆盖任意编码序列但部分语言token数更多。
- 比较BPE按高频相邻对逐次合并,WordPiece/Unigram采用不同训练目标或分段选择;不能只凭“都是subword”推断同一切分。
- 按任务量化token/字符、unknown率、处理时延、语言分组及边界敏感性。词表变更影响embedding和已有模型,不能直接换分词器又保留原权重语义。
手动走一遍
英文常见词可能单token,罕见产品型号拆多段;中文/emoji在不同分词器下长度不同,固定字符截断不等于固定token预算。同一数字加空格可能改变切分,模型计费/长度约束应使用部署tokenizer实测。
规模与取舍
常规实现成本随文本长度、词表结构与匹配策略变化;模型attention随token数平方的部分成本使token效率影响端到端预算。
易错点与追问
容易失分的边界
- byte覆盖不代表总能逐个token独立decode为合法UTF-8字符。
- 训练tokenizer若混入评估文本会改变频率统计,需避免数据泄漏。
继续深挖
- 如何设计多语言tokenizer评估,让总体均值不掩盖语言差异?
- 格式或代码任务需要保留哪些空白/标点信息?
