微信扫码
添加专属顾问
我要投稿
深入探索大模型处理语言的核心机制,揭秘Token与UTF8编码的差异。 核心内容: 1. Token定义及其在大模型中的作用 2. Token与UTF8编码的对比分析 3. Token的优势及其在大模型中的应用
Token,也叫词元,是大语言模型处理的最基本的单位。在用户使用大模型时,需要将用户输入的文字转换成Token,然后输入给大模型,由大模型预测出下一个Token,最后再将预测出来的Token转化回可读的文本,形成输出。本文将向读者分析什么是token,为什么要用token,token有什么优势,同时又有什么劣势。最关键的,为什么大模型要重新建立基于token的编码机制,而不是复用广泛使用的UTF8。
token本质上就是词的整数表示。是自然语言处理中的一项核心技术。 它将人类可读的文本转换成计算机友好的数字形式,为大模型理解和生成语言铺平了道路。 表一展示一句话对应的token表示。从表中不难看出,我对应的token是1,“大模型”对应的是3。以此类推,假设用户输入的是我爱技术,那么转换为token后,就是[1,2,4]。同理,模型输出了[1,2,3]转换为人类可读的内容就是我爱大模型。
词 | token |
---|---|
我 | 1 |
爱 | 2 |
大模型 | 3 |
技术 | 4 |
前文提到了,token本质上就是词的整数表示,就是一种文本的编码方式,那么大模型中为什么要使用token而不是使用线程的UTF8呢?UTF8经过了这么多年的发展,已经得到了广泛的认可,已经成为了事实的文本编码标准,那么为什么大模型要舍弃成熟的技术,反而采用了token呢?
1. 大模型关注语义而不是字符的组成
字符编码(如UTF8)的目的是为了在计算机中表示和存储各种文字符号,它是一种通用的字符表示标准。而大模型的目标是理解和生成自然语言,这不仅仅是字符的堆砌,更重要的是理解字符、词语、句子背后的含义和关系。在大模型中,单独的字符是没有意义的,只有这些字符组成还有语义的词时才有意义。UTF8等编码虽然能表示所有字符,但对于理解词语之间的关系、句子的结构和含义并没有帮助。大模型如果直接使用字符作为输入,需要从零开始学习字符到语义的映射,这将非常低效且困难。
比如大模型需要理解“苹果”这个词,“苹果”这个词需要作为一个整体来理解,拆分开来的单独的字符是没有意义的。另外,“苹果”既能指水果,也能指科技公司。这种语义上的多义性和上下文依赖性是字符编码无法直接表达的。大模型需要将词语映射到更抽象的语义空间,才能进行推理、生成等复杂任务。
2. token的编码效率更高
token将一个词作为基本的单元进行编码,可以极大的降低序列的长度。以“词元是人工智能领域的自然语言中的一个概念”这句话为例,这句话有20个子,但是假设使用Qwen2.5的编码器进行编码,得出的token的长度只有10。按照一个token占用3个字节计算,只需要30字节即可。如果使用UFT8编码则需要60个字节。可以降低一倍的序列长度。
3. token能提高计算的效率
序列长度降低了,直接降低了自注意力机制中的注意力矩阵的大小,直接降低了模型的复杂度。同事更短的序列意味着更少的计算量,可以加速模型的训练和推理过程。
综上,token的应用可以极大地提升大模型的计算效率,因此在大模型中广泛应用token的编码技术。
那么token是不是完美的呢?很显然不是。token的缺点也很明显。
1. 没有统一标准
由于没有统一标准,使用不同 Tokenizer 训练的模型,它们的输入格式是不兼容的。不同的tokenizer对同样的输入会得到不同的输出。表2展示了“词元是人工智能领域的自然语言中的一个概念”这个输入在不同模型的Tokenizer下输出的token情况。这在一定程度上限制了模型的通用性和可移植性。
tokens | ||
13 | 31892, 6753, 3221, 47243, 60319, 89497, 1616, 116258, 108329, 58159, 22912, 49062, 41276 | |
gpt-3.5 | 25 | 6744, 235, 24186, 21043, 17792, 49792, 45114, 118, 27327, 19817, 228, 35722, 253, 9554, 37026, 61994, 73981, 78244, 16325, 9554, 48044, 162, 25451, 26203, 113 |
Qwen2.5 | 10 | 99689, 23305, 20412, 104455, 104799, 99795, 102064, 101047, 46944, 101290 |
DeepSeek-R1 | 9 | 4055, 1673, 389, 33574, 29919, 4377, 7831, 60754, 9574 |
表2 不同模型对“词元是人工智能领域的自然语言中的一个概念”的编码结果
对于多语言模型,如何设计一个能够有效处理多种语言的 Tokenizer 和词表,是一个更复杂的问题。不同的语言有不同的字符集、词汇结构和语法规则,需要更精细的设计才能兼顾效率和性能。
2. tokenizer的粒度会影响模型的性能。
tokenizer的粒度指的是tokenizer如何结合多个字符组成词元。例如“人工智能”这个词,可以视为1个词元,也可以视为“人工”和“智能”两个词元。这个就是粒度。粒度越小,可以更有效处理拼写错误、形近字等问题,可以更好地处理词形变化 (例如,词根、词缀)。但会导致序列长度通常非常长,计算效率较低。相反的粒度越大,序列长度越短,计算效率较高,模型更容易学习词语级别的语义关系。但难以处理词形变化, 例如 "run", "running", "ran" 会被当成不同的词语处理。 对低频词和罕见词处理效果差。
3. 词表大小会影响模型性能
词表小意味着模型的参数量相对较少,可以减少模型的存储空间和计算量,训练和推理速度更快,更易于部署在资源受限的环境中。但很多词语会被处理成未登录词 (OOV)。会导致模型输入信息损失严重,模型无法有效理解文本的语义,从而降低性能。 此外,词表过小也可能限制模型捕捉细粒度语义信息的能力,例如无法区分近义词、无法理解专业术语等。
词表大意味着可以容纳更多的词汇,降低 OOV 率,模型可以处理更丰富的语言现象,理论上可以提升模型对复杂语义的理解能力。但直接导致模型参数量剧增,模型体积变大,训练和推理速度变慢,对计算资源的要求更高。 过大的词表也可能导致模型更容易过拟合训练数据,泛化能力下降。 此外,词表过大,尤其当词表中包含大量低频词时,会增加模型的学习难度,因为模型需要为这些低频词分配参数并学习其表示,但这些低频词在训练数据中出现次数有限,难以充分学习。
本文介绍了词元的定义,向读者分析了为什么要使用词元。正确地使用词元可以显著提高模型性能,但是词元并不是那么容易就用好的,粒度、词表大小都会影响模型性能,且需要根据实际场景找到平衡点。不同模型的tokenizer也无法通用。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-08-13
2024-06-13
2024-08-21
2024-09-23
2024-07-31
2024-05-28
2024-08-04
2024-04-26
2024-07-09
2024-09-17
2025-03-26
2025-03-25
2025-03-23
2025-03-22
2025-03-22
2025-03-22
2025-03-22
2025-03-22