Transformers从入门到精通:token和它的三种粒度

简介: 大家对于token的概念可能司空见惯了,现在的大语言模型的计费方式一般都采用输入和输出的token数量来计费。那到底什么是token,它的作用是什么?【6月更文挑战第6天】

Transformers从入门到精通:token和它的三种粒度

大家对于token的概念可能司空见惯了,现在的大语言模型的计费方式一般都采用输入和输出的token数量来计费。那到底什么是token,它的作用是什么?

1. 什么是Token?

在自然语言处理中,Token是文本预处理的基本单元,通常是指由空格、标点符号等分隔开的文本中的一个个部分,比如单词、词组、符号等。Tokenization(分词)是将文本分割成Token的过程。

2. Token和文本处理的特殊性

我们知道神经网络模型的输入和输出都是数值

  • 对于图像处理如CNN来说,图像本身就是0-255的数值,不需要额外的处理,就可以直接作为神经网络的输入
  • 而对于文本来说,本身是字符并不是数值,所以必须将字符转换为数值,输入到神经网络,神经网络的输出也是数值,最后还需要将数值转换为字符

所以文本处理的特殊性:需要一个词汇表表示神经网络预测输出的范围,通常称为vocabulary

3. tokenize三种粒度:word/subword/char

tokenization 是将文本分解成更小单位(tokens)的过程。根据分解的粒度不同,tokenization 可以分为三种主要类型:单词级(word-level)、子词级(subword-level)和字符级(character-level)。每种粒度都有其独特的优点和适用场景。

3.1. 单词级 Tokenization(Word-level Tokenization)

描述

单词级 tokenization 是将文本分解成单个单词的过程。这是最直观和常见的分词方法,尤其适用于空格显著的语言如英语。

优点

  • 直观性强:与人类的语言理解方式一致。
  • 便于操作:容易实现和理解,适合快速原型开发。

缺点

  • 词汇表庞大:需要存储大量不同的单词形式,增加存储和计算开销。
  • 处理未登录词(OOV)问题:对于未出现在训练数据中的词汇,处理能力较弱。
  • 不同语言的复杂性:对于没有明确分词符号的语言(如中文),单词级分词较为复杂。

示例

英文文本:"This is a tokenizer."
分词结果:

['This', 'is', 'a', 'tokenizer', '.']

工具

  • Python 内置 split() 函数
  • NLTK 库
  • spaCy
  • Jieba(适用于中文)

3.2. 子词级 Tokenization(Subword-level Tokenization)

描述

子词级 tokenization 是将文本分解成比单词更小的单位(子词)的过程。常见的方法有 BPE、WordPiece 和 SentencePiece。子词级 tokenization 通过分解单词,可以有效处理未登录词,并且减少词汇表大小。

优点

  • 处理未登录词:通过分解为已知子词,能够处理未登录词。
  • 减少词汇表大小:通过合并高频子词对,生成的词汇表更加紧凑。
  • 适应多语言任务:较好地处理多语言文本。

缺点

  • 实现复杂度高:实现和理解相对复杂。
  • 有时难以解释:分词结果有时不直观,不易于解释。

示例

英文文本:"unaffable"
分词结果(使用 WordPiece):

['un', 'aff', 'able']

工具

  • Byte Pair Encoding(BPE)
  • WordPiece
  • SentencePiece

3.3. 字符级 Tokenization(Character-level Tokenization)

描述

字符级 tokenization 是将文本分解成单个字符的过程。这种方法将每个字符视为独立的 token。

优点

  • 处理未登录词:最小化未登录词问题,每个字符都在词汇表中。
  • 词汇表最小:词汇表大小通常为字符集的大小,存储和计算开销最小。
  • 灵活性高:适用于所有语言和符号。

缺点

  • 上下文理解能力弱:单个字符的信息量较少,模型需要更长的上下文来理解文本。
  • 训练复杂度高:由于 token 数量多,模型训练时间较长。

示例

英文文本:"token"
分词结果:

['t', 'o', 'k', 'e', 'n']

工具

  • Python 内置 list() 函数
  • 自定义字符分割函数

4 总结

在 NLP 中,不同粒度的 tokenization 方法各有优缺点:

  • 单词级 tokenization:直观、操作简单,但词汇表大,处理未登录词能力差。
  • 子词级 tokenization:平衡了词汇表大小和处理未登录词能力,但实现复杂。
  • 字符级 tokenization:最小化未登录词问题,词汇表小,但需要处理更多的 token,总体训练复杂度高。

