子词分词器(Byte Pair Encoding + WordPiece)

参考文章:子词分词器BPE和WordPiece理解_wordpeice-CSDN博客

子词分词器BPE和WordPiece理解_wordpeice-CSDN博客

WordPiece 和 BPE 的区别-CSDN博客

点互信息(PMI)和正点互信息(PPMI)-CSDN博客

https://zhuanlan.zhihu.com/p/649030161

BPE和WordPiece都是常用的子词分词器,子词分词器可以控制词表的大小的同时学习到有意义的上下文表示,所以现在的深度学习模型一般会使用子词分词器。

相同点:

都要指定一个词典的大小

都包含更细粒度的子词,所以可以控制词典的大小的同时,缓解OOV问题

不同点:

将词加入基础词典的选择策略不一样,BPE是选择频率最高的字符对,WordPiece是选择使训练数据的似然概率最大的字符对。

BPE和WordPiece的区别在于如何选择两个子词进行合并。

BPE的词表创建过程:

  1. 首先初始化词表,词表中包含了训练数据中出现的所有字符。

  2. 然后两两拼接字符,统计字符对在训练数据中出现的频率。

  3. 选择出现频率最高的一组字符对加入词表中。

  4. 反复2和3,直到词表大小达到指定大小。

WordPiece是贪心的最长匹配搜索算法。基本流程:

  1. 首先初始化词表,词表包含了训练数据中出现的所有字符。

  2. 然后两两拼接字符,统计字符对加入词表后对语言模型的似然值的提升程度。

  3. 选择提升语言模型似然值最大的一组字符对加入词表中。

  4. 反复2和3,直到词表大小达到指定大小。

BBPE和BPE的关系:

BBPE算法在基于字节(Byte)进行合并过程和BPE一致、也是选取出现频数最高的字符对进行合并。BPE基于char粒度去执行合并的过程生成词表。

BBPE 的兼容性---通用模型(多种语言)

BBPE解决一个问题是能比较好支持语料是多种语言的分词,一方面正如上面所说,如果只考虑英文、法语、西班牙语等拉丁美系的语言,BEP足以支持能够以较小词表大小(Vocabulary Size)解决OOV的问题。但中文、日本如果使用BEP对字符(characters)进行构造词表的话,其具有的生僻词会占据浪费比较大词表空间。结合最近有关GPT5加强其翻译的能力的报道,通用人工智能AGI的角度上来看,使用对支持多种语言的友好的Tokenizer可以极大降低成本,同时突出翻译的能力。在LLM时代,如何设计一个兼顾通用且高效推理的Tokenizer是非常重要的事情。

相关推荐
Hoper.J9 个月前
BPE vs WordPiece:理解 Tokenizer 的工作原理与子词分割方法
transformers·tokenizer·1024程序员节·bpe·wordpiece·子词分割方法
Nicolas8939 个月前
【大模型实战篇】大模型分词算法WordPiece分词及代码示例
大模型·预处理·分词·tokenize·wordpiece·词元化