type
status
date
slug
summary
tags
category
icon
password
前言: 这算是我的大模型系列的第一篇。这一系列的目的主要是为了讲明白大模型的一些基本架构和方法,不会涉及智能体的设计和开发。既然是一切的开始,我们不妨从第一步开始讲起,也就是从文字到token这一步。本文旨在介绍一些与token有关的基本概念,
 

一、简介

Token,单纯从字义上翻译,意味着“标志;象征;代币”。这就是为什么我的封面采用了一个代币。
 
举个例子,在读书时期,每个人在班级里都会拥有一个学号。通过这个学号,你的姓名、特征等等一切信息都被概括进了这个简单的数字里。当别人提起“13号”的时候,大家就会意识到“哦,这是小明,他是一个怎样的人。”因此,13号就成为了小明的象征,也就是小明的token是13。
 
对于文字来说,这也是一样的。我们需要将文字转换成一个数学上的标志,从而让计算机能够理解。例如一句简短的英文“Hello World”。如果我们假定1代表”Hello‘,而2代表“World”,那么这个简单的句子就变成了一个列表[1,2]。如果我们有一个表格记录了哪个单词对应哪个token,任何的句子理应都能转换为token的列表,列表的长度就是单词的长度。
 
这是一个非常简单且直观的示例。但这种简单粗暴的方法对于实际应用而言却存在几个严重的问题,我们接下来仔细讨论一下。

 

二、Token的实践

前文提到,对每个英文单词标注一个token是一个可行的方式,但这种方式存在实践方面的问题:
  1. 词表太大
  1. 符号
  1. 其他语言
 
我们来一一阐释这些问题是怎么产生的,又该如何解决。

挑战一、词表太大

我们知道,英语单词的数量是非常庞大的。根据网络上的资料,目前英语至少存在25w的单词,如果包括各种变形,单词数量会更加庞大。这就意味着我们不能简单地通过空格或是特殊符号来拆分单词。我们需要一种更泛用的分词规则。
 
一个简单的思想是,我们对单词内部再进行拆分。例如单词“localization”可以被拆分为“local”和”ization”。尽管这种方式可能会破坏单词原有的意思,“本土化”被分为了“当地的”和一个名词后缀,但我们可以看到它们最终组合的意思仍然是相近的。
GPT-3对localization的编码
GPT-3对localization的编码
通过分词的方式,我们能够极大地缩减词表所需要囊括的单词数量。目前而言,基于英文的BERT-base的词表是30522个,GPT-3使用的是50257个,GPT-4据推测大概有10w个。

挑战二、符号处理

我们知道,特殊符号也代表着重要的语义,例如“收到?”和“收到!”一个表疑问,一个表确定。因此,对特殊符号进行分词(tokenize)也是非常必要的。但是,对于某些隐式的特殊符号,例如句首、换行、空格,我们又应该如何处理呢?
 
目前阶段而言,还没有一个统一的范式,每种方法似乎都有自己的一套分词规范。尽管存在一些类似的范式,但细节上不会很一致。例如,GPT系列会将空格绑定到单词前面作为一个独立的token,也就是说” hello”和”hello”对应的不是一个token(用的都是BBPE),而基于wordpiece的bert-base会将空格删除,并在句首和句尾插入单独的标识符。关于BPE、wordpiece不同的分词器(tokenizer),我会在之后的文章介绍。

挑战三、不同语言

以上的方式都是基于英文的,而英文的一个特点是可以通过空格等符号分割单词。但对于像中文这样的语言,我们应该如何分词呢?
一个直观的想法是,既然大家都是用的unicode编码,我直接用unicode编码表示中文就可以了,比如就用utf-8。这样一来,我们也不用处理空格之类的问题,所有的字符都转换为二进制编码,一视同仁的看做字节,然后通过某种固定的算法分词,最后形成我们的词表和token。这其实就是BBPE之类的方法的思想。
 
现阶段各个模型都选择有自己的tokenizer,不同的tokenizer最后导致的词表不同,分词结果自然也不同。HuggingFace上有一个很好用的演示面板,我贴在下面,大家有兴趣可以去试一试,看看各家模型究竟是怎么分词的。

 

三、总结

简短地总结一下,分词的过程就是把一个个语义片段(例如一个单词)从一整串文本中分离出来,并将每一个片段对应到一个相应的数字标识(token),最后形成一张词表。每种分词器(tokenizer)根据自己的算法会有不同的分词方式,从而得到不同的词表。
 
关于分词器的详细介绍(语义片段是如何拆分的,词表是如何构成的等),我会留到之后的文章进行介绍。希望通过这篇文章,即使你对相关领域一无所知,也能够对大模型里的token有一个基本的认知和了解。
 
Langgraph中几种流输出模式总结机器学习中的常用指标(一)
Loading...
HeartBird
HeartBird
Learning AI
最新发布
LangGraph案例分享:Build.inc
2025-5-4
【大模型基础系列】一、从了解Token开始
2025-5-4
期末碎碎念
2025-5-4
Langgraph中几种流输出模式总结
2025-4-14
机器学习中的常用指标(一)
2025-4-6
最初的随笔
2025-4-4