参考文章:子词分词器BPE和WordPiece理解_wordpeice-CSDN博客
子词分词器BPE和WordPiece理解_wordpeice-CSDN博客
https://zhuanlan.zhihu.com/p/649030161
BPE和WordPiece都是常用的子词分词器,子词分词器可以控制词表的大小的同时学习到有意义的上下文表示,所以现在的深度学习模型一般会使用子词分词器。
相同点:
都要指定一个词典的大小
都包含更细粒度的子词,所以可以控制词典的大小的同时,缓解OOV问题
不同点:
将词加入基础词典的选择策略不一样,BPE是选择频率最高的字符对,WordPiece是选择使训练数据的似然概率最大的字符对。
BPE和WordPiece的区别在于如何选择两个子词进行合并。
BPE的词表创建过程:
-
首先初始化词表,词表中包含了训练数据中出现的所有字符。
-
然后两两拼接字符,统计字符对在训练数据中出现的频率。
-
选择出现频率最高的一组字符对加入词表中。
-
反复2和3,直到词表大小达到指定大小。
WordPiece是贪心的最长匹配搜索算法。基本流程:
-
首先初始化词表,词表包含了训练数据中出现的所有字符。
-
然后两两拼接字符,统计字符对加入词表后对语言模型的似然值的提升程度。
-
选择提升语言模型似然值最大的一组字符对加入词表中。
-
反复2和3,直到词表大小达到指定大小。
BBPE和BPE的关系:
BBPE算法在基于字节(Byte)进行合并过程和BPE一致、也是选取出现频数最高的字符对进行合并。BPE基于char粒度去执行合并的过程生成词表。
BBPE 的兼容性---通用模型(多种语言)
BBPE解决一个问题是能比较好支持语料是多种语言的分词,一方面正如上面所说,如果只考虑英文、法语、西班牙语等拉丁美系的语言,BEP足以支持能够以较小词表大小(Vocabulary Size)解决OOV的问题。但中文、日本如果使用BEP对字符(characters)进行构造词表的话,其具有的生僻词会占据浪费比较大词表空间。结合最近有关GPT5加强其翻译的能力的报道,通用人工智能AGI的角度上来看,使用对支持多种语言的友好的Tokenizer可以极大降低成本,同时突出翻译的能力。在LLM时代,如何设计一个兼顾通用且高效推理的Tokenizer是非常重要的事情。