第 4章 Embedding 技术在推荐系统中的应⽤
Embedding, 中⽂直译为“ 嵌⼈”,常被翻译为“ 向量化” 或者 “ 向量映射”。在整个深度学习框架中,特别是以推荐、⼴告、搜索为核⼼的互联⽹领域,Embedding 技术的应⽤⾮常⼴泛,将其称为深度学习的“ 基础核⼼操作” 也不为过。
之前的章节曾多次提及 Embedding 操作,它的主要作⽤是将稀疏向量转换成稠密向量,便于上层深度神经⽹络处理。事实上,Embedding 技术的作⽤远不⽌于此,它的应⽤场景⾮常多元化,⽽且实现⽅法也各不相同。
在学术界,Embedding 本身作为深度学习研究领域的热⻔⽅向,经历了从处理序列样本,到处理图样本,再到处理异构的多特征样本的快速进化过程。在⼯业界,Embedding 技术凭借其综合信息的能⼒强、易于上线部署的特点,⼏乎成了应⽤最⼴泛的深度学习技术。本章对 Embedding 技术的介绍集中在以下⼏个⽅⾯。
(1)介绍 Embedding 的基础知识。
(2)介绍 Embedding 从经典的 Word2vec, 到热⻔的 Graph Embedding(图嵌⼈),再到多特征融合 Embedding 技术的演化过程。
(3)介绍 Embedding 技术在推荐系统中的具体应⽤及线上部署和快速服务的⽅法。
4.1 什么是 Embedding
形式上讲,Embedding 就是⽤⼀个低维稠密的向量“ 表示”⼀个对象(object),这⾥所说的对象可以是⼀个词、⼀个商品,也可以是⼀部电影,等等。其中“ 表示” 这个词的含义需要进⼀步解释。笔者的理解是 “ 表示” 意味着 Embedding向量能够表达相应对象的某些特征,同时向量之间的距离反映了对象之间的相似性。
4.1.1 词向量的例子
Embedding ⽅法的流⾏始于⾃然语⾔处理领域对于词向量⽣成问题的研究。这⾥以词向量为例进⼀步解释 Embedding 的含义。
图 4-1⑻所示为使⽤ Word2vec ⽅法编码的⼏个单词( 带有性别特征 )的Embedding 向量在 Embedding 空间内的位置,可以看出从 Embedding(king)到Embedding(queen),从 Embedding(man)到 Embedding(woman)的距离向量⼏乎⼀致,这表明词 Embedding 向量之间的运算甚⾄能够包含词之间的语义关系信息。同样,图 4-1(b)所示的词性例⼦中也反映出词向量的这⼀特点,Embedding (walking)到 Embedding(walked)和 Embedding(swimming)到 Embedding(swam)的距离向量⼀致,这表明 walking-walked 和 swimming-swam 的词性关系是⼀致的。
在有⼤量语料输⼈的前提下,Embedding 技术甚⾄可以挖掘出⼀些通⽤知识,如图 4-1©所示,Embedding(Madrid)-Embedding(Spain)=Embedding(Beijing)-Epibedding(China), 这表明 Embedding 之间的运算操作可以挖掘出 “ ⾸都-国家”这类通⽤的关系知识。
通过上⾯的例⼦可以知道,在词向量空间内,甚⾄在完全不知道⼀个词的向量的情况下,仅靠语义关系加词向量运算就可以推断出这个词的词向量。Embedding 就是这样从另外⼀个空间表达物品,同时揭示物品之间的潜在关系的,某种意义上讲,Embedding ⽅法甚⾄具备了本体论哲学层⾯上的意义。
4.1.2 Embedding 技术在其他领域的扩展
既然 Embedding 能够对“ 词” 进⾏向量化,那么其他应⽤领域的物品也可以通过某种⽅式⽣成其向量化表示。
例如 , 如果对电影进⾏ Embedding , 那么 Embedding(复仇者联盟)和Embedding( 钢铁侠)在 Embedding 向量空间内两点之间的距离就应该很近,⽽Embedding(复仇者联盟)和 Embedding(乱世佳⼈)的距离会相对远。
同理,如果在电商领域对商品进⾏ Embedding , 那么 Embedding( 键盘)和Embedding(⿏标)的向量距离应该比较近,⽽ Embedding(键盘)和 Embedding(帽⼦)的距离会相对远。
与词向量使⽤⼤量⽂本语料进⾏训练不同,不同领域的训练样本肯定是不同的,⽐如视频推荐往往使⽤⽤户的观看序列进⾏电影的 Embedding 化,⽽电商平台则会使⽤⽤户的购买历史作为训练样本。
4.1.3 Embedding 技术对于深度学习推荐系统的重要性
回到深度学习推荐系统上,为什么说 Embedding 技术对于深度学习如此重要,甚⾄可以说是深度学习的“ 基础核⼼操作” 呢?原因主要有以下三个:
( 1 )推荐场景中⼤量使⽤ one-hot 编码对类别、id 型特征进⾏编码,导致样本特征向量极度稀疏,⽽深度学习的结构特点使其不利于稀疏特征向量的处理,因此⼏乎所有深度学习推荐模型都会由 Embedding 层负责将⾼维稀疏特征向量转换成稠密低维特征向量。因此,掌握各类 Embedding 技术是构建深度学习推荐模型的基础性操作。
( 2 ) Embedding 本身就是极其重要的特征向量。相⽐ MF 等传统⽅法产⽣的特征向量,Embedding 的表达能⼒更强,特别是 Graph Embedding 技术被提出后,Embedding⼏乎可以引⼈任何信息进⾏编码,使其本身就包含⼤量有价值的信息。在此基础上,Embedding 向量往往会与其他推荐系统特征连接后⼀同输⼊后续深度学习⽹络进⾏训练。
( 3 ) Embedding 对物品、⽤户相似度的计算是常⽤的推荐系统召回层技术。在局部敏感哈希( Locality-Sensitive Hashing )等快速最近邻搜索技术应⽤于推荐系统后,Embedding 更适⽤于对海量备选物品进⾏快速“ 初筛”,过滤出⼏百到⼏千量级的物品交由深度学习⽹络进⾏ “ 精排”。
所以说,Embedding 技术在深度学习推荐系统中占有极其重要的位置,熟悉并掌握各类流⾏的 Embedding ⽅法是构建⼀个成功的深度学习推荐系统的有⼒武器。
4. 2 Word2vec 经典的 Embedding ⽅法
提起 Embedding , 就不得不提 Word2vec , 它不仅让词向量在⾃然语⾔处理领域再度流⾏,更为关键的是,⾃ 2013 年⾕歌提出 Word2vec 以来[1][2] , Embedding技术从⾃然语⾔处理领域推⼴到⼴告、搜索、图像、推荐等深度学习应⽤领域,成了深度学习知识框架中不可或缺的技术点。作为经典的 Embedding ⽅法,熟悉Word2vec 对于理解之后所有的 Embedding 相关技术和概念⾄关重要。
4.2.1 什么是 Word2vec
Word2vec 是 “word to vector” 的简称,顾名思义,Word2vec 是⼀个⽣成对“ 词” 的向量表达的模型。
为了训练Word2vec 模型,需要准备由⼀组句⼦组成的语料库。假设其中⼀个⻓度为 T 的句⼦为w1,w2,…,wT,假定每个词都跟其相邻的词的关系最密切,即每个词都是由相邻的词决定的( 图 4-2中 CBOW模型的主要原理 ),或者每个词都决定了相邻的词(图 4-2中 Skip-gram模型的主要原理 )。如图 4-2所示,CBOW模型的输⼈是wt周边的词,预测的输出是 wt, ⽽ Skip-gram则相反。经验上讲,Skip-gram的效果较好。本节以 Skip-gram为框架讲解 Word2vec模型的细节。
4.2.2 Word2vec 模型的训练过程
4.2.3 Word2vec 的“ 负采样” 训练方法
虽然 4.2.2节给出了 Word2vec 的模型结构和训练⽅法,但事实上,完全遵循原始的 Word2vec 多分类结构的训练⽅法并不可⾏。假设语料库中的词的数量为10000, 就意味着输出层神经元有 10000 个,在每次迭代更新隐层到输出层神经元的权重时,都需要计算所有字典中的所有 10000 个词的预测误差( predictionerror )[3], 在实际训练过程中⼏乎⽆法承受这样巨⼤的计算量。
为了减轻 Word2vec 的训练负担,往往采⽤负采样(Negative Sampling )的⽅法进⾏训练。相⽐原来需要计算所有字典中所有词的预测误差,负采样⽅法只需要对采样出的⼏个负样本计算预测误差。在此情况下,Word2vec 模型的优化⽬标从⼀个多分类问题退化成了⼀个近似⼆分类问题[4],如(式 4-3)所示。
4.2.4 Word2vec 对 Embedding 技术的奠基性意义
Word2vec 是由⾕歌于 2013 年正式提出的,其实它并不完全由⾕歌原创,对词向量的研究可以追溯到 2003 年[5] , 甚⾄更早。但正是⾕歌对 Word2vec 的成功应⽤,让词向量的技术得以在业界迅速推⼴,使 Embedding 这⼀研究话题成为热点。毫不夸张地说,Word2vec 对深度学习时代 Embedding ⽅向的研究具有奠基性的意义。
从另⼀个⻆度看,在 Word2vec 的研究中提出的模型结构、⽬标函数、负采样⽅法及负采样中的⽬标函数,在后续的研究中被重复使⽤并被屡次优化。掌握Word2vec 中的每⼀个细节成了研究 Embedding 的基础。从这个意义上讲,熟练掌握本节内容⾮常重要。
4.3 Item2vec—Word2vec 在推荐系统领域的推⼴
在 Word2vec 诞⽣之后,Embedding 的思想迅速从⾃然语⾔处理领域扩散到⼏乎所有机器学习领域,推荐系统也不例外。既然 Word2vec 可以对词 “ 序列”中的词进⾏ Embedding , 那么对于⽤户购买“ 序列” 中的⼀个商品,⽤户观看“ 序列” 中的⼀个电影,也应该存在相应的 Embedding ⽅法,这就是 Item2vec[6]⽅法的基本思想。
4.3.1 Item2vec 的基本原理
2.3 节的 “ 矩阵分解” 部分曾介绍过,通过矩阵分解产⽣了⽤户隐向量和物品隐向量,如果从 Embedding 的⻆度看待矩阵分解模型,则⽤户隐向量和物品隐向量就是⼀种⽤户 Embedding 向量和物品 Embedding 向量。由于 Word2vec 的流⾏,越来越多的 Embedding ⽅法可以被直接⽤于物品 Embedding 向量的⽣成,⽽⽤户 Embedding 向量则更多通过⾏为历史中的物品 Embedding 平均或者聚类得到。利⽤⽤户向量和物品向量的相似性,可以直接在推荐系统的召回层快速得到候选集合,或在排序层直接⽤于最终推荐列表的排序。正是基于这样的技术背景,微软于 2016年提出了计算物品 Embedding 向量的⽅法 Item2vec。
相⽐ Word2vec 利⽤ “ 词序列” ⽣成词 Embedding。Item2vec 利⽤的 “ 物品序列” 是由特定⽤户的浏览、购买等⾏为产⽣的历史⾏为记录序列。
通过观察( 式 4-1 ) 和( 式 4-4)的区别会发现,Item2vec 与 Word2vec 唯⼀的不同在于,Item2veC 摒弃了时间窗⼝的概念,认为序列中任意两个物品都相关,因此在 Item2veC 的⽬标函数中可以看到,其是两两物品的对数概率的和,⽽不仅是时间窗⼝内物品的对数概率之和。
在优化⽬标定义好之后,Item2vec 剩余的训练过程和最终物品 Embedding 的产⽣过程都与 Word2vec 完全⼀致,最终物品向量的查找表就是 Word2vec 中词向量的查找表,读者可以参考 4.2节 Word2vec 的相关内容来回顾具体的技术细节。
4.3.2 “ ⼴义” 的 Item2vec
事实上,Embedding 对物品进⾏向量化的⽅法远不⽌ Item2vec。⼴义上讲,任何能够⽣成物品向量的⽅法都可以称为 Item2vec。典型的例⼦是曾在百度、Facebook 等公司成功应⽤的双塔模型( 如图 4-5 所示)。
在⼴告场景下的双塔模型中,⼴告侧的模型结构实现的其实就是对物品进⾏Embedding 的过程。该模型被称为 “ 双塔模型”,因此以下将⼴告侧的模型结构称为“ 物品塔”。那么,“ 物品塔” 起到的作⽤本质上是接收物品相关的特征向量。经过物品塔内的多层神经⽹络结构,最终⽣成⼀个多维的稠密向量。从 Embedding的⻆度看,这个稠密向量其实就是物品的 Embedding 向量,只不过 Embedding模型从 Word2vec 变成了更为复杂灵活的 “ 物品塔” 模型,输⼈特征由⽤户⾏为序列⽣成的 one-hot 特征向量,变成了可包含更多信息的、全⾯的物品特征向量。⼆者的最终⽬的都是把物品的原始特征转变为稠密的物品 Embedding 向量表达,因此不管其中的模型结构如何,都可以把这类模型称为“ ⼴义” 上的 Item2vec类模型。
4.3.3 Item2vec ⽅法的特点和局限性
Item2vec 作为 Word2vec 模型的推⼴,理论上可以利⽤任何序列型数据⽣成物品的 Embedding 向量,这⼤⼤拓展了 Word2vec 的应⽤场景。⼴义上的 Item2vec模型其实是物品向量化⽅法的统称,它可以利⽤不同的深度学习⽹络结构对物品特征进⾏ Embedding 化。
Item2vec ⽅法也有其局限性,因为只能利⽤序列型数据,所以 Item2VeC 在处
理互联⽹场景下⼤量的⽹络化数据时往往显得捉襟⻅肘,这就是 GraphEmbedding 技术出现的动因。