什么是Tokens?语言模型是如何输出Tokens的?
一、什么是Token?
在自然语言处理中,Token(标记) 是指将文本分解成的基本单元。它可以是一个字、一个词,或者一个子词,具体取决于模型使用的分词算法。
以英文为例:
- 单词 "chatGPT" 可能被分解成两个Token:"chat" 和 "GPT"
- 单词 "unbelievable" 可能被分成:"un", "believ", "able"
在中文中,由于没有明显的空格分词,模型通常采用基于字符或拼音的子词分词方法。例如:
- “人工智能”可能被视为一个整体Token,也可能被拆分为“人工”和“智能”两个Token。
二、Token的作用
Tokens 是大语言模型处理语言的基础单位。模型无法直接理解整段文本,而是需要将文本转化为一串Token进行处理。这些Token会被映射为向量(Embedding),作为模型的输入。
三、模型如何生成Token?
模型生成Token的过程如下:
- 编码输入:将用户的原始文本通过Tokenizer(分词器)转化为一串Token ID。
- 模型推理:将这些Token ID输入到Transformer等神经网络架构中,模型根据上下文预测下一个最可能出现的Token。
- 采样或解码策略:
- 贪婪解码(Greedy):每一步都选择概率最高的Token。
- Top-k采样:从前k个概率最高的Token中随机选择。
- Top-p采样(Nucleus):从概率累积为p的一组Token中随机选择。
- 反编码输出:将生成的Token序列转化为可读文本。
四、Token与使用费用的关系
在OpenAI等平台中,Token也是计费单位。例如:
- 英文中一个Token大约等于4个字符或0.75个单词
- 中文中一个汉字通常是一个Token
以GPT-4为例,每百万Token的处理成本会影响调用API的价格。
五、举例说明
假设你输入了一段文本:“今天天气真好,我想去公园散步。”
这可能会被分成如下Token:
["今天", "天气", "真", "好", ",", "我", "想", "去", "公园", "散步", "。"]
然后模型可能预测下一个Token是“拍照”,于是输出“拍照”,继续生成句子。
这种“逐Token”生成过程使得模型能够在每一步调整生成结果,实现连贯和上下文相关的输出。