机器学习(三十二)— Embedding 和 One Hot 应用实践

参考文档:https://lumingdong.cn/application-practice-of-embedding-in-recommendation-system.html

1、Embedding的理解

  Embedding,即嵌入,起先源自于 NLP 领域,称为词嵌入(word embedding),主要是利用背景信息构建词汇的分布式表示,最终可以可以得到一种词的向量化表达,即用一个抽象的稠密向量来表征一个词。

  Embedding 在数学上表示一个映射(mapping),也是一个函数(function),即 𝑓:𝑋𝑌, 其中该函数是 injective(就是我们所说的单射函数,每个 𝑌 只有唯一的 𝑋 对应,反之亦然)和 structure-preserving(结构保存,比如在 X 所属的空间上 𝑋1<𝑋2, 那么映射后在 𝑌 所属空间上同理 𝑌1<𝑌2)的。那么对于 word embedding,就是将单词 word 映射到另外一个空间,其中这个映射具有 injective 和 structure-preserving 的特点。

  “嵌入” 本身是一个数学概念。我们这里通俗理解,如果将词看作是文本的最小单元,词嵌入本身是一种特别的映射过程,即将文本空间中的某个词,通过一定的方法,映射或者说嵌入到另一个数值向量空间,原来的整数全部变为实数,是用连续向量表示离散变量的方法。

  之所以称之为 embedding,是因为这种表示方法往往伴随着一种降维的意思,就像高维事物拍扁了嵌入到另一个低维空间中一样。

  Embedding 这种向量化表达过程通常伴随以下变化:高维——> 低维、稀疏——> 稠密、离散——> 连续、整数——> 实数

  不难发现,经过 Embedding 向量化表达后的数据,其实变得更加适合深度神经网络的训练和学习,也有利于工业界数据的工程化处理。高维稀疏数据对于机器学习的参数学习和相关计算都不太友好,因此通常特别稀疏的离散数据更适合使用 Embedding 代替传统 One-Hot 编码方式。

  • 高维易引发 “维度之灾”,使空间距离很难有效衡量,另外高维经常使参数数量变得非常多,计算复杂度增加,也容易导致过拟合;
  • 稀疏容易造成梯度消失,导致无法有效完成参数学习

  此外,Embedding 虽然是一种降维表示,但是却携带了语义信息,而且这种表示方式并不局限于词,可以是句子、文档、物品、人等等,Embedding 能够很好地挖掘嵌入实体间的内部关联,即便降维也能保留这种潜在关系,这简直就是 “神来之笔”,怪不得说万物皆可 Embedding。本质上来说,经过 Word Embedding 之后,各个单词就组合成了一个相对低维空间上的一组向量,这些向量之间的远近关系则由他们之间的语义关系决定。

 2、Embedding优势

因为上面提到的特性,使用 Embedding 可带来诸多好处:

  • 不丢失信息的情况下降低维度
  • 矩阵及向量运行便于并行
  • 向量空间具有物理意义,比如可以根据距离比较相似性
  • 可以在多个不同的维度上具有相似性
  • 线性规则:king - man = queen - woman

Embedding 的这种携带语义信息以及保留嵌入实体间的潜在关系的特性,使 Embedding 有了更多用武之地,例如:

  • 计算相似度,比如 man 和 woman 的相似度比 man 和 apple 的相似度高
  • 在一组单词中找出与众不同的一个,例如在如下词汇列表中:[dog, cat, chicken, boy],利用词向量可以识别出 boy 和其他三个词不是一类。
  • 直接进行词的运算,例如经典的:woman + king - man = queen
  • 表征文本,如累加得到一个文本的稠密向量,或平均表征一个更大的主体;
  • 方便聚类,会得到比使用词向量聚类更好的语义聚类效果。
  • 由于携带了语义信息,还可以计算一段文字出现的可能性,也就是说,这段文字是否通顺。

3、Embedding 和 One Hot 编码区别?

  • 在 embedding 空间中查找最近邻,这可以很好的用于根据用户的兴趣来进行推荐。
  • 2)作为监督性学习任务的输入。
  • 3)用于可视化不同离散变量之间的关系。

在深度神经网络中你如果直接接入onehot,那么你需要训练的参数维度也是爆炸式增长的,这个在深度模型中是一个困扰。所以在保留相同信息的基础上使用embedding作为输入是一个可靠的选择。 

 4、独热编码(One-hot Encoding)

定义:独热编码通常用于处理类别间不具有大小关系的特征。

独热编码的优点有以下几个:

  • 能够处理非数值属性。比如血型、性别等
  • 一定程度上扩充了特征。
  • 编码后的向量是稀疏向量,只有一位是 1,其他都是 0,可以利用向量的稀疏来节省存储空间
  • 能够处理缺失值。当所有位都是 0,表示发生了缺失。此时可以采用处理缺失值提到的高维映射方法,用第 N+1 位来表示缺失值。

当然,独热编码也存在一些缺点:

1.高维度特征会带来以下几个方面问题:

  • KNN 算法中,高维空间下两点之间的距离很难得到有效的衡量
  • 逻辑回归模型中,参数的数量会随着维度的增高而增加,导致模型复杂,出现过拟合问题
  • 通常只有部分维度是对分类、预测有帮助,需要借助特征选择来降低维度

 

posted @ 2021-03-30 20:06  深度机器学习  阅读(2332)  评论(0编辑  收藏  举报