在大模型(LLM)的世界里,token 是一个基础且重要的概念。接下来,让我们一文读懂大模型中的 token 究竟是什么。
一、token究竟是什么?
在大语言模型(LLM)中,Token 代表模型可以理解和生成的最小意义单位,是模型处理文本的基础单元。它就像是模型世界里的 '积木块',模型通过对这些 '积木块' 的操作来理解和生成文本。根据所使用的特定标记化方案,Token 可以表示单词、单词的一部分,甚至只表示字符。
例如,对于英文文本,'apple' 可能是一个 Token,而对于中文文本,'苹果' 可能是一个 Token。但有时候,Token 并不完全等同于我们日常理解的单词或汉字,它还可能是单词的片段,比如 'playing' 可能被拆分为 'play' 和 'ing' 两个 Token。
为了让模型能够处理这些 Token,它们会被赋予数值或标识符,并按序列或向量排列,然后被输入或从模型中输出。简单来说,Token 是原始文本数据和 LLM 可以使用的数字表示之间的桥梁。
这里有一些帮助理解 Token 长度的经验法则:
(1)英文中,1 个 Token 约等于 4 个字符。
(2)1 个 Token 约等于 3/4 个单词。
(3)100 个 Tokens 约等于 75 个单词。
(4)1 - 2 个句子约等于 30 个 Tokens。
(5)1 个段落约等于 100 个 Tokens。
(6)1500 个单词约等于 2048 个 Tokens。
在OpenAI 的API 参数中,max _ tokens 参数指定模型应该生成一个最大长度为60个令牌的响应。可以通过 https://github.com/dqbd/tiktokenizer/ 来观察token 的相关信息。
二、token的特点
我们可以先用OpenAI 的playground 来看一个例子'Dec 31,1993. Things are getting crazy.'

使用 GPT-3 tokenizaer将相同的单词转换为token:

2.1 token到数值表示的映射
词汇表将 Token 映射到唯一的数值表示。由于 LLM 使用数字输入,所以词汇表中的每个 Token 都被赋予一个唯一标识符或索引。这种映射允许 LLM 将文本数据作为数字序列进行处理和操作,从而实现高效的计算和建模。
为了捕获 Token 之间的意义和语义关系,LLM 采用 Token 编码技术。这些技术将 Token 转换成称为嵌入的密集数字表示。嵌入式编码语义和上下文信息,使 LLM 能够理解和生成连贯的和上下文相关的文本。
像 Transformer 这样的体系结构使用 self - attention 机制来学习 Token 之间的依赖关系并生成高质量的嵌入。
2.2 token级操作:精确地操作文本
Token 级别的操作是对文本数据启用细粒度操作。
LLM 可以生成 Token、替换 Token 或掩码 Token,以有意义的方式修改文本。这些 Token 级操作在各种自然语言处理任务中都有应用,
(1)例如机器翻译、情感分析和文本摘要等。
(2)例如在机器翻译中,模型可能会根据源语言的 Token 序列,生成目标语言对应的 Token 序列;
在情感分析中,通过分析文本中 Token 所携带的情感信息来判断整体文本的情感倾向。
2.3 token 设计的局限性
在将文本发送到 LLM 进行生成之前,会对其进行 tokenization(标记化)。每个模型都以不同的方式执行这一步骤,例如,GPT 模型使用字节对编码(BPE)。Token 会在 tokenizer 发生器的词汇表中分配一个 id,这是一个将数字与相应的字符串绑定在一起的数字标识符。
例如,'Matt' 在 GPT 中被编码为 Token 编号(13448),而 'Rickard' 被编码为两个标记,'Rick','ard' 带有 id(8759, 446),GPT - 3 拥有 1400 万字符串组成的词汇表。




