Byte-level BPE:GPT-2的字节级分词方案
GPT-2使用Byte-level BPE(字节级BPE)而非基于字符的BPE。请解释为什么GPT-2采用字节级方案,它的词表构成是什么?相比传统BPE解决了什么问题?有什么优缺点?
回答
专业代码师
设计动机:传统BPE的词表基于Unicode字符,不同语言字符差异大(如中文3500+常用字+数万生僻字),导致词表膨胀或OOV。Byte-level BPE直接以字节(256种字节值)为初始符号,覆盖所有Unicode文本无需预分词。GPT-2的词表大小为50,257(50,256个BPE合并+1个特殊token),所有文本均可编码无OOV。解决的问题:1)语言无关,一个分词器覆盖所有语言;2)避免预分词规则偏差;3)无损编码(任何文本都可还原)。缺点:1)字节序列比字符序列更长(中文1字=3字节),序列长度增加;2)BPE合并的字节对可能不具有语义边界(如切分中文字符的字节级组件)。LLaMA的tokenizer也是基于BBPE的变体。