Transformer 通关秘籍1:什么是 token?

可以说,学习自然语言处理、大模型、Transformer 任何一个技术,都离不开 token这个概念。

本专栏就从这个最基础的概念开始讲起。

多年前,第一次接触到自然语言处理模型 BERT。当时在评估这个模型的性能时,领导说这个模型的性能需要达到了 200 token 每秒,虽然知道这是一个性能指标,但是对 token 这个概念却不是很清晰。

因为当时接触视觉模型多一些,在视觉模型的性能评估中,有一个关键指标叫做 fps(Frames Per Second),通俗理解就是一秒钟可以处理的图片数。

fps 数值越大,说明模型吞吐性能越好。

而在语言或者文本模型中,模型处理的不再是图片,而是一个个的文字(单词),这其中,token 便是一个最基础的概念了。 作为本专栏的第一篇文章,有必要先来学习一下到底什么是 token?

什么是 token?

在计算机相关领域中,token 通常是指一串字符或符号。 比如微信公众平台的密钥,就被称作一个 token,其实就是一长串的字符串。

在人工智能领域,尤其是自然语言处理(Natural Language Processing, NLP)领域中, "token" 指的是处理文本时所能处理的最小单元或基本元素。

它可以是一个单词、一个词组、一个标点符号、一个子词或者一个字符。

目前很多大模型的收费定价都是以 token 为单位,比如 OpenAI 的 GPT4 模型的收费标准为:1K 个 token 收费 0.01 刀。

如果你使用 OpenAI 提供的 GPT4 接口做程序开发,你需要给他们付费。

假设你做文本生成的任务,让模型帮你写小作文,这个收费标准大概就是写 1k(1024)个字,就要收你 0.01 刀(7分钱)。

如何理解 token ?

假设你现在让 AI 模型处理下面的一句话:"I love natural language processing!" 。

模型并不会直接认识这句话是什么意思,而是需要先将这句话拆解成一个个的 token 序列,比如这个句子可以被分解成以下的 tokens:

● "I"

● "love"

● "natural"

● "language"

● "processing"

● "!"

最后的标点符号同样是一个 token,这样模型看到的就是基本的 token 单元,这样有助于 AI 模型理解句子的结构和含义。

如何拆分 token 呢?

在语言模型的任务中,处理文本之前,需要先将文本进行 tokenization,也就是将文本 token 化,然后再对这些 tokens 进行操作。

目前有很多算法可以完成这个 tokenization 的过程,这里先不展开。

看到这里你可能会问,一个 token 不就是一个单词吗?

当然不是,token 和单词不是一一对应的关系,并不是说文章有 1000 字,就会有1000 个 token。

就像上面说的,一个 token 可以是一个单词,也可以是一个词组或者一些子词。

比如在 tokenization 阶段,可能会把 "New York City" 这三个单词当做一个 token,因为这三个单词合在一起具有特定的意思,叫做:纽约市。

还可能把 "debug" 这个单词看作两个 token,分别为"de" 和 "bug",这样模型可能知道 "de" 前缀代表"减少"的意思。

如果再遇到诸如 "devalue "时,就会把它直接分为两个 token,分别是 "de"和 "value",并且可以知道 devalue 代表"减少价值"的意思。

这样的 token 就属于单词中的子词。

这样做有很多好处,其中一个好处便是模型不需要记住太多的词,否则,模型可能需要记住"bug"、"debug","value","devalue"四个token,而一旦将词分成子词,模型只需要记住"bug"、"value" 和 "de" 这三个 token 即可,而且还可以扩展识别出 "decrease "的意思。

看到这你应该理解了吧,一个 token 可能会代表一个单词,也可能会是一个词组,或者字符和标点符号。

这里有一个全程一站式的 Transformer 讲解和实战辅导,带你从零手写一个可对话的大模型,点击链接查看详情从零手写大模型实战

一个有趣的测试

有个很简单的方法可以测试一下模型在处理文本时,是否是按照 token 为最小单位来处理的。

你可以利用一个大模型,比如 chatGPT 3.5,让它来对一小段文本进行反转操作。

可以看到,句子中的"一个"反转之后仍然是"一个",而不是"个一"。

这可能就是因为在模型处理这段文本时,"一个" 被当做了一个 token 来对待,而这又是一个基本单元,无法再进一步拆分完成反转。

而如果使用 GPT-4 来进行同样的实验,可以看到它已经把这个问题修复了。

这是因为 GPT-4 中大幅更新了逻辑推理能力,在更复杂的场景下它甚至会自己边写代码来完成复杂的逻辑的推理。

如果你有 chatGPT 的使用环境,可以测试一下看它是否可以将句子反转过来。

总的来说,token 可以理解为自然语言模型处理文本的最小单位。

它不一定是一个单词,可能是一个词组,也可能是一些前缀如"de",也可能是一些标点(比如感叹号可能代表更加强烈的感情)等。

知道了 token 是什么,那么 token / s 的意思就很简单了,这个单位就代表了模型一秒钟可以处理的 token 的个数。

这个数字越大,说明模型处理文本的速度更快,无论是识别文本,还是输出文本,用户用起来,也就更加流畅。

本节仅需要了解 token 这个概念即可,相关细节在后面继续学习。

我创建了一个《小而精的AI学习圈》知识星球,星球上有几十万字原创高质量的技术专栏分享,同时你也可以在星球向我提问。 点击这里,我们星球见! 点击这里查看所有 AI 技术专栏

相关推荐
fqsword12 分钟前
C++ 算法竞赛STL以及常见模板
c++·算法
曦月逸霜18 分钟前
第五次CCF-CSP认证(含C++源码)
数据结构·c++·算法·ccf-csp
机器学习社区41 分钟前
QwQ-32B 开源!本地部署+微调教程来了
深度学习·算法·面试·大模型·面试题
Illusionna.1 小时前
KMP 算法的 C 语言实现
c语言·数据结构·算法
dokii11 小时前
leetcode454 四数相加
算法·哈希算法·散列表
阿巴~阿巴~1 小时前
C/C++蓝桥杯算法真题打卡(Day3)
c语言·c++·算法·蓝桥杯
QQ12971579401 小时前
51单片机 矩阵
单片机·嵌入式硬件·深度学习·算法·硬件工程·集成学习
<但凡.1 小时前
题海拾贝:P9241 [蓝桥杯 2023 省 B] 飞机降落
数据结构·算法·蓝桥杯
被AI抢饭碗的人1 小时前
算法题(90):队列安排
算法
Spring小子1 小时前
蓝桥杯[每日两题] 真题:好数 神奇闹钟 (java版)
java·数据结构·算法·蓝桥杯