一、什么是Embedding

简单来说,Embedding 就是用一个数值向量“表示”一个对象(Object)的方法,这里说的对象可以是一个词、一个物品,也可以是一部电影等等。一个物品能被向量表示,是因为这个向量跟其他物品向量之间的距离反映了这些物品的相似性。更进一步来说,两个向量间的距离向量甚至能够反映它们之间的关系。这个解释听上去可能还是有点抽象,那我们再用两个具体的例子解释一下。

上图是 Google 著名的论文 Word2vec 中的例子,它利用 Word2vec 这个模型把单词映射到了高维空间中,每个单词在这个高维空间中的位置都非常有意思,左图从 king 到 queen 的向量和从 man 到 woman 的向量,无论从方向还是尺度来说它们都异常接近。这说明词 Embedding 向量间的运算能够揭示词之间的性别关系。比如 woman 这个词的词向量可以用下面的运算得出:

Embedding(woman)=Embedding(man)+[Embedding(queen)-Embedding(king)]

同样,右图从 walking 到 walked 和从 swimming 到 swam 的向量基本一致,这说明词向量揭示了词之间的时态关系。

那 Netflix 应用的电影 Embedding 向量方法,就是一个非常直接的推荐系统应用。从 Netflix 利用矩阵分解方法生成的电影和用户的 Embedding 向量示意图中,我们可以看出不同的电影和用户分布在一个二维的空间内,由于Embedding 向量保存了它们之间的相似性关系,因此有了这个 Embedding 空间之后,我们再进行电影推荐就非常容易了。具体来说就是,我们直接找出某个用户向量周围的电影向量,然后把这些电影推荐给这个用户就可以了。这就是 Embedding 技术在推荐系统中最直接的应用。

二、Embedding 技术又在特征工程中的作用

  1. 首先,Embedding 是处理稀疏特征的利器。因为推荐场景中的类别、ID 型特征非常多,大量使用 One-hot 编码会导致样本特征向量极度稀疏,而深度学习的结构特点又不利于稀疏特征向量的处理,因此几乎所有深度学习推荐模型都会由 Embedding 层负责将稀疏高维特征向量转换成稠密低维特征向量。所以说各类 Embedding 技术是构建深度学习推荐模型的基础性操作。
  2. 其次,Embedding 可以融合大量有价值信息,本身就是极其重要的特征向量 。 相比由原始信息直接处理得来的特征向量,Embedding 的表达能力更强,特别是 Graph Embedding 技术被提出后,Embedding 几乎可以引入任何信息进行编码,使其本身就包含大量有价值的信息,所以通过预训练得到的 Embedding 向量本身就是极其重要的特征向量。

这两个特点也是我们为什么把 Embedding 的相关内容放到特征工程篇的原因,因为它不仅是一种处理稀疏特征的方法,也是融合大量基本特征,生成高阶特征向量的有效手段。

三、Word2vec

1.什么是Word2vec

Word2vec 是“word to vector”的简称,顾名思义,它是一个生成对“词”的向量表达的模型。想要训练 Word2vec 模型,我们需要准备由一组句子组成的语料库。假设其中一个长度为 T 的句子包含的词有 w1,w2……wt,并且我们假定每个词都跟其相邻词的关系最密切。根据模型假设的不同,Word2vec 模型分为两种形式,CBOW 模型(左图)和 Skip-gram 模型(右图)。接下来以 Skip-gram 作为框架,来讲 Word2vec 的模型细节。

其中,CBOW 模型假设句子中每个词的选取都由相邻的词决定,因此我们就看到 CBOW 模型的输入是 wt周边的词,预测的输出是 wt。Skip-gram 模型则正好相反,它假设句子中的每个词都决定了相邻词的选取,所以可以看到 Skip-gram 模型的输入是 wt,预测的输出是 wt周边的词。按照一般的经验,Skip-gram 模型的效果会更好一些,接下来以 Skip-gram 作为框架,说明Word2vec 的模型细节。

2.Word2vec 的样本是怎么生成的

作为一个自然语言处理的模型,训练 Word2vec 的样本当然来自于语料库,比如我们想训练一个电商网站中关键词的 Embedding 模型,那么电商网站中所有物品的描述文字就是很好的语料库。我们从语料库中抽取一个句子,选取一个长度为 2c+1(目标词前后各选 c 个词)的滑动窗口,将滑动窗口由左至右滑动,每移动一次,窗口中的词组就形成了一个训练样本。根据 Skip-gram 模型的理念,中心词决定了它的相邻词,我们就可以根据这个训练样本定义出 Word2vec 模型的输入和输出,输入是样本的中心词,输出是所有的相邻词。
例如:
选取了句子“Embedding 技术对深度学习推荐系统的重要性”作为句子样本。
首先,我们对它进行分词、去除停用词的过程,生成词序列,再选取大小为 3 的滑动窗口从头到尾依次滑动生成训练样本,然后我们把中心词当输入,边缘词做输出,就得到了训练 Word2vec 模型可用的训练样本。

