Embedding(一下简化写为emb)是深度学习推荐领域中非常基础和关键的应用, 它直译为"向量化"或者"向量映射". 它的主要作用是:
将高维稀疏向量转换成低维稠密向量,便于上层深度神经网络处理.
书中将emb的内容分为3大部分:
- emb基础
- 介绍emb的发展演化过程
- 线上部署方式和快速服务的方法
emb是什么
刚才已经介绍过, embedding就是用一个低维稠密的向量"表示"一个对象(商品,电影,用户等等)
emb是深度学习的"核心操作",主要原因主要有以下三个:
- 推荐场景中,大量使用one-hot对类别\id型特征进行编码,导致样本特征向量季度稀疏,而深度学习的结构特点是其不利于稀疏特征向量的处理,因此通常会加入emb层,将这些高维稀疏特征胡在哪换成低维稠密向量.
- emb的表达能力强, 可以引入大量信息进行emb编码,有利于模型学习.
- emb对物品\用户相似度的计算是常用的推荐系统召回层技术.更适用于对海量备选物品进行快速"初筛".
word2vec - 经典emb方法
word to vector, 的假设是任务一句话中的相邻词之间关系紧密.即每个词都是有相邻词决定的(skip-gram),或者每个词都决定了相邻的词(cbow).
训练方法
数据: 选取长度为的滑动窗口, 从语料库中抽取一个句子,将滑动窗口有左至右滑动,每一栋一次,窗口中的词组就行成了一个训练样本,以skip-gram为例, 即为窗口中中间且需要被学习emb的词,周围的词.
目标: 极大似然估计, 我们希望所有样本的条件概率之积最大.
其中,的定义是: 我们可以把word2vec定义为一个多分类问题,那么就可以使用softmax函数.
其中, 是指被预测的中间词
(skip-gram)
word2vec的负采样训练方法
上一节给出了word2vec的模型目标和训练方法,实际上,这种方式挺不可行,如果语料库中的词的数量很多如10000个词,那么就意味着softmax层要计算10000个内积,然后根据这10000个计算误差,成本太高.
为了减轻训练的负担,通常使用负采样
的方法进行训练. 将优化目标从一个多分类问题简化成为一个近似的二分类问题:
迭代过程推导: https://www.jianshu.com/p/b05dfd48c43f
item2vec- word2vec在推荐系统领域的推广
与之前提到的word2vec不同的是数据构造方式, 将用户一段时间的点击或者其他行为作为一句话里的词
使用word2vec方法进行学习得到相应的word vector.
双塔模型
embedding方法不只item2vec, 目前比较常用的是双塔模型,将item和user分为两个nn塔进行学习. 是一种广义上的item2vec模型.
输入特征有用户行为序列生成的one-hot特征想咯昂,变成了可包含更多信息的\全面的物品特征向量.
item2vec方法的局限性
item2vec只能用序列数据,在互联网场景下大量的网络化数据时往往显得捉襟见肘.
Graph Embedding-引入更多结构信息的图嵌入技术
word2vec和item2vec使用的是"序列"样本数据, 互联网场景下, 数据对象之间更多呈现的是图结构.典型的场景是由用户行为数据
生成的物品关系图(下图b),以及由属性和实体组成的知识图谱(下图c).
传统的word2vec方式并不能直接学习图结构, GraphEmbedding(简称GE)是一个新的方向,逐渐在深度学习推荐系统里流行了起来.
GraphEmbedding是一种对图结构中的节点进行Embedding编码的方法. 生成节点的emb向量一般包含图的结构信息以及附近节点的局部相似性信息.
接下来按照书中的顺序,介绍几个常用的GE方法
DeepWalk-基础GE方法
它的思路是在物品组成的图结构上进行随机有组,产生大量的物品序列,然后将这些序列作为样本输入Word2Vec训练,得到EMb.
如上图所示,主要的算法流程为:
- 通过日志分析挖掘到用户的行为序列;
- 基于序列构建物品关系图,
- 随机游走方式产生序列,
随机游走的跳转概率为相应出边的权重除以所有出边的权重和
- 输入w2v进行训练
Node2vec-同质性和结构性权衡
DeepWalk在随机游走时使用的是比较单一的概率方式, NOde2vec考虑了图结构的同质性和结构性
,对于与起始点不同距离的节点采取不同的概率进行游走,通过调节超参控制学习的同质性和结构性
emb.
同质性
:指相近的节点尽量相似,如上图中的U和S1234是同质;
为了能够学习到同质性,需要让随机游走的过程更倾向于DFS,因为dfs更有可能通过多次跳转,游走到远方的节点上,但大概率率会在一个大的集团内部进行,使得一个集团或者社区内部的节点emb更为相似,从而更多地表达网络的"同质性";
结构性
:主要指结构上相似, 例如U和S6.
BFS能够学习结构性,主要是因为它能够在相邻节点遍历,当前节点是"局部中心节点","边缘节点","连接性节点"学到的emb也是不同的,所以能够学习到结构性.
通过节点间的跳转概率控制BFS和DFS的倾向性 , 下图所示为从t
跳转到节点v,再从v条状到周围点的概率示意图,我们针对距离起始节点t
的距离来采用不同的跳转概率,p
越小BFS概率越大学习结构性信息,q
越小DFS学习同质性信息.
EGES-阿里巴巴的综合性GE方法
之前介绍的emb方法只使用了物品id, 如果我们遇到了冷启动
即之前没有遇到过的物品或者是长尾
的物品,那么对导致没有相应的emb或者emb学习的不充分的问题. 为了解决这个问题,alibaba加入了补充信息sideinfo
来丰富embedding信息的来源,从而使没有历史行为记录的商品获得较合理的初始embedding.
EGES使用引入了与item相关的类别\价格\品牌等基础信息,得到各自的emb,再通过attention的方法将emb进行加权pooling得到最终的emb表达.
这里值得注意的是,ali采用了作为emb的权重, 主要原因是:
- 避免权重为0
- 因为梯度下降过程中有优良的数学性质.
目前业界用graphSage比较多也比较成熟
emb与推荐系统相结合
之前介绍了一些emb的常用产出方式,实际在推荐系统中emb的利用可以分为3个方面:
- 在深度学习网络中作为embedding层,完成从高位稀疏特征向量到低维稠密特征向量的转换(预训练);
- 作为与训练的embeding特征向量,与其他特征向量连接后,一同输入深度学习网络进行训练;
- 通过计算用户和物品的embe相似度,进行汇总安徽.
embedding作为推荐系统召回层的方法
这里主要介绍youtube召回模型,这个模型是业界最为基础和常用的范式,他将user的session以及属性特征送入nn中使用最后一层的emb和和item emb进行softmax学习. 最终在通过线上实时预测用户的emb与已经训练好的emb进行相似度计算得到topN召回物料.
这里值得注意的是user的emb是离线或者实时产出的(书中说是离线产出的,我认为有问题,实时产出才能实时精准表达user的emb,效果才好),同时item的emb是单独直接进入softmax的,与user session里边的item无关(有人验证过这样效果好).
关于embeding相似topN的计算
一般用LSH方法进行快速计算,不做赘述. 主要是将emb进行分桶,每次从最相似的统计计算减少计算量.
网友评论