选择合适的 tokenization 方法取决于具体的应用场景、语言特点和计算资源。合理的 tokenization 是提升 NLP 模型性能的重要步骤之一。

目录
相关文章
|
机器学习/深度学习 自然语言处理 算法
文本摘要(text summarization)任务:研究范式,重要模型,评估指标(持续更新ing...)
本文是作者在学习文本摘要任务的过程中,根据学习资料总结逐步得到并整理为成文的相关内容。相关学习资料(包括论文、博文、视频等)都会以脚注等形式标明。有一些在一篇内会导致篇幅过长的内容会延伸到其他博文中撰写,但会在本文中提供超链接。 本文将主要列举里程碑式的重要文本摘要论文。 注意:除文首的表格外,本文所参考的论文,如本人已撰写对应的学习博文,则不直接引用原论文,而引用我撰写的博文。 本文会长期更新。
文本摘要(text summarization)任务:研究范式,重要模型,评估指标(持续更新ing...)
|
3月前
|
机器学习/深度学习 算法 搜索推荐
django调用矩阵分解推荐算法模型做推荐系统
django调用矩阵分解推荐算法模型做推荐系统
53 4
|
5月前
langchain 入门指南(三)- token的计算
langchain 入门指南(三)- token的计算
177 0
|
8月前
|
数据采集 物联网 API
LLM 大模型学习必知必会系列(五):数据预处理(Tokenizer分词器)、模板(Template)设计以及LLM技术选型
LLM 大模型学习必知必会系列(五):数据预处理(Tokenizer分词器)、模板(Template)设计以及LLM技术选型
LLM 大模型学习必知必会系列(五):数据预处理(Tokenizer分词器)、模板(Template)设计以及LLM技术选型
|
7月前
|
自然语言处理 算法
ransformers从入门到精通:常用的subword tokenizer算法
- WordPiece、BPE/BBPE最小字词进行合并最终字词,BPE/BBPE直接采用词频判断合并规则而WordPiece采用最大似然的方式 - unigram采用从最大的字词集合里移除那些对语料库整体概率贡献最小的子词【6月更文挑战第7天】
156 3
|
7月前
|
机器学习/深度学习 计算机视觉 知识图谱
【YOLOv8改进】STA(Super Token Attention) 超级令牌注意力机制 (论文笔记+引入代码)
该专栏探讨YOLO目标检测的创新改进和实战应用,介绍了使用视觉Transformer的新方法。为解决Transformer在浅层处理局部特征时的冗余问题,提出了超级令牌(Super Tokens)和超级令牌注意力(STA)机制,旨在高效建模全局上下文。通过稀疏关联学习和自注意力处理,STA降低了计算复杂度,提升了全局依赖的捕获效率。由此构建的层次化视觉Transformer在ImageNet-1K、COCO检测和ADE20K语义分割任务上展现出优秀性能。此外,文章提供了YOLOv8中实现STA的代码示例。更多详细信息和配置可在相关链接中找到。
|
数据可视化 PyTorch 算法框架/工具
量化自定义PyTorch模型入门教程
在以前Pytorch只有一种量化的方法,叫做“eager mode qunatization”,在量化我们自定定义模型时经常会产生奇怪的错误,并且很难解决。但是最近,PyTorch发布了一种称为“fx-graph-mode-qunatization”的方方法。在本文中我们将研究这个fx-graph-mode-qunatization”看看它能不能让我们的量化操作更容易,更稳定。
261 0
|
8月前
|
存储 自然语言处理 PyTorch
​5种常用于LLM的令牌遮蔽技术介绍以及Pytorch的实现
本文将介绍大语言模型中使用的不同令牌遮蔽技术,并比较它们的优点,以及使用Pytorch实现以了解它们的底层工作原理。
87 1
|
8月前
|
人工智能 测试技术 UED
论文介绍:ReALM——作为语言建模的参考解析
【4月更文挑战第8天】Apple研究员提出的ReALM框架旨在改善AI在处理上下文信息时的准确性和自然性,特别是对于屏幕内容的理解。通过将参考解析转化为语言建模,ReALM能有效编码和解析屏幕实体,提高智能助手处理用户查询的能力。实验显示,ReALM在处理屏幕、对话和背景实体参考时超越了GPT-3.5和GPT-4。尽管存在挑战,如复杂空间位置理解的局限性,但ReALM为智能助手的交互体验带来了显著提升,且其模块化设计利于升级和维护。
216 2
论文介绍:ReALM——作为语言建模的参考解析
|
SQL 缓存 数据库
10 Django模型 - 模型查询
10 Django模型 - 模型查询
66 0