Graph Embedding

word2vec和item2vec处理的数据都输“序列”型的数据,Graph embedding是对“图”结构中的节点进行embedding编码。这里具体算法流程需要看过论文再补充(待补充)

DeepWalk

主要思想:在物品的图结构上随机游走,产生序列,利用序列作为样本输入word2vec进行训练,是embedding和graph embedding之间的过渡。
在DeepWalk的计算中需要定义跳到邻接点的概率,其实就是当前节点所有边做分母,对应边做分子,计算出跳转概率。

Node2vec

主要思想:认为图中相邻节点的embedding尽量相似(同质性)、结构上相似的节点其embedding也应该相似(结构性),这一思想通过调整随机游走的权重来实现。要表达“结构性”游走过程倾向BFS,广度优先,会更多的在当前节点的邻接点中游走;要表达“同质性”,游走过程会倾向于DFS,深度优先,DFS会大概率在一个大的子网络内进行游走。
控制BFS和DFS的倾向性,其实也是通过跳转的概率来影响。

EGES

主要思想:冷启动商品没有足够的行为信息,为了给新商品生成合理的embedding向量,引入更多的补充信息(side information)。之前都是通过用户行为序列生成物品关系图,这里再加上通过属性/类别等信息简历基于内容的关系图,根据补充信息的不同,可以生成多个embedding向量。多个embedding融合的方法就是在神经网络中加入平均池化,并且在池化前加上权重。
EGES实用性较强。

Embedding与深度学习推荐系统的结合

  • 深度学习的embedding层

embedding层位于输入与全连接层之间,embedding层接收的输入是类别特征的one-hot向量,通常维数很高,embedding层将高维输入映射成低维稠密向量。embedding层实际是与深度网络一起训练的,但是由于输入数据维度太高,这一层要学习的参数量会很大,另外数据稀疏,比较难训练,工程上通常采用随机初始化或者embedding层预训练的方式。但是GraphEmbedding只能独立于深度模型单独训练。

  • 预训练的embedding向量与其他特征一起作为模型输入

比如FNN,就是将FM模型训练得到的隐向量作为embedding层初始化权重。

  • 作为推荐系统的召回方法

离线训练得到用户、物品的embedding向量,在通过内积运算找到top的物品作为候选物品集,但是遍历内积的计算量会随着物品的数量变得很大。