机器学习(三十二)— 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 算法中,高维空间下两点之间的距离很难得到有效的衡量;
- 逻辑回归模型中,参数的数量会随着维度的增高而增加,导致模型复杂,出现过拟合问题;
- 通常只有部分维度是对分类、预测有帮助,需要借助特征选择来降低维度。