1. Byte-Pair Encoding(BPE) 如何构建词典?
- 设定最大subwords个数。
- 将所有单词拆分为单个字符,并且在最后添加一个停止符,同时标记处该单词出现的次数。
- 统计每一个 连续字节对 的出现频率,选择最高频者合成新的subword。
- 重复第3步直到达到第1步设定的subwords词表大小或下一个最高频的字节对出现频率为1。
2. WordPiece 与 BPE 异同点是什么?
Google 的 Bert 模型在分词的时候使用的是 WordPiece 算法。与 BPE 算法类似,WordPiece 算法也是每次从词表中选出两个子词合并成新的子词。与 BPE 的最大区别在于,如何选择两个子词进行合并:BPE 选择频数最高的相邻子词合并,而 WordPiece 选择能够提升语言模型概率最大的相邻子词加入词表。
3. SentencePiece 的思路是什么?
SentencePiece 其实是一个实现了 BPE/Unigram tokenizer 的一个集合,不过他有一些创新的地方,跟中文的分词作用是一样的,但从思路上还是有区分的。在中文上,把经常在一起出现的字组合成一个词语;在英文上,它会把英语单词切分更小的语义单元,减少词表的数量。
4. LLMs 有哪些分词方式,它们之间有什么区别?
一般 LLMs 分词方式包括 BPE, WordPiece, Unigram 以及随机分词。
- BPE:这是一种数据压缩 算法,用来在固定大小的词表中实现可变⻓度的子词。BPE 首先将词分成单个字符,然后依次用另一个字符替换频率最高的一对字符 ,直到循环次数结束。
- WordPiece:训练过程是不断地去寻找语料库中 PMI 最高的 subword pair, 然后合并成一个 subword。
- Unigram:unigram 分词方式属于 n-gram 概率路径 分词方式的一种, 中文名称是 一元分词。在中文分词中, 比较常见的是 二元分词 (bigram)。n-gram 的本质就是 标准语言模型 的简化。而 unigram 是最强的假设, 即每一个词语的概率是完全独立的, 和之前的文本没有关系的。
- 随机分词:对于文本生成任务来说, 不能完全按照概率最高的方式来生成, 而只要是在合理区间内的都可以。同理, 对于分词来说也是类似: 分词方式需要一定的 "随机性"。