作者:垚姗
点击下载论文原文
开源代码:https://github.com/99731/M2GRL
图表示学习结合多视角学习在推荐系统是一个趋势。目前主流的方法是多视角表示融合,即把多视角的数据用一个向量表示,这会导致学习不足和引入归纳偏置。在本文中,我们采用了多视角表示对齐的思想,提出了一个多任务多视角的图表示学习框架(M2GRL)来学习多视角图中的节点表示,M2GRL包含两类任务:视角内任务和视角间任务。视角内任务专注于学习同构图内节点表示,视角间任务则用于学习不同视角的节点之间的关系。同时我们使用了同方差不确定性来动态调查多任务学习在训练时候的权重,使得模型能更好的收敛。该模型在离线和在线数据测评中都优于其他工业界推荐算法,目前已应用于淘宝推荐多个业务中。据我们所知,这是第一次应用多视角表示对齐方法在工业界大规模图上进行表示学习。
问题定义和抽象:
发现性推荐是淘宝推荐里的一个指标,指的是向用户推荐最近一段时间没有点击的类目下面的商品。发现性的指标在本质上对应学术界里推荐的novelty,diversity指标。提升发现性推荐下的点击率有利于提升用户在淘宝的长期体验。常见的工业界推荐系统分为召回和排序两部分,本篇文章专注于召回部分。因此我们的问题可以抽象成发现性召回。我们分析发现性召回遇到的一个主要问题是数据稀疏性大,模型难以学习准确的商品表达。现实中发现性点击率比非发现性点击率低很多,面对稀疏数据如何建模一直是个难题。同时发现性召回和基础召回有天然的矛盾性。基础召回以用户的所有点击作为正样本来学习的用户的喜好。而发现性召回如果只以发现性点击作为正样本,就会丢失掉大量的非发现性点击行为。而这些非发现性点击同样包含了大量用户的喜好信息,如果被丢弃当负样本就会对模型的学习能力造成很大损失。如何平衡发现性点击样本不完全匹配用户喜好的问题,以及怎么反应到最终的损失函数上面,是一个很大的挑战。我们接着分析目前公司已有技术是否能解决发现性召回的问题。一个可行的方案是先做item2item召回,然后根据用户的行为序列过滤掉非发现性商品。但是这个方法无法用模型优化,相对简单粗暴,需要对问题进一步思考。
提升发现性指标的一个自然的想法就是直接向用户推荐最近几天没有点击的类目下面的商品,且点击率越高越好。推荐系统中,召回决定了推荐的候选集,因此我们从召回入手,定义这个问题为发现性召回。由于用户行为数据的稀疏性,传统cf在做推荐的时候就面临着不小的挑战,这个问题在做发现性召回时更为明显。而采用商品Embedding表示的方式,可以降低稀疏性问题的影响。商品Embedding的表征学习有很多方法,其中基于Graph Embedding的方式集团内也有比较多的工作。但是,通常的做法以用户的所有点击作为正样本来学习的用户的喜好,而发现性召回如果只以发现性点击作为正样本,就会丢失掉大量的非发现性点击行为,而这些非发现性点击同样包含了大量用户的喜好信息,如果被丢弃当负样本就会对模型的学习能力造成很大损失。如何平衡发现性点击样本不完全匹配用户喜好的问题,以及怎么反应到最终的损失函数上面,是一个很大的挑战。
我们于是对问题进行进一步的抽象和分解:把问题分解成两部分,即全局基础表达学习和异类目度量学习。和目前NLP里热门的pretrained + finetuning的思想类似。我们先用全局基础表达学习来学习商品的基础表达,注意这里我们用了所有的点击,包括发现性点击和非发现性点击。这样我们学习到了用户的全局喜好。不会因为我们的目标是发现性召回而丢弃有用信息。然后我们用一个异类目度量学习模型作为下游任务。我们用pretrained的所有representation来进行异类目召回学习。我们这个解耦的设计可以很好的解决之前提出的2个难点。Pretrained阶段所有用户点击行为都可以考虑进来,finetuning阶段则只需要考虑发现性召回的loss。此外,我们在做全局表达时,也引入了更多的节点信息,比如知识图谱,可以更好地建模商品的表示,以及用户发生跨类目行为时背后潜在的联系。
我们于是对问题进行进一步的抽象和分解:首先我们把问题抽象成一个异类目召回的问题,发现性召回可以看成异类目召回的一个子集。发现性召回一定是异类目召回,而异类目召回不一定是发现性召回。相较于之前基础召回+规则过滤的方法,我们对召回空间进行了进一步的压缩和约束。其次,我们把问题分解成两部分,即全局基础表达学习和异类目度量学习。和目前NLP里热门的pretrained + finetuning的思想类似。我们先用全局基础表达学习来学习商品的基础表达,注意这里我们用了所有的点击,包括发现性点击和非发现性点击。这样我们学习到了用户的全局喜好。不会因为我们的目标是发现性召回而丢弃有用信息。然后我们用一个异类目度量学习模型作为下游任务。我们用pretrained的所有representation来进行异类目召回学习。我们这个解耦的设计可以很好的解决之前提出的2个难点。Pretrained阶段所有用户点击行为都可以考虑进来,finetuning阶段则只需要考虑发现性召回的loss。
行为都可以考虑进来,finetuning阶段则只需要考虑发现性召回的loss。
框架架构和技术选择:
上图是一个例子显示我们模型的最初灵感。图中显示了我们从用户行为序列中构建了三个同构图。我们分别利用了商店序列,商品序列和类目序列。我们可以观察到每个图的结构都不一样。传统的只基于item graph 或者构建一个异构图都会错过这些结构信息。我们目标是把这些结构信息利用起来来更好学习表达。
为了方便表示以及和我们撰写的论文对应。我们下面又称全局基础表达学习为多任务多视角图表示学习multi-task multi-view graph representation learning (M2GRL), 称异类目度量学习为multi-view metric model。下文我们分别讲述他们各自的细节。
多任务多视角图表示学习multi-task multi-view graph representation learning (M2GRL):
对于全局基础表达学习,我们使用了认知图谱的信息。我们把目光瞄向热门的图表示学习(graph representation learning)。电商场景中,信息种类繁多,从不同的角度展示商品的各种信息,这可以看成一个multi-view learning问题,多种不同特征可以看成multi-view data。现有的大规模图表示学习主要有两种思路来利用multi-view data,一种是用item建立一个网络,然后把其他信息当成特征加入网络进行表示学习。另一种是建立一个包含item和其他信息的异构图,然后在异构图上进行表示学习,比如metapath2vec。这里我们提出了一种新的思路,即我们先构建多个关于电商entity(single-view data)的同构图(比如类目图,商品图,商店图),然后在对每个图进行表示学习。然后,我们根据不同entity的联系进行“表示对齐学习”。基于这个思路我们提出一个新的多任务多视角图表示学习框架M2GRL。M2GRL包含两类任务:intra-view task 和 inter-view task。图模型如下图所示。
一,Intra-view task
Intra-view task可以看成一个同构图上的表示学习问题。理论上,我们可以使用任何图表示学习算法来学习同构图里的节点表示。实现中我们采用了skip-gram model with negative sampling (SGNS)。这个方法扩展性强方便并行化,并已经在实践中证明有效果。
对于给定的行为序列,skipgram的公式是最大化平均log概率:
二,inter-view task:
inter-view task的目标是学习不同entity之间的关系,比如图中的i-c alignment代表学习商品和类目的关系。由于商品和类目处于不同的特征空间,我们先将它们映射到一个共同的关系特征空间,然后在这个空间学习它们的关系。具体地,我们利用了一个转移对齐矩阵W来映射。因此inter-view task的loss变成了如下:
三,Learning Task Weights with Homoscedastic Uncertainty:
多任务学习的需要一个全局优化的loss函数。常用的方法是进行一个带权重的线性叠加。但是这个权重是超参数需要手工调参,这个代价在数据量大的场景下比较昂贵。我们使用了同方差不确定性的思想来在模型训练的时候对每个任务的权重进行自动调整。我们对每个任务的预测结果赋予一个高斯似然分布,并用它的标准差作为噪音扰动来衡量不确定性,因此我们把loss function重写为:
因为两种类型的task都可以看成一个C类的分类任务,我们可以用一个softmax 函数来表示似然函数
把它代入loss function,可得:
简而言之,不确定性(即方差)的倒数作为各个任务的权重,同时这个权重是未标准化的。当一个任务的不确定性很大的时候,计算的梯度误差大,我们给这个任务一个低的权重。反之,当不确定性小的时候,任务的权重就会增大。这样我们就达到来动态调整多任务权重的目的。
异类目度量学习multi-view metric model:
在淘宝中,推荐发现性是衡量用户长期体验的重要指标。如果推荐系统不断推荐一种类别的类似物品(例如颜色不同的裙子),客户将感到无聊。淘宝中的发现性推荐是指推荐商品的虚拟类目未出现在用户最近的行为日志中(15天)。在传统推荐算法中,具有相同类别的商品往往具有较高的相似度评分,这与我们发现性召回的目标相矛盾。我们认为,M2GRL学习到的多种representation可以用于发现性召回推荐。启发式地,发现性推荐是找到两个商品,它们在商品表示空间中距离较近但是在商品类目关系空间中距离较远。这样我们既能保证推荐商品的发现性,又能保证推荐商品是用户喜欢的。因此,我们提出了一种简单的multi-view metric model。我们使用两种representation,一种表示来item表示空间的embedding,另一种表示来自商品-类别关系空间的embedding。
我们利用了contrastive loss 来学习度量矩阵,
学到的在度量空间的embedding可以进行后续的召回操作。
小结:
我们提出了一个多任务多视角的图表示学习框架(M2GRL)来建立全网规模推荐系统,建模细节和实验结果可以详见文首的文章链接和开源代码。