BBPE(Byte-Level Byte Pair Encoding)即字节级字节对编码,是大模型中常用的一种分词算法,以下是相关介绍:

原理及操作方式

  • 与BPE的联系:BBPE是BPE(Byte Pair Encoding)的一种变体。BPE是从字符级别开始,逐步合并频繁出现的字符对,直到达到预定的词表大小。而BBPE则是在字节级别进行操作,不是字符级别。

  • 具体操作:BBPE先将文本编码为字节序列,然后统计所有相邻字节对的出现频率,找到出现频率最高的字节对,将其合并为一个新的子词单元,并更新词表。重复这一过程,直到达到预定的词表大小或无法继续合并。

优势

  • 处理多语言文本:BBPE不依赖于特定的字符编码,能够更好地处理包含多种语言和特殊字符的混合文本。无论是拉丁字母、中文字符还是其他语言字符,都可以作为字节序列进行统一处理。

  • 避免字符编码问题:由于直接在字节序列上操作,BBPE完全避免了字符编码和解码的问题,对于处理非标准字符集或编码格式非常有用,而BPE在处理UTF-8等编码下占用多个字节的字符时,可能会导致复杂性上升。

  • 更精细的子词建模:在字节级别操作使BBPE可以实现更细粒度的子词分割,对于需要非常精细的文本处理任务,如细粒度的文本生成和翻译等非常有帮助,相比之下,BPE在字符级别操作,子词分割的粒度相对较粗。

在大模型中的应用

  • GPT系列:GPT系列模型广泛使用BBPE,能够有效处理多语言文本,在处理不同语言的输入时,能够将各种语言的文本转换为合适的字节序列进行处理,并且具有更强的鲁棒性,有效减少OOV问题。

  • LLaMA:以中文LLaMA(Atom)为例,它对中文采用BBPE分词,整个词表包含65,000个token,在处理中文文本时,能够将中文字符进行聚合成为一个一个的子串,最终以子串整体映射到一个数值id。

  • Qwen2:同样采用了BBPE分词技术,在面对各种自然语言处理任务时,利用BBPE的特性可以更好地处理输入文本,提高模型的性能和泛化能力。