AI 基础概念

Encoding 与 Embedding

从“让数据可计算”到“让语义关系可计算”

ENCODING

改变表示形式

文本 → 字节、编号或向量

EMBEDDING

表达特征与语义

对象 → 可比较的稠密向量

一句话理解

Encoding(编码)是把信息从一种表示形式转换成另一种表示形式;Embedding(嵌入)是把对象映射成一个通常由模型学习得到、可以表达特征或语义的稠密向量。

Embedding 是 Encoding 的一种,但 Encoding 不一定是 Embedding。

最简洁的区分是:Encoding 解决“如何表示”,Embedding 进一步解决“如何表达关系和语义”。

同一个“猫”,四种表示

同一份信息可以根据任务使用不同表示。下面四种结果都能让计算机处理“猫”,但只有最后一种主动把语义关系放进表示空间。

方式 示例结果 主要用途
UTF-8E7 8C AB存储与传输文本
Token ID12345让模型定位词表中的项目
One-hot[0, 0, 1, 0, ...]无歧义地标识一个类别
Embedding[0.21, -0.73, 0.44, ...]表达特征、语义与相似性

核心区别

对比维度 Encoding Embedding
目的让信息可存储、传输或计算让对象的特征和关系可计算
输出字节、编号、稀疏或稠密向量通常是固定维度的稠密浮点向量
是否学习不一定通常通过训练学习
距离的含义通常没有语义保证常用距离、夹角或点积衡量相似性
能否还原有些编码可以无损解码通常无法精确恢复原始输入

为什么向量距离很重要?

UTF-8 字节或 Token ID 主要用于标识对象。编号 1234512346 相邻,不代表对应的两个词语义相近。

Embedding 的价值在于它构造了一个可以比较的空间。训练良好时,“猫”和“狗”的向量通常比“猫”和“数据库”的向量更接近:

distance(embedding("猫"), embedding("狗"))
    < distance(embedding("猫"), embedding("数据库"))

这使语义搜索、推荐、聚类和 RAG 检索可以转化为向量运算。不过,“接近”表达什么取决于训练数据、目标函数和使用的距离度量,并不是所有 embedding 都天然理解同一种语义。

在 Transformer 中,它们分别出现在哪里?

Transformer 语境里还有一个容易混淆的词:Encoder。Tokenizer、Embedding Layer 和 Transformer Encoder 位于不同阶段,承担不同职责。

输入

原始文本

“吃苹果”

ENCODING

Token IDs

Tokenizer 切分并编号

EMBEDDING

初始向量

Embedding Layer 查表

ENCODER

上下文向量

结合句中其它 token

Token ID 是离散编号,Embedding Layer 将编号转成初始向量,Transformer Encoder 再利用上下文更新这些向量。

例如,“苹果公司”和“吃苹果”可能从相同的“苹果”初始 embedding 开始;经过上下文编码后,最终表示会分别偏向“公司”和“水果”的含义。

如何判断一个表示是不是 Embedding?

  1. 01输出是否为稠密向量?
  2. 02向量是否通过模型或数据学习得到?
  3. 03向量之间的距离是否能表达某种相似性?

如果这些条件基本成立,这个表示通常可以称为 Embedding。记住最终结论:Encoding 让数据变得可计算,Embedding 让对象之间的关系变得可计算。

评论加载中...