简要介绍BBPE的核心思路,这是LLM(LLaMA,Qwen,etc.)普遍使用的初始化词表的方法
BPE
- 初始化词表为字符表(比如把ascii字符加进去)
- 找一段“训练文本”
- 在文本中找到频率最高的符号对并添加到词表中(注意总是添加,不是替换,不会删除已经在表里的词,即词表总是封闭的),反复进行直到词表已满
- 使用时根据贪心算法优先匹配后添加的词(尽可能分成大块的词)
问题:字符表只能针对一部分语言,遇到多语言/emoji等特殊符号时就没法处理了(OOV)
BBPE
- 初始化词表为所有可能的字节(即256个词),此后的处理都以字节为单位进行合并
- 这样就彻底不可能OOV了