文末有一些目前 Tokenizer 的意见,感兴趣的可以谈论。

也可以换着办法问,比如 一段一万字的 prompt,输入到最大长度为 8192 的模型,是否能精确的输出?

但是每个模型的 Tokenization 都是在自己的语料上演习出来的,怎么知道详细某一个 Tokenizer 每个 token 均匀代表几个汉字呢?

有的模型的技能报告会在 Tokenization 那一章供应一个“压缩率” 的指标,比如 qwen 和 baichuan 的,但是有些技能报告并不会提。

学妹溘然问我AI大年夜模型一个 token 能代表几个单词和汉字

虽然说不同的 tokenizer 在不同的演习语料上演习的不一样,但是大家采取的方法实在无非就那么几种,感兴趣的可以看:小米口试官:“Tokenization 是什么”。
封面看着眼熟

实在只要演习语料里紧张的措辞一样,在大量数据的堆积下,终极的的结果差异并不大。
下面会给出以 英文为主的模型和中英文为主的模型的一些结果比拟。

为了测试,我选择了两本小说,《孔乙己》 和 《哈利波特》第一章,分别测试不同 tokenizer 对这两篇小说的中文版和英文版的效果。

结果如下图所示:

虽然这只能算是个抽样,但是也能看出一些问题。

每个模型在英文上的效果基本差不太多。
一个 token 大概占 0.75~0.8 个单词。
这与 OpenAI 官网上写的差不多:“A helpful rule of thumb is that one token generally corresponds to ~4 characters of text for common English text. This translates to roughly ¾ of a word (so 100 tokens ~= 75 words).”

海内的模型在中文语料上特训之后,中文编码的效率显著高于英文的 ChatGPT 和 Llama。
一个 token 大概占1.5 个汉字。

目前的 Tokenizer 的编码效率够么?

周一曾经写了逐一篇交叉熵的文章:华为口试官:“交叉熵 (cross entropy) ,KL 散度的值,到底有什么含义?”, 里面有提到通信的问题。

如何把语料用最少的 bit 位传输给模型,实在也是个通信的问题。
只不过现在模型参数的通信远高于数据的通信,以是数据 与 GPU 的通信目前还不须要优化。

如果哪一天模型须要大量的输入的时候,tokenizer 的编码效率可能还会被研究。

当前的 tokenization 是否是最优编码?目前只能说有最优编码的影子,但是还不完备是。

比如 BPE 的算法实在便是在构建 Huffman 树,但是构建了之后仍旧采取了相同比特位数来编码。
这么做的好处省去理解码的过程,直接查表就获取到了 Embedding,但是实在引入解码这点打算量也算不了啥。
坏处便是通信上实在还有优化的空间。

还有一点便是中文的编码效率实在理论上还可以更高,由于目前所有的处理流程都是按照英文的流程来的。

比如 subword,对中文就完备没生效啊。
之前也举过一个例子,oarfish 我虽然不知道是啥,但是预测是条鱼。
对付中文来说,“鲥”这个字我可能也不认识,但是我也预测这是条鱼,但是这个字在中文肯定被表示成 bytes 了,就没啥意义了。

以是中文如何高效的编码,也该当是一个研究课题,我乃至觉得中文这种二维的笔墨,该当和图像的 tokenizer 有某种联系,比如在演习的时候,除了 id embedding,还有这个字对应的图片信息的 embedding。

我也不知道这个想法之前有没有人提过,假如没有的话,后续有人研究 id embedding + token image embedding 的话,可以引用一下这篇:)或者有大手子带我混论文。

欢迎点赞关注我,获取更多关于 AI 的前沿资讯。
别忘了将本日的内容分享给你的朋友们,让我们一起见证 AI 技能的飞跃!