參考文章:子詞分詞器BPE和WordPiece理解_wordpeice-CSDN博客
子詞分詞器BPE和WordPiece理解_wordpeice-CSDN博客
WordPiece 和 BPE 的區別-CSDN博客
點互信息(PMI)和正點互信息(PPMI)-CSDN博客
https://zhuanlan.zhihu.com/p/649030161
UTF-8編碼詳解-CSDN博客
Qwen(千問) 系列大模型的 tokenizer 為什么是亂碼? | 寒寒的博客
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是非常重要的事情。
?