多模态学习( 二 )——Token与Embedding的区别:从文本到向量空间的旅程
前言
在自然语言处理(NLP)中,我们常常听到“Token”和“Embedding”这两个术语。它们看似相似,却扮演着完全不同的角色。理解它们的区别,是入门NLP模型(如BERT、GPT)的关键一步。本文将通过类比和实例,带你彻底搞懂这两个概念。
一、Token:文本的“积木块”
定义:Token是文本分割后的最小单位,相当于语言模型的“积木”。
核心作用:将人类可读的文本转换为模型可处理的离散符号。
关键特性
- 离散性:Token本身是符号(如单词、子词或字符),没有数值意义。
- 示例:句子
"Let's learn NLP!"
→ Tokens["Let", "'s", "learn", "NLP", "!"]
- 示例:句子
- 分割策略:
- 单词级:直接按空格分割(简单但词汇表庞大)。
- 子词级(如BPE算法):将长词拆分为子词(例如
"unhappy"
→["un", "happy"]
),平衡词汇表大小与语义保留。
为什么需要Token?
模型无法直接处理原始文本,Token化是将文本“翻译”为模型语言的第一步。
二、Embedding:Token的“数学化身”
定义:Embedding是将Token映射到连续向量空间的稠密向量,赋予符号数学意义。
核心作用:让模型能够计算Token之间的语义关系(如相似性、关联性)。
关键特性
- 连续性:每个Token对应一个高维浮点数向量(如300维)。
- 示例:
"cat"
→[0.2, -1.3, 0.8, ...]
- 示例:
- 语义编码:通过训练(如Word2Vec、Transformer),相似的Token向量距离更近。
- 例如:
"king" - "man" + "woman" ≈ "queen"
- 例如:
Embedding如何生成?
- 静态Embedding(如Word2Vec):每个Token的向量固定。
- 动态Embedding(如BERT):同一Token在不同上下文中的向量不同。
三、Token与Embedding的关系
处理流程
- 文本 → Token化:拆解为离散符号。
- Token → Embedding层:查表或模型生成向量。
- Embedding → 模型计算:输入神经网络进行训练或推理。
类比理解
- Token 像字母表中的字母,Embedding 则是每个字母的摩斯电码。
- Token 是书店里的书名,Embedding 是书的内容摘要。
四、常见问题
1. 为什么不用One-Hot编码代替Embedding?
One-Hot向量稀疏且维度高(词汇表多大维度就多高),无法表达语义关系;Embedding是低维稠密向量,可计算相似性。
2. 同一个Token的Embedding会变化吗?
- 在Word2Vec中不会(静态)。
- 在BERT中会(动态,依赖上下文)。
五、总结
维度 | Token | Embedding |
---|---|---|
本质 | 离散符号(文本/ID) | 连续数值向量 |
是否含语义 | 无 | 是 |
生成方式 | 分词算法(如BPE) | 训练学习(如神经网络) |
一句话记忆:
Token是文本的“形式”,Embedding是文本的“灵魂”。