3.Word2vec模型结构

Word2vec模型的结构本质上就是一个三层的神经网络

它的输入层和输出层的维度都是 V,这个 V 其实就是语料库词典的大小。假设语料库一共使用了 10000 个词,那么 V 就等于 10000。根据训练样本,这里的输入向量自然就是由输入词转换而来的 One-hot 编码向量,输出向量则是由多个输出词转换而来的 Multi-hot 编码向量,显然,基于 Skip-gram 框架的 Word2vec 模型解决的是一个多分类问题。

隐层的维度是 N,N 的选择就需要一定的调参能力了,我们需要对模型的效果和模型的复杂度进行权衡,来决定最后 N 的取值,并且最终每个词的 Embedding 向量维度也由 N 来决定。最后是激活函数的问题,这里我们需要注意的是,隐层神经元是没有激活函数的,或者说采用了输入即输出的恒等函数作为激活函数,而输出层神经元采用了 softmax 作为激活函数
。因为这个神经网络其实是为了表达从输入向量到输出向量的这样的一个条件概率关系

这个由输入词 WI 预测输出词 WO 的条件概率,其实就是 Word2vec 神经网络要表达的东西。我们通过极大似然的方法去最大化这个条件概率,就能够让相似的词的内积距离更接近,这就是我们希望 Word2vec 神经网络学到的。

4.从 Word2vec 模型中提取词向量

在训练完 Word2vec 的神经网络之后,每个词对应的 Embedding 向量就藏在输入层到隐层的权重矩阵 WVxN

输入向量矩阵 WVxN 的每一个行向量对应的就是我们要找的“词向量”。比如我们要找词典里第 i 个词对应的 Embedding,因为输入向量是采用 One-hot 编码的,所以输入向量的第 i 维就应该是 1,那么输入向量矩阵WVxN 中第 i 行的行向量自然就是该词的 Embedding 。

输出向量矩阵 W′ 也遵循这个道理,但一般来说,我们还是习惯于使用输入向量矩阵作为词向量矩阵。在实际的使用过程中,我们往往会把输入向量矩阵转换成词向量查找表(Lookup table,如下图所示)。例如,输入向量是 10000 个词组成的 One-hot 向量,隐层维度是 300 维,那么输入层到隐层的权重矩阵为 10000x300 维。在转换为词向量 Lookup table 后,每行的权重即成了对应词的 Embedding 向量。如果我们把这个查找表存储到线上的数据库中,就可以轻松地在推荐物品的过程中使用 Embedding 去计算相似性等重要的特征了。

5.Word2vec 对 Embedding 技术的奠基性意义

Word2vec 是由谷歌于 2013 年正式提出的,其实它并不完全是原创性的,学术界对词向量的研究可以追溯到 2003 年,甚至更早的时期。但正是谷歌对 Word2vec 的成功应用,让词向量的技术得以在业界迅速推广,进而使 Embedding 这一研究话题成为热点。毫不夸张地说,Word2vec 对深度学习时代 Embedding 方向的研究具有奠基性的意义。从另一个角度来看,Word2vec 的研究中提出的模型结构、目标函数、负采样方法、负采样中的目标函数在后续的研究中被重复使用并被屡次优化。掌握 Word2vec 中的每一个细节成了研究 Embedding 的基础。

四、Item2Vec

Item2Vec是Word2vec 方法的推广,在 Word2vec 诞生之后,Embedding 的思想迅速从自然语言处理领域扩散到几乎所有机器学习领域,推荐系统也不例外。既然 Word2vec 可以对词“序列”中的词进行 Embedding,那么对于用户购买“序列”中的一个商品,用户观看“序列”中的一个电影,也应该存在相应的 Embedding 方法。于是,微软于 2015 年提出了 Item2Vec 方法,它是对 Word2vec 方法的推广,使 Embedding 方法适用于几乎所有的序列数据。Item2Vec 模型的技术细节几乎和 Word2vec 完全一致,只要能够用序列数据的形式把我们要表达的对象表示出来,再把序列数据“喂”给 Word2vec 模型,我们就能够得到任意物品的 Embedding 了。Item2vec 的提出对于推荐系统来说当然是至关重要的,因为它使得“万物皆 Embedding”成为了可能。对于推荐系统来说,Item2vec 可以利用物品的 Embedding 直接求得它们的相似性,或者作为重要的特征输入推荐模型进行训练,这些都有助于提升推荐系统的效果。

