大模型火了这么久了,还不知道什么是token?一文教会你
大模型火了这么久了,还不知道什么是token?一文教会你
文章目录
🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发,目前开始人工智能领域相关知识的学习
🦅个人主页:@逐梦苍穹
📕所属专栏:人工智能
🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹
Token 是自然语言处理(NLP)和计算机语言学中一个关键的概念,指的是文本中的一个最小单位或元素。它通常是一个词、子词、字符或符号。在处理自然语言时,模型会将输入的文本分解为一系列的 token,这些 token 是模型进行处理和分析的基础。
1. Token 在 NLP 中的定义
Token 在不同的上下文中可以表示不同的粒度,具体分法取决于模型和任务的需要:
- 词级别的 Token:将文本中的每个单词作为一个 token。例如,“I love AI” 这句话可以被分为三个 token:[“I”, “love”, “AI”]。
- 子词级别的 Token:在处理复杂词汇或罕见词汇时,模型可能会将一个词拆分为若干个子词。例如,句子中的 “playing” 可以被分为 [“play”, “ing”],其中 “ing” 表示后缀。这种方法通常用于处理词汇表外的词汇。
- 字符级别的 Token:一些情况下,模型会将每个字符作为一个 token。例如,“hello” 可能被分为 [“h”, “e”, “l”, “l”, “o”]。
- 标点符号和其他符号:标点符号(如逗号、句号)以及一些特殊符号(如 $、@)也会作为独立的 token 进行处理。
2. Tokenization(分词)
Tokenization 是将原始文本拆分为 token 的过程。它是 NLP 任务中的一个基本步骤,帮助将文本转化为模型能够理解的形式。不同的语言和模型会采用不同的分词方法,常见的分词技术包括:
- 基于空格的分词:通过空格将句子中的单词分割开。例如 “I love AI” 可以被分成 [“I”, “love”, “AI”]。这是最简单的分词方式,但对于复杂语言(如汉语、日语)不适用。
- 基于词典的分词:通过查阅词典或使用词表来识别文本中的单词。例如对于汉语短语 “我喜欢自然语言处理”,可以分成 [“我”, “喜欢”, “自然语言处理”]。
- 子词分词(Subword Tokenization):像 BPE(Byte-Pair Encoding)或 WordPiece 是常用的子词分词算法,它们将罕见的词拆分为常见的子词或字符,以提高模型的泛化能力。例如,“playing” 可能被拆分为 “play” 和 “ing”。这种方法用于大型预训练模型(如 BERT 和 GPT)。
3. Token 在深度学习模型中的应用
现代 NLP 模型(如 BERT、GPT)无法直接处理文本,需要先将文本转化为 token 序列。这个过程通常包括两个步骤:
- Tokenization(分词):文本被分解为 token 序列。
- Token 映射到词汇表:每个 token 对应词汇表中的一个唯一 ID(整数)。模型通过这种整数序列来处理文本。
例如,句子 “I love AI” 可能被分为以下 token 序列:
[“I”, “love”, “AI”] -> [101, 5436, 2773] (每个 token 对应一个唯一的词汇表 ID)
然后,这个整数序列被输入到模型中进行进一步的计算。
4. Token 的作用
- 模型输入:token 是模型处理的最小单位,模型需要通过 token 来理解文本。将原始文本拆分为 token 后,模型可以计算每个 token 之间的关系,进而理解句子的含义。
- 文本生成:在生成任务中(如 GPT 模型生成文本),模型也是逐步预测下一个 token,直到生成完整的文本。例如,在对话模型中,模型会根据之前的 token 来预测下一步的回复。
5. 常见的 Token 化方法
5.1 BPE(Byte-Pair Encoding)
BPE 是一种常见的子词分词方法,特别适用于处理大量词汇表外的罕见词。它的原理是通过合并频率最高的字符对逐步构建子词表,从而生成常见的子词单位。这种方法能有效压缩词汇表规模,同时提升模型对未见过的单词的处理能力。
例如,“unhappiness” 可能被拆分为 [“un”, “happiness”],而 “happiness” 可以进一步被拆分为 [“happi”, “ness”]。
5.2 WordPiece
WordPiece 是 BERT 模型使用的分词方法,类似于 BPE,逐步将频率最高的子词或字符组合在一起,用于减少词汇表的大小并提高对稀有词的处理效果。它的目标是通过最大化词汇表的覆盖率,同时保持较小的词汇表规模。
5.3 SentencePiece
SentencePiece 是一种无需任何预处理的分词方法,它将整个句子视作一个字符序列,使用子词单元将字符进行分解。这种方法不依赖于空格,可以处理多种语言,尤其适用于一些没有空格作为词界限的语言,如日语和汉语。
6. Token 的相关挑战
- 词汇表外问题(OOV):在传统的词级别分词方法中,模型词汇表中没有见过的词无法被处理,这被称为 Out-of-Vocabulary(OOV)问题。子词分词(如 BPE)通过将未知词拆解为更小的子词来缓解这个问题。
- 语言的复杂性:不同语言的分词难度差异很大。例如,英语使用空格作为单词边界,分词相对简单;而汉语、日语等语言没有显式的空格分隔词,分词就变得更加复杂。
7. Token 在模型推理中的表现
在模型推理或生成文本时,token 是逐步生成的。例如,GPT 模型在文本生成时,它会基于前面的 token 预测下一个 token,直到满足生成条件为止。每次生成一个新的 token,模型会重新评估整个上下文,输出最可能的下一个 token。
8、ChatGPT的token
在 ChatGPT 等大规模语言模型中,token 是指模型在处理输入文本时,将文本拆解成的最小单位。具体来说,ChatGPT 及类似的 Transformer 模型(如 GPT 系列)将输入的文本转换成 token 序列,然后根据这些 token 进行计算和生成。
这些 token 可以是单词、子词,甚至字符。GPT 模型采用的分词方法通常是基于子词的分词算法,比如 Byte-Pair Encoding (BPE) 或 WordPiece,以确保模型能够处理各种不同长度和复杂度的词汇。
在 ChatGPT 中,token 具有以下特性
-
词汇拆分:
- 一个完整的单词可能被拆分成多个 token。例如:
- 单词 “artificial” 可能被拆分为 [“arti”, “ficial”]。
- 句子 “I love artificial intelligence” 可能被拆分为 [“I”, " love", " arti", “ficial”, " intelligence"]。
- 对于常见词,模型可能使用单个 token;而对于不常见或较长的词,它会将其拆分为多个子词。
- 一个完整的单词可能被拆分成多个 token。例如:
-
Token 的长度:
- 通常,一个 token 大约是 4 4 4个字符,但具体情况会因语言、文本内容和分词方式而异。
- 对于英语等使用空格分隔单词的语言,token 和词的数量大致相当。但在中文、日文等不使用空格分词的语言中,一个字符可能就是一个 token。
-
Token 的作用:
- 输入限制:ChatGPT 模型对输入和输出的 token 数有一个限制。以 GPT-4 为例,典型的上下文窗口大小(即它能处理的最大 token 数)通常在 8 , 000 8,000 8,000个 token 或 32 , 000 32,000 32,000个 token 左右,具体取决于模型的版本。超过这个限制的 token 会被截断。
- 消耗计算资源:每个 token 都会占用一定的计算资源,模型处理的 token 越多,所需的计算量和内存消耗就越大。因此在实际应用中,token 的数量会影响响应时间和计算成本。
-
Token 在推理和生成中的作用:
- 在生成文本时,ChatGPT 是逐步处理和生成 token 的。模型根据已经生成的 token 和输入的上下文,预测下一个最有可能的 token,直到生成完成。例如,在用户输入一段文本后,模型会通过一系列 token 生成对应的回复。
- 生成过程是按 token-by-token 的方式进行,而不是一次性输出完整的句子或段落。
举个例子
如果输入的文本是 “ChatGPT is a powerful AI model for natural language processing.”,模型可能会将其分解成以下 token:
- “Chat”
- “GPT”
- " is"
- " a"
- " powerful"
- " AI"
- " model"
- " for"
- " natural"
- " language"
- " processing"
- “.”
在生成阶段,模型根据已经生成的 token 预测下一个 token。例如,当生成 “ChatGPT is a” 之后,模型可能会预测出 " powerful" 作为下一个 token。
Token 的计数规则
在 ChatGPT 中,token 的计数包含:
- 输入的 token:这是用户输入的文本中所有 token 的数量。
- 输出的 token:这是模型生成的回复中的 token 数量。
一个对话的总 token 数是 输入 token + 输出 token,并且这个总数不能超过模型的最大上下文长度。例如,如果 GPT-4 的上下文窗口是 8 , 000 8,000 8,000个 token,而用户输入了 4 , 000 4,000 4,000个 token,则模型最多能生成 4 , 000 4,000 4,000个 token 的回复,超过的部分将无法处理。
Token 与费用
在使用 OpenAI 的 API 时,API 的费用是按处理的 token 数量收费的。这包括:
- 用户的输入 token 数。
- 模型生成的输出 token 数。
例如,如果某次对话使用了 500 500 500个输入 token 和 1 , 000 1,000 1,000个输出 token,则总共使用了 1 , 500 1,500 1,500个 token。
9. 总结
Token 是自然语言处理中的基础单位,表示文本的最小构成单元。通过 Tokenization,原始文本被拆分成 token 序列,供机器学习模型进行处理。Token 的形式可以是词、子词或字符,而具体的分词方法则视任务需要和语言特性而定。
更多推荐
所有评论(0)