作者:Microstrong
将门好声音第58期
Embedding , 中文直译为“嵌入” , 也可以被译为“向量化”或者“向量映射” 。 形式上来说 , Embedding就是用一个低维的向量表示一个物体 , 可以是一个词 , 一个商品 , 或是一个电影 。
作为深度学习的“ 基本核心操作” , Embedding技术已经在深度学习推荐系统中被广泛应用 , 在Youtube、Airbnb等各类推荐系统中都有涉及 。
更多Embedding技术 , 可以参考往期文章:深度学习推荐系统中各类流行的Embedding方法 (上)。
1. Graph Embedding简介
Word2Vec和其衍生出的Item2Vec类模型是Embedding技术的基础性方法 , 二者都是建立在“序列”样本(比如句子、用户行为序列)的基础上 。 在互联网场景下 , 数据对象之间更多呈现的是图结构 , 所以Item2Vec在处理大量的网络化数据时往往显得捉襟见肘 , 在这样的背景下 , Graph Embedding成了新的研究方向 , 并逐渐在深度学习推荐系统领域流行起来 。
Graph Embedding也是一种特征表示学习方式 , 借鉴了Word2Vec的思路 。 在Graph中随机游走生成顶点序列 , 构成训练集 , 然后采用Skip-gram算法 , 训练出低维稠密向量来表示顶点 。 之后再用学习出的向量解决下游问题 , 比如分类 , 或者连接预测问题等 。 可以看做是两阶段的学习任务 , 第一阶段先做无监督训练生成表示向量 , 第二阶段再做有监督学习 , 解决下游问题 。
总之 , Graph Embedding是一种对图结构中的节点进行Embedding编码的方法 。 最终生成的节点Embedding向量一般包含图的结构信息及附近节点的局部相似性信息 。 不同Graph Embedding方法的原理不尽相同 , 对于图信息的保留方式也有所区别 , 下面就介绍几种主流的Graph Embedding方法和它们之间的区别与联系 。
2. DeepWalk-Graph Embedding早期技术
早期 , 影响力较大的Graph Embedding方法是于2014年提出的DeepWalk , 它的主要思想是在由物品组成的图结构上进行随机游走 , 产生大量物品序列 , 然后将这些物品序列作为训练样本输入Word2Vec进行训练 , 得到物品的Embedding 。 因此 , DeepWalk可以被看作连接序列Embedding和Graph Embedding的过渡方法 。
文章图片
论文《Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba》用上图所示的方法展现了DeepWalk的算法流程 。 DeepWalk算法的具体步骤如下:
- 图(a)是原始的用户行为序列 。
- 图(b)基于这些用户行为序列构建了物品关系图 。 可以看出 , 物品A和B之间的边产生的原因是用户U1先后购买了物品A和物品B 。 如果后续产生了多条相同的有向边 , 则有向边的权重被加强 。 在将所有用户行为序列都转换成物品关系图中的边之后 , 全局的物品关系图就建立起来了 。
- 图(c)采用随机游走的方式随机选择起始点 , 重新产生物品序列 。
- 将这些物品序列输入图(d)所示的Word2Vec模型中 , 生成最终的物品Embedding向量 。
文章图片
其中 是物品关系图中所有边的集合 ,是节点 所有的出边集合 ,是节点 到节点 边的权重 , 即DeepWalk的跳转概率就是跳转边的权重占所有相关出边权重之和的比例 。
如果物品关系图是无向无权图 , 那么跳转概率将是上式的一个特例 , 即权重 将为常数, 且 应是节点 所有“边”的集合 , 而不是所有“出边”的集合 。
注意:在DeepWalk论文中 , 作者只提出DeepWalk用于无向无权图 。 DeepWalk用于有向有权图的内容是阿里巴巴论文《Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba》中提出的Base Graph Embedding(BGE)模型 , 其实该模型就是对DeepWalk模型的实践 , 本文后边部分会讲解该模型 。
DeepWalk相关论文:
[1] Perozzi B, Alrfou R, Skiena S, et al. DeepWalk: online learning of social representations[C]. knowledge discovery and data mining, 2014: 701-710.
[2] Wang J, Huang P, Zhao H, et al. Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba[C]. knowledge discovery and data mining, 2018: 839-848.
3. LINE-DeepWalk的改进
DeepWalk使用DFS(Deep First Search , 深度优先搜索)随机游走在图中进行节点采样 , 使用Word2Vec在采样的序列上学习图中节点的向量表示 。 LINE(Large-scale Information Network Embedding)也是一种基于邻域相似假设的方法 , 只不过与DeepWalk使用DFS构造邻域不同的是 , LINE可以看作是一种使用BFS(Breath First Search , 广度优先搜索)构造邻域的算法 。
在Graph Embedding各个方法中 , 一个主要区别是对图中顶点之间的相似度的定义不同 , 所以先看一下LINE对于相似度的定义 。
3.1 LINE定义图中节点之间的相似度
现实世界的网络中 , 相连接的节点之间存在一定的联系 , 通常表现为比较相似或者在向量空间中距离接近 。 对于带权网络来说 , 节点之间的权越大 , 相似度会越高或者距离越接近 , 这种关系称为一阶近邻 。
一阶近邻关系用于描述图中相邻顶点之间的局部相似度 , 形式化描述为若顶点 、 之间存在直连边 , 则边权 即为两个顶点的相似度 , 若不存在直连边 , 则一阶相似度为。 如下图所示 ,和 之间存在直连边 , 且边权较大(表现为图中顶点之间连线较粗) , 则认为两者相似且一阶相似度较高 , 而 和 之间不存在直连边 , 则两者间一阶相似度为。
但是 , 网络中的边往往比较稀疏 , 仅仅依靠一阶近邻关系 , 难以描述整个网络的结构 。 论文中定义了另外一种关系叫做二阶近邻 。
例如下图中的网络 , 节点 和节点 相连 , 节点 也和节点 相连 , 虽然节点 和 之间没有直接联系 , 但是节点 和 之间很可能存在某种相似性 。 举个例子 , 在社交网络中 , 如果两个人的朋友圈重叠度很高 , 或许两个人之间具有相同的兴趣并有可能成为朋友;在NLP中 , 如果不同的词经常出现在同一个语境中 , 那么两个词很可能意思相近 。
LINE通过捕捉网络中的一阶近邻关系和二阶近邻关系 , 更加完整地描述网络 。 并且LINE适用于有向图、无向图、有权图、无权图 。
文章图片
3.2 LINE算法模型
(1)一阶近邻关系模型
一阶近邻关系模型中定义了两个概率 , 一个是联合概率 , 如下公式所示:
文章图片
其中 ,是图中节点 的向量表示 , 上式表示节点 和 之间的相似程度 , 这是一个sigmoid函数 。
另外一个是经验概率 , 如下公式所示:
文章图片
其中 ,是节点 和 之间的权重 。 优化目标为最小化下式:
文章图片
其中 , 是两个分布的距离 , 目标是期望两个概率分布接近 , 利用KL散度来计算相似性 , 丢掉常数项之后 , 得到下面公式:
文章图片
一阶近邻关系模型的优化目标就是最小化。 可以看到 , 上面这些公式无法表达方向概念 , 因此一阶近邻关系模型只能描述无向图 。
(2)二阶近邻关系模型
二阶近邻关系描述的是节点与邻域的关系 , 每个节点有两个向量 , 一个是该顶点本身的表示向量 , 一个是该顶点作为其他顶点的邻居时的表示向量 , 因此论文中对每个节点定义了两个向量 ,表示节点 本身 ,是节点 作为邻居的向量表示 。 针对每一个从节点 到 的有向边, 定义一个条件概率 , 如下式:
文章图片
其中 ,是图中所有的节点数量 , 这其实是一个 函数 。 同样 , 还有一个经验概率 , 如下式:
文章图片
其中 ,是边 的边权 ,是从顶点 出发指向邻居节点的所有边权之和 ,是从节点 出发指向邻居的所有边集合 。 同样需要最小化条件概率和经验概率之间的距离 , 优化目标为:
文章图片
其中 ,为控制节点重要性的因子 , 可以通过顶点的度数或者PageRank等方法估计得到 。 假设度比较高的节点权重较高 , 令, 采用KL散度来计算距离 , 略去常数项后 , 得到公式:
文章图片
直接优化上式计算复杂度很高 , 每次迭代需要对所有的节点向量做优化 , 论文中使用Word2Vec中的负采样方法 , 得到二阶近邻的优化目标 , 如下公式所示 。 从计算的过程可以看到 , 二阶相似度模型可以描述有向图 。
文章图片
对比一阶近邻模型和二阶近邻模型的优化目标 , 差别就在于 , 二阶近邻模型对每个节点多引入了一个向量表示 。 实际使用的时候 , 对一阶近邻模型和二阶近邻模型分别训练 , 然后将两个向量拼接起来作为节点的向量表示 。
此外有一点需要说明 , 在Graph Embedding方法中 , 例如DeepWalk、Node2Vec、EGES , 都是采用随机游走的方式来生成序列再做训练 , 而LINE直接用边来构造样本 , 这也是它们的一点区别 。
LINE相关论文:
[1] Tang J, Qu M, Wang M, et al. Line: Large-scale information network embedding[C]//Proceedings of the 24th international conference on world wide web. 2015: 1067-1077.
4. node2vec - DeepWalk的改进
2016年 , 斯坦福大学的研究人员在DeepWalk的基础上更进一步 , 提出了node2vec模型 , 它通过调整随机游走权重的方法使Graph Embedding的结果更倾向于体现网络的同质性(homophily)或结构性(structural equivalence) 。
4.1 node2vec的同质性和结构性
具体的讲 , 网络的“同质性”指的是距离相近节点的Embedding应尽量近似 , 如下图所示 , 节点 与其相连的节点 的Embedding表达应该是接近的 , 这就是网络的“同质性”的体现 。
“结构性”指的是结构上相似的节点Embedding应尽量近似 , 下图中节点 和节点 都是各自局域网络的中心节点 , 结构上相似 , 其Embedding的表达也应该近似 , 这是“结构性”的体现 。
文章图片
为了使Graph Embedding的结果能够表达网络的“结构性” , 在随机游走过程中 , 需要让游走的过程更倾向于BFS , 因为BFS会更多地在当前节点的邻域中游走遍历 , 相当于对当前节点周边的网络结构进行一次“微观扫描” 。 当前节点是“局部中心节点” , 还是“边缘节点” , 或是“连接性节点” , 其生成的序列包含的节点数量和顺序必然是不同的 , 从而让最终的Embedding抓取到更多结构性信息 。
另外 , 为了表达“同质性” , 需要让随机游走的过程更倾向于DFS , 因为DFS更有可能通过多次跳转 , 游走到远方的节点上 , 但无论怎样 , DFS的游走更大概率会在一个大的集团内部进行 , 这就使得一个集团或者社区内部的节点的Embedding更为相似 , 从而更多地表达网络的“同质性” 。
但是在不同的任务中需要关注的重点不同 , 可能有些任务需要关注网络的homophily , 而有些任务比较关注网络的structural equivalence , 可能还有些任务两者兼而有之 。 在DeepWalk中 , 使用DFS随机游走在图中进行节点采样 , 使用Word2Vec在采样的序列学习图中节点的向量表示 , 无法灵活地捕捉这两种关系 。
实际上 , 对于这两种关系的偏好 , 可以通过不同的序列采样方式来实现 。 有两种极端的方式 , 一种是BFS , 如上图中红色箭头所示 , 从u出发做随机游走 , 但是每次都只采样顶点u的直接邻域 , 这样生成的序列通过无监督训练之后 , 特征向量表现出来的是structural equivalence特性 。 另外一种是DFS , 如上图中蓝色箭头所示 , 从u出发越走越远 , 学习得到的特征向量反应的是图中的homophily关系 。
4.2 node2vec算法
那么在node2vec算法中 , 是怎么控制BFS和DFS的倾向性呢?主要是通过节点间的跳转概率 。 下图所示为node2vec算法从节点 跳转到节点, 再从节点 跳转到周围各点的跳转概率 。 假设从某顶点出发开始随机游走 , 第 步走到当前顶点, 要探索第 步的顶点, 如下图所示 。 下面的公式表示从顶点 到 的跳转概率 ,是图中边的集合 ,表示顶点 和 之间的边 ,表示从节点 跳转到下一个节点 的概率 ,是归一化常数 。
带偏随机游走的最简单方法是基于下一个节点边权重 进行采样 , 即,是权重之和 。 对于无权重的网络 ,。 最简单的方式 , 就是按照这个转移概率进行随机游走 , 但是无法控制BFS和DFS的倾向性 。
文章图片
文章图片
node2vec用两个参数 和 定义了一个二阶随机游走 , 以控制随机游走的策略 。 假设当前随机游走经过边 到达顶点, 现在要决定从节点 跳转到下一个节点, 需要依据边 上的跳转概率。 设,是顶点 和 之间的边权; 是修正系数 , 定义如下:
文章图片
上式中 表示下一步顶点 和顶点 之间的最短距离 , 只有 种情况 , 如果又回到顶点, 那么 ;如果 和 直接相邻 , 那么 ;其他情况。 参数 和 共同控制着随机游走的倾向性 。
参数 被称为返回参数(return parameter) , 控制着重新返回顶点 的概率 。 如果, 那么下一步较小概率重新返回顶点 ;如果, 那么下一步会更倾向于回到顶点, node2vec就更注重表达网络的结构性 。
参数 被称为进出参数(in-out parameter) , 如果, 那么下一步倾向于回到 或者 的临近顶点 , 这接近于BFS的探索方式;如果, 那么下一步倾向于走到离 更远的顶点 , 接近于DFS寻路方式 , node2vec就更加注重表达网络的同质性 。
因此 , 可以通过设置 和 来控制游走网络的方式 。 所谓的二阶随机游走 , 意思是说下一步去哪 , 不仅跟当前顶点的转移概率有关 , 还跟上一步顶点相关 。 在论文中试验部分 , 作者对 和 的设置一般是 的指数 , 比如。
node2vec这种灵活表达同质性和结构性的特点也得到了实验的证实 , 通过调整参数 和 产生了不同的Embedding结果 。 下图中的上半部分图片就是node2vec更注重同质性的体现 , 可以看到距离相近的节点颜色更为接近 , 下图中下半部分图片则更注重体现结构性 , 其中结构特点相近的节点的颜色更为接近 。
文章图片
4.3 node2vec在推荐系统中的思考
node2vec所体现的网络的同质性和结构性在推荐系统中可以被很直观的解释 。 同质性相同的物品很可能是同品类、同属性 , 或者经常被一同购买的商品 , 而结构性相同的物品则是各品类的爆款、各品类的最佳凑单商品等拥有类似趋势或者结构性属性的商品 。
毫无疑问 , 二者在推荐系统中都是非常重要的特征表达 。 由于node2vec的这种灵活性 , 以及发掘不同图特征的能力 , 甚至可以把不同node2vec生成的偏向“结构性”的Embedding结果和偏向“同质性”的Embedding结果共同输入后续的深度学习网络 , 以保留物品的不同图特征信息 。
node2vec相关论文:
[1] Grover A, Leskovec J. node2vec: Scalable feature learning for networks[C]//Proceedings of the 22nd ACM SIGKDD international conference on Knowledge discovery and data mining. 2016: 855-864.
5. EGES - Graph Embedding最佳实践
2018 年 , 阿里巴巴公布了其在淘宝应用的Embedding方法 EGES(Enhanced Graph Embedding with Side Information)算法 , 其基本思想是Embedding过程中引入带权重的补充信息(Side Information) , 从而解决冷启动的问题 。
淘宝平台推荐的三个问题:
现在业界针对海量数据的推荐问题通用框架是分成两个阶段 , 即matching和 ranking 。 在matching阶段 , 我们会生成一个候选集 , 它的items会与用户接触过的每个item具有相似性;接着在ranking阶段 , 我们会训练一个深度神经网络模型 , 它会为每个用户根据他的偏好对候选items进行排序 。 论文关注的问题在推荐系统的matching阶段 , 也就是从商品池中召回候选商品的阶段 , 核心的任务是计算所有item之间的相似度 。
为了达到这个目的 , 论文提出根据用户历史行为构建一个item graph , 然后使用DeepWalk学习每个item的embedding , 即Base Graph Embedding(BGE) 。 BGE优于CF , 因为基于CF的方法只考虑了在用户行为历史上的items的共现率 , 但是对于少量或者没有交互行为的item , 仍然难以得到准确的embedding 。
为了减轻该问题 , 论文提出使用side information来增强embedding过程 , 提出了Graph Embedding with Side information (GES) 。 例如 , 属于相似类别或品牌的item的embedding应该相近 。 在这种方式下 , 即使item只有少量交互或没有交互 , 也可以得到准确的item embedding 。
在淘宝场景下 , side information包括:category、brand、price等 。 不同的side information对于最终表示的贡献应该不同 , 于是论文进一步提出一种加权机制用于学习Embedding with Side Information , 称为Enhanced Graph Embedding with Side information (EGES) 。
5.1 基于图的Embedding(BGE)
文章图片
该方案是 DeepWalk 算法的实践 , 具体流程如下:
Base Graph Embedding 与 DeepWalk 不同的是:通过 user 的行为序列构建网络结构 , 并将网络定义为有向有权图 。 其中:根据行为的时间间隔 , 将一个 user 的行为序列分割为多个session 。 session分割可以参考Airbnb这篇论文《Real-time Personalization using Embeddings for Search Ranking at Airbnb》 。
5.2 使用Side Information的GE(GES)
通过使用BGE , 我们能够将items映射到高维向量空间 , 并考虑了CF没有考虑的用户序列关系 。 但是我们依然没有解决冷启动的问题 。 为了解决冷启动问题 , 我们使用边信息( category, shop, price, etc)赋值给不同的item 。 因为边信息相同的两个item , 理论而言会更接近 。
通过DeepWalk方案得到item的游走序列 , 同时得到对应的边信息(category , brand , price)序列 。 然后将所有序列放到Word2Vec模型中进行训练 。 针对每个 item , 将得到:item_embedding , category_embedding , brand_embedding , price_embedding 等 embedding 信息 。
为了与之前的item embedding区分开 , 在加入Side information之后 , 我们称得到的embedding为商品的aggregated embeddings 。 商品v的aggregated embeddings为:
文章图片
对上式做一个简单的解释:针对每个 item , 将得到:item_embedding , category_embedding , brand_embedding , price_embedding 等 embedding 信息 。 将这些 embedding 信息求均值来表示该 item的Embedding 。
需要注意的一点是 , item 和 side information(例如category, brand, price等) 的 Embedding 是通过 Word2Vec 算法一起训练得到的 。 如果分开训练 , 得到的item_embedding和category_embedding、brand_embedding、price_embedding不在一个向量空间中 , 做运算无意义 。 即:通过 DeepWalk 方案得到 item 的游走序列 , 同时得到对应的{category, brand, price}序列 。 然后将所有序列数据放到Word2Vec模型中进行训练 。
5.3 增强型GES(EGES)
GES中存在一个问题是 , 针对每个item , 它把所有的side information embedding求和后做了平均 , 没有考虑不同的side information 之间的权重 , EGES就是让不同类型的side information具有不同的权重 , 提出来一个加权平均的方法来聚集这些边界embedding 。
文章图片
因为每个item对其不同边信息的权重不一样 , 所以就需要额外矩阵 来表示每个item边信息的权重 , 其大小为,是item的个数 ,是边信息的个数 , 加 是还要考虑item自身Embedding的权重 。 为了简单起见 , 我们用 表示第 个item、第 个类型的side information的权重 。表示第 个item自身Embedding的权重 。 这样就可以获得加权平均的方法:
文章图片
这里对权重项 做了指数变换 , 目的是为了保证每个边信息的贡献都能大于。 权重矩阵 通过模型训练得到 。
EGES算法应用改进的Word2Vec算法(Weighted Skip-Gram)确定模型的参数 。 对上图中EGES算法简单说明如下:
EGES并没有过于复杂的理论创新 , 但给出了一个工程上的融合多种Embedding的方法 , 降低了某类信息缺失造成的冷启动问题 , 是实用性极强的Embedding方法 。
EGES相关论文:
[1] Wang J, Huang P, Zhao H, et al. Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba[C]. knowledge discovery and data mining, 2018: 839-848.
6. 总结
【序列|盘点! 深度学习推荐系统中各类流行的Embedding方法 (下)】时至今日 , Graph Embedding仍然是工业界和学术界研究和实践的热点 , 除了本文介绍的DeepWalk、LINE、node2vec、EGES等主流方法 , SDNE、struct2vec等方法也是重要的Graph Embedding模型 , 感兴趣的读者可以自己查找相关文献进一步学习 。
推荐阅读
- 数字货币|2021年加密货币市场盘点:比特币仍是霸主,NFT进入大众视野
- MateBook|深度解析:华为MateBook X Pro 2022的七大独家创新技术
- 地球|没有了人类,地球气候环境会怎样|澎湃问吧年度盘点(上)
- 趋势|2021生活家电好物盘点:舒适、智能、健康成趋势
- 挖矿|深信服2021年度安全技术盘点,解决了用户哪些需求呢?
- 人物|最有深度的8个公众号,你关注了吗
- 华为|年度盘点 | 人享其行、物优其流 交通数字化转型开启行业发展新篇章
- 数据|聚焦解决 “卡脖子”问题 三六零旗下国家工程研究中心纳入新序列
- 国际|特奖得主任队长,清华夺冠NeurIPS 2021国际深度元学习挑战赛
- 深度|小米真无线降噪耳机 3 Pro 新年特别版即将发布,带来全新配色等