当前位置: 首页 > news >正文

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. 独热编码等价于特殊的嵌入表示

当满足以下条件时,独热编码可以被视为嵌入表示的特例:

  1. 嵌入维度等于类别数量(( d = C ))。
  2. 嵌入矩阵为单位矩阵:每个类别对应的嵌入向量是单位矩阵的一行。

4. 为什么说“为每个对象选择不同的嵌入表示”?

  • 核心逻辑:独热编码确保每个类别对应的向量是唯一的(即不同的),且彼此正交。
  • 嵌入视角:若将独热向量视为嵌入矩阵的行,则每个类别确实被分配了一个“不同的嵌入表示”。
  • 等价性:独热编码是嵌入表示的一种极端情况,其中:
    • 嵌入空间维度等于类别数。
    • 嵌入向量之间的距离最大化(正交)。
    • 无需学习(嵌入矩阵固定为单位矩阵)。

5. 实际应用中的差异

尽管数学上等价,但两者在实际应用中有显著区别:

特性独热编码嵌入表示
维度高(等于类别数 ( C ))低(自定义维度)
参数学习无需学习需要通过数据学习嵌入矩阵
语义表达无(所有类别等距)有(相似类别向量更接近)
计算效率高(稀疏矩阵运算)较低(密集矩阵运算,但维度更低)
适用场景类别数较少,或线性模型类别数较多,或深度学习模型

总结

独热编码可以被视为嵌入表示的一种特殊情况,其中:

  1. 每个类别被映射到一个唯一的、正交的向量。
  2. 嵌入矩阵是单位矩阵,无需学习。

这种等价性揭示了两者的数学联系,但实际应用中,嵌入表示因其低维和语义表达能力,更适合处理大规模类别数据(如自然语言处理中的词表)。

one-hot编码可以采用标签平滑LabelSmooth,这样可以让类别表示不那么死板。比如原来是[0,0,1,0],表示物品属于第3类,但是这样丢失了类间关系,使用标签平滑后会变成[0.02,0.01,0.94,0.03],这样还是有类间关系的,判断类别不至于那么绝对。容易看出,上述标签平滑操作就像是把one-hot编码向嵌入表示靠近一样,这也更体现了两者之间的关系。

http://www.lqws.cn/news/97543.html

相关文章:

  • Java详解LeetCode 热题 100(25):LeetCode 141. 环形链表(Linked List Cycle)详解
  • 架构设计的目标:高内聚、低耦合的本质
  • 【文献精读】Explaining grokking through circuit efficiency
  • Unity 性能优化终极指南 — GameObject 篇
  • SIFT算法详细原理与应用
  • WINDOWS 下查找指定端口的进程并解除端口占用
  • 实践深度学习:构建一个简单的图像分类器
  • LVS负载均衡
  • 【小红书】API接口,获取笔记核心数据
  • 《汇编语言》第14章 端口
  • 集成学习之Bagging,Boosting,随机森林
  • H.264编码
  • CSS基础2
  • 2025 年人脸识别技术应用备案政策已落地
  • SuperMap GIS基础产品FAQ集锦(20250603)
  • 【Linux基础知识系列】第八篇-基本网络配置
  • 大数据-277 Spark MLib - 基础介绍 机器学习算法 Gradient Boosting GBDT算法原理 高效实现
  • 数字商城小程序源码,开启便捷电商新体验
  • 大数据-276 Spark MLib - 基础介绍 机器学习算法 Bagging和Boosting区别 GBDT梯度提升树
  • 【后端架构师的发展路线】
  • Elasticsearch + Milvus 构建高效知识库问答系统《一》
  • Java高级 | (二十二)快速应用开发框架——Spring Boot
  • 小白的进阶之路系列之十二----人工智能从初步到精通pytorch综合运用的讲解第五部分
  • OpenCV CUDA模块图像处理------图像融合函数blendLinear()
  • Attention Is All You Need (Transformer) 以及Transformer pytorch实现
  • 【JavaWeb】SpringBoot原理
  • SpringBoot 自定义注解实现限流
  • 【Vmware】虚拟机安装、镜像安装、Nat网络模式、本地VM8、ssh链接保姆篇(图文教程)
  • 优化 Spring Boot API 性能:利用 GZIP 压缩处理大型有效载荷
  • 托福39-1 Early Writing Systems感悟