我们知道分词是大语言模型处理语料库的关键,分词器通常会影响下游任务的性能(参考:https://doi.org/10.48550/arXiv.2310.08754)。在《Tokenizer Choice For LLM Training: Negligible or Crucial?》文章中,作者有详细的介绍,他们认为Unigram模型比较适用于多语言模型的训练,对于下游任务的性能提升大概在2%左右。
在Unigram模型中,我们确实要考虑每个单词的所有可能分词。每个分词都是由一个或多个标记组成的,我们通过计算每个标记在整个语料库中出现的频率,将其作为该标记的概率。然后,对于每个得到的分词,我们将其中所有标记的概率相乘,得到该分词的概率。最后,我们选择概率最高的分词作为单词的分词标记。这就是Unigram模型的工作原理。说得比较拗,一个比较简单的例子说明一下:
假设我们有一个词汇表,其中包含以下单词及其出现的次数:
(“cat”, 10), (“bat”, 5), (“rat”, 12), (“hat”, 4), (“cats”, 5)
我们的词汇表可能包括"c", “a”, “t”, “b”, “r”, “h”, “s”, “ca”, “at”, “ba”, “ra”, “ha”, “ts”, “cat”, “bat”, “rat”, “hat”, "cats"等标记。
首先,我们需要计算每个标记的概率。这个概率是标记在语料库中出现的次数除以所有标记出现的总次数。例如ÿ