五、总结

Embedding 基础相关推荐

  1. 【王喆-推荐系统】(task3)Embedding基础(特征工程篇)

    学习心得 (1)Word2vec 的研究中提出的模型结构.目标函数.负采样方法.负采样中的目标函数在后续的研究中被重复使用并被屡次优化.掌握 Word2vec 中的每一个细节成了研究 Embeddin ...

  2. 【赠书】深入浅出embedding:原理解析与应用实践

    ‍‍ Embedding(嵌入)是当下人工智能领域的热点,并发挥着越来越重要的作用.本书从Embedding基础概念和方法讲起,逐渐深入其原理,并以应用实例作为辅助,是快速了解并掌握Embedding ...

  3. Kaggle知识点:对比学习基础

    对比表示学习的目标是学习一个嵌入空间,其中相似的样本对彼此靠近,而不同的样本对相距很远.对比学习可以应用于有监督和无监督设置.在处理无监督数据时,对比学习是自监督学习中最强大的方法之一. 对比学习损失 ...

  4. 深度学习中不得不学的Graph Embedding方法

    原文链接:https://zhuanlan.zhihu.com/p/64200072 深度学习中不得不学的Graph Embedding方法 王喆 ​ 数据挖掘等 3 个话题下的优秀答主 ​ 关注他 ...

  5. 推荐系统中的Embedding

    推荐系统之Embedding 一.什么是embedding? 1. 让embedding空前流行的word2vec: 2. 从word2vec到item2vec 二.Graph Embedding 1 ...

  6. Graph Embedding:word2vec更进一步?

    word2vec和由其衍生出的item2vec是embedding技术的基础性方法,但二者都是建立在"序列"样本(比如句子.推荐列表)的基础上的.而在互联网场景下,数据对象之间更多 ...

  7. Embedding技术在推荐系统中的应用

    编辑:子墨为客 来源:<深度学习推荐系统>笔记,并进行补充和说明 1.Embedding 是什么 Embedding是用一个低维稠密的向量来"表示"一个对象(这里的对象 ...

  8. Embedding技术

    1.Embedding 是什么 Embedding是用一个低维稠密的向量来"表示"一个对象(这里的对象泛指一切可推荐的事物,比如商品.电影.音乐.新闻等),同时表示一词意味着Emb ...

  9. 读书笔记-深度学习推荐系统4-推荐与embedding

    本篇结合了书籍 <深度学习推荐系统>和吴恩达老师的视频课程 <Natural Language Processing and Word Embeddings>. embeddi ...

最新文章

  1. Java项目:实现权限管理系统(java+SpringBoot+MyBatis+AOP+LayUI+Mysql)
  2. 语言相关系数显著性_相关性分析在SPSS中的具体操作,一文读懂相关系数的含义及使用——【杏花开生物医药统计】...
  3. 不知道工作组名称怎样加入_剩米饭不知道怎样做?试试泡菜炒饭,再也不用担心米饭做多了...
  4. Python学习day07 - Python进阶(1) 内置方法
  5. Ubuntu12.04下apache服务器的安装也配置
  6. mysql的动态建表_mysql数据库动态创建表的实例分享
  7. java开源代码生成器_人人开源之代码生成器(renren-generator)
  8. 蚂蚁课堂:lombok
  9. win7耳机插前面没声音_win7电脑音箱没声音如何解决 win7电脑音箱没声音解决方式【图解】...
  10. Java:计算代码耗时的5种方法
  11. css 网站大背景(按比例缩放背景图片)
  12. mac如何共享windows的打印机
  13. eclise导入已存在工程报 Faceted Project Problem 错误
  14. 验证元素的唯一性(二重循环法和快排优化)
  15. 创建永久库和临时库以及@@的作用
  16. 英语b计算机考试成绩查询成绩查询,大学英语b成绩查询
  17. iphone 应用程序设置和默认设置
  18. 制作画中画特效,把视频嵌到另一个视频画面任意位置
  19. 7.Java基础之集合框架+JDK8新特性
  20. 1.4 - 数据类型/字符编码练习题

热门文章

  1. JS实现的淘宝购物车
  2. 施努卡:机器视觉项目(机器视觉解决方案深圳)
  3. 磁盘阵列RAID理解
  4. 纯CSS实现的非常酷的卡通肖像和眨眼动效
  5. 51的矩阵键盘(4*4)的原理与实现
  6. PS制作有弧度的角图片 办法一
  7. 微信公众号,接口服务配置url验证失败的问题
  8. Linux时间变慢解决方法
  9. 智能移动出行带来更美好的未来——美国智能交通协会交通政策(附下载)
  10. ArcGIS 实验理论基础十四 空间数据库的建立