one-hot编码VS对象嵌入表示
独热编码(One-Hot Encoding)和嵌入表示(Embedding)是机器学习中对类别数据进行数值化的两种方式,它们在数学上存在等价性。具体来说,独热编码可以被视为一种特殊的嵌入表示,其中每个类别被映射到一个唯一的、正交的向量。
1. 独热编码(One-Hot Encoding)
-
定义:将类别变量转换为二进制向量,每个类别对应向量中的一个位置(索引),该位置值为1,其余位置为0。
例如,对于类别集合{猫, 狗, 鸟}
:- 猫 → [1, 0, 0]
- 狗 → [0, 1, 0]
- 鸟 → [0, 0, 1]
-
特点:
- 向量维度等于类别数量 ( C )。
- 所有向量两两正交(内积为0),即任意两个类别之间的距离相等。
2. 嵌入表示(Embedding)
-
定义:将类别映射到低维连续向量空间,每个类别对应一个可学习的向量(嵌入向量)。
例如,将{猫, 狗, 鸟}
映射到二维空间:- 猫 → [0.2, 0.8]
- 狗 → [0.7, 0.3]
- 鸟 → [0.4, 0.6]
-
特点:
- 列的数量就像是每个类的特征比重,比如第一列可以是“动物体型”,第二列可以是“运动敏捷性”(只是人为理解,实际上机器不知道这个)
- 向量维度 ( d ) 通常远小于类别数量 ( C )(如 ( d=50 ) 或 ( 100 ))。
- 嵌入向量通过模型训练学习得到,语义相近的类别可能在向量空间中更接近。
3. 独热编码等价于特殊的嵌入表示
当满足以下条件时,独热编码可以被视为嵌入表示的特例:
- 嵌入维度等于类别数量(( d = C ))。
- 嵌入矩阵为单位矩阵:每个类别对应的嵌入向量是单位矩阵的一行。
4. 为什么说“为每个对象选择不同的嵌入表示”?
- 核心逻辑:独热编码确保每个类别对应的向量是唯一的(即不同的),且彼此正交。
- 嵌入视角:若将独热向量视为嵌入矩阵的行,则每个类别确实被分配了一个“不同的嵌入表示”。
- 等价性:独热编码是嵌入表示的一种极端情况,其中:
- 嵌入空间维度等于类别数。
- 嵌入向量之间的距离最大化(正交)。
- 无需学习(嵌入矩阵固定为单位矩阵)。
5. 实际应用中的差异
尽管数学上等价,但两者在实际应用中有显著区别:
特性 | 独热编码 | 嵌入表示 |
---|---|---|
维度 | 高(等于类别数 ( C )) | 低(自定义维度) |
参数学习 | 无需学习 | 需要通过数据学习嵌入矩阵 |
语义表达 | 无(所有类别等距) | 有(相似类别向量更接近) |
计算效率 | 高(稀疏矩阵运算) | 较低(密集矩阵运算,但维度更低) |
适用场景 | 类别数较少,或线性模型 | 类别数较多,或深度学习模型 |
总结
独热编码可以被视为嵌入表示的一种特殊情况,其中:
- 每个类别被映射到一个唯一的、正交的向量。
- 嵌入矩阵是单位矩阵,无需学习。
这种等价性揭示了两者的数学联系,但实际应用中,嵌入表示因其低维和语义表达能力,更适合处理大规模类别数据(如自然语言处理中的词表)。