知识图谱上的双塔召回:阿里的IntentGC模型

  1. 一切技术的目标都是为了更好地“伺候”好“推荐系统的一等公民 — ID类特征”。用户购买过的商品、光顾过的店铺、搜索过的关键词、商品的分类与标签,都是这样的ID类特征
  2. 传统的机器学习只会“严格匹配”。用户喜欢喝可口可乐,算法不会给他推百事可乐,因为“可口可乐”与“百事可乐”是两个不同的概念,占据了两个不同的ID。这时的推荐算法只有“记忆”功能。
  3. 深度学习的特点是,一切皆可embedding。通过将“可口可乐”与“百事可乐”都扩展成embedding向量,发现这两个“概念”不是正交的,反而在向量空间里非常相近,从而推荐系统有机会给一个只喝过可口可乐的用户推荐百事可乐。这时的推荐算法不再只能记忆,而是有了举一反三的“扩展”功能。
  4. 而到了“图计算”或“知识图谱”的阶段,ID类特征换了个名字,变成图上的节点或者知识图谱中的entity。换名字是小事,关键是这些ID不再是孤立的,而是彼此关联,从而带来了信息的传递。之前,小明喝过“可口可乐”,只有“可口可乐”这一个概念为推荐算法刻画小明贡献信息。如今,因为小红也喝过“可口可乐”,小红的信息也能传递给小明;因为“可口可乐”与“炸鸡”经常一起消费,所以“炸鸡”的信息也能够传递到小明身上。所以,图计算或知识图谱的引入,使推荐算法能够利用的信息更加丰富,有利于缓解让人头疼的“冷启动”问题

今天点评的文章是阿里发表在KDD 2019的论文《IntentGC: a Scalable Graph Convolution Framework Fusing Heterogeneous Information for Recommendation》,而此文正是上述第4点思路的典型代表。

读完整篇文章,发现IntentGC的整体架构其实就是一个双塔模型,只不过换了个马甲,改叫Dual Graph Convolution。而与DSSM这种传统双塔不同之处就在于,user与item特征在接入各自的塔之前,已经通过异质信息网络(Heterogeneous Information Network, HIN,实际上就是知识图谱)聚合过各自邻居的信息。所以,我才在文章的标题里将IntentGC形容为“建立在知识图谱之上的双塔模型”。

回顾双塔模型

做召回算法的,哪个能不知道大名鼎鼎的“双塔”模型?以电商推荐为例

经典双塔结构
  • 把用户信息,比如用户购买过的商品、访问过的店铺、关注过的品牌、...这些ID类特征,先经过embedding,再接入user-tower,得到user embedding “”
  • 将商品信息,比如商品所属的一级分类、二级分类、文字描述、...这些ID类特征,先经过embedding,再接入item-tower,得到item embedding
    • 送入item-tower的,既有用户真正购买的商品v,得到其向量;
    • 也有随机采样得到商品neg,得到其向量
    • 由于一般的随机负采样得到的商品,与用户的兴趣相差太远,对于训练算法太容易。所以也要考虑增加负采样的难度,即所谓的hard negative。IntentGC对这个问题也有考虑,即从正例v所属的相同类别下再采样一个item,作为hard negative。关于召回时的采样策略,见我的另一篇文章《负样本为王:评Facebook的向量化召回算法》。
  • 得到用户向量,用户购买过的商品的向量, 随机采样得到的商品的向量之后,接下来就是如何设计loss。其基本思路就是,与应该足够近(e.g., 点积大),而与足够远。常见的loss有hinge loss或BPR loss。IntentGC这里采用的就是hinge  loss=max{0,  }
  • 训练完毕之后,将上百万的候选商品都经过训练好的item-tower生成item embedding,存入FAISS。
  • 线上召回时,来访的user取得user embedding(线上实时生成,或者,离线计算好),到FAISS里面进行近邻搜索,得到与user embedding最相近的top-N个商品,作为召回结果返回。

IntentGC对双塔的改进

到目前为止,就是传统的双塔模型,so far so good。而IntentGC看到的改进点在于:

  • 像用户访问过的店铺、商品所属分类这样的ID类信息,只是单纯地为刻画user和item贡献了自己本身的信息,但是它们背后的“社交”功能还未被开发和利用。
  • 与当前用户逛同一家商店的其他用户的信息,对于刻画当前用户也非常有帮助。同理还有与当前用户喜欢同一品牌的其他用户的信息、与当前用户使用相同搜索词的其他用户的信息、......。正所谓“人以群分”,这种类似于User Collaborative Filtering的思想被实践证明是非常有效的。
  • 与当前商品同属一个类别的其他商品的信息,对于刻画当前商品也非常有帮助。同理还有与当前商品属于一个品牌的其他商品的信息,与当前商品使用类似文字描述的其他商品的信息、......。正所谓“物以类聚”,这种类似于Item  Collaborative Filtering的思想同样被实践证明是相当有效的。

IntentGC解决的思路也非常清晰,

  • 双塔还保持不变,只是喂入塔的user和item特征,需要扩展
  • 不仅包括当前user和当前item自身的特征
  • 还要融合当前user在各种“关系”(e.g., 逛过同一店铺、喜欢同一品牌、使用过相同的搜索词)下的相邻user的特征。
  • 还要融合当前item在各种“关系”(e.g., 属于同一类别、属于同一品牌、相似的文字描述)下的相邻item的特征。

问题的难点在于:

  • user的邻居user,自己也有邻居user;item的邻居item,自己也有邻居item。所以这是一个多层图卷积的问题。
  • 图上,存在多种节点(user和item)、多种关系(user之间逛过同一店铺、item之间属于同一品牌),因此属于异构信息网络,也即知识图谱。众所周知,处理异构图要比同构图更有难度。
  • 毕竟是要在一个web-scale级别的推荐系统中投入运行,性能也是必须要考虑的问题。

接下来,让我们看看IntentGC是如何解决这些问题的。

异构图转化为多张同构图

IntentGC处理含有这么多关系的知识图谱的方法是将其转化为“两类多张”同构图

  • 两类是指user类和item类。user类图中包含多张只有user节点的图,doc类图包含多张只有doc节点的图。user与doc之间没有建立边,都是待预测的,user/doc的信息不能相互传递
  • user类下,每种“关系”单独建成一张同构图。以“逛过同一家店铺”为例,
    • 建成的图上只有user节点,
    • user与user之间的边上有权重,和“两个用户共同逛过的店铺的数目”有关。这个权重越大,代表两个用户对“店铺”的爱好越相同
    • 为了降低计算规模,IntentGC在建模时,将边上权重比较小的边都删除
    • 为了避免个别“网红店”导致大量用户之间出现关联,建图时要将这些超热门的“网红店”排除在外
  • doc类下,每种“关系”单独建成一张同构图,图上只有doc节点。方法与建立user-user同构图类似。
两类多张同构图

如何整合多张图上的信息

这么多张图,但是我们只需要一个user embedding,怎么融合多张图上的信息得到唯一的user embedding呢?IntentGC的作法非常简单,就是加权平均(权重待学习)

IntentGC聚合多种关系时的公式
  • k代表卷积的层数,R代表“关系”总数。
  • 以上函数是在用k-1层的user embedding ''生成,公式左边的是生成过程中的一个中间结果。生成的完整流程下一节会讲到。
  • 代表第k-1层中,第r种“关系”下,用户'u'的邻居向量的聚合(pooling)结果
  • 代表第k-1层中,融合“第r种关系的邻居向量”时的权重(r=1,代表融合自身时的权重)。至于'i',因为我们要学习多套融合权重(类似multi-head attention),'i'代表第'i'套融合权重。

快速图卷积

看到上边的公式,细心的同学可能会疑惑,因为这个公式和我们常见的GCN/GraphSAGE在聚合”自身“与”邻居“时采用的公式不一样。

常见GCN聚合公式

与常见GCN公式相比,我们发现IntentGC的聚合公式,只有向量之间element-wise sum,缺少了常见的“拼接+FC”。作者给出的原因是:

  • 常见的'拼接+FC'方式,涉及向量的每一位,与向量的每一位,之间的交叉,占据了前代+回代中大部分的计算资源。
  • 但是作者认为,不同特征之间的高阶交叉,是“塔”的职责。既然最后要由“塔”完成不同特征之间的高阶交叉,在这里再做交叉就多余了,被作者视为unnecessary interaction而摒弃。

为此,作者在进行图卷积时,

  • 聚合自身和邻居时,只有element-wise的加权和,抛弃了复杂,既节省计算时间,又减少了待优化的参数而防止过拟合;
  • 而且要学习多套(以下公式中的L套)加权和,类似于CNN中的多channel,或者Attention中的muliti-head,以增强模型的表达能力;
  • 多套加权方式下学习到的向量,再通过另一套权重相加起来(以下公式中的),得到第k层各节点的最终向量表示;
IntentGC信息聚合公式

困惑

我们在计算大规模图卷积时,肯定不能一次性让全图参与计算,必然是采取mini-batch的方式。而mini-batch训练时,必不可少的一个步骤就是,以mini-batch中的节点作为最后一层的target节点,逐层向下进行neighbor sampling,每层都得到一个subgraph,然后卷积只在每层的subgraph上完成

mini-batch中逐层邻居采样

但是IntentGC的论文里宣称,这种采集mini-subgraph的方式低效,而IntentGC中的快速图卷积抛弃了这种方式,只是做ordinary node sampling。

However, for user-item HIN G, it is difficult to generate such clustered subgraphs for representation reusing. This is because the user-item preference links are quite sparse. If we follow the producer in their method for sampling, we would get a very huge subgraph, or even the whole graph. Hence, in order to apply our approach on large scale graphs, we develop a faster convolution operation which allows ordinary node sampling.

It is worth to note that, this is a highly flexible implementation in that we remove the limitation of training on clustered mini-graph batches. Instead of producing clustered mini-graphs for every batch, we sample random nodes and fetch their neighborhoods from the graph indexing engine by hash keys in the run time of training. The inference component is much like the training component except without backward propagation

论文中的这些论述让我非常困惑

  • 做mini-batch训练时,逐层采集邻居形成sub-graph是必不可少的呀,第3层的目标节点依赖于它们在第2层的邻居,而这些邻居又依赖于它们在第1层的邻居
  • 为什么论文里说,这种方式不适用于user-item HIN,是因为sparse?那为什么又说得到的图是huge甚至是全图?关键一点,实际上图卷积是在user-user/doc-doc同构图上进行的,根本不涉及user-item异构图

唯一给我一点线索的就是“The inference component is much like the training component”这一句话。看过PinSAGE论文的同学都知道,PinSAGE在训练时和预测时,代码运行方式是完全不同的

  • 训练时两层循环,外层循环每个batch,内层循环各层卷积
  • 预测时两层循环,外层循环每一层,内层循环各个batch。在本层将所有节点的embedding都计算出来之后,才开始下一层。因为如果还照搬训练时的计算方式,有些节点的embedding会被重复计算。

如果像IntentGC据说,训练与预测一样,我唯一能想到的就是,IntentGC在训练与预测时,遵循“外层循环每一层,内层循环各batch;先把当前层所有节点的embedding都计算出来,才开始下一层”的方式。但是这样一来,每个batch的回代就被推迟了,反而影响训练速度。

实在想不明白,IntentGC这种“remove the limitation of training on clustered mini-graph batches”的方式到底是什么样的,还请知道详情的高人,不吝赐教。或者找个机会,我再重读一遍作者的代码。

总结

经过快速图卷积,得到user节点embedding喂入user-tower,得到正负item节点的embedding喂入item-tower,由两侧的tower将各个维度的输入特征进行高阶交叉。得到最终user embedding和item embedding,喂入margin-based hinge loss。这些就属于双塔模型的常规操作了,一笔带过。整个模型结构如下所示:

IntentGC结构

至此,IntentGC就介绍完毕。总结一下它的优点:

  • 在传统双塔模型中,大量的ID类特征(用户逛过的店铺、商品所属类别、......)只是单纯为模型贡献了本身的特征,但是它们背后的“社交”功能还未被开发和利用。
  • IntentGC通过图的方式,对ID类特征的“社交”信息加以利用。喂入塔的user/item特征,不仅包含了其自身的信息,同时也融合了与其类似的user/item的信息,类似User CF或Item CF。喂入双塔的信息大大丰富,有助于模型学到更复杂的模式,同时也缓解了对低活用户、冷门商品的“冷启动”问题。

尽管“知识图谱+双塔”是一个不小的创新,但是IntentGC还不能取代传统双塔模型,起码现在不能。

  • 目前用于推荐系统的GNN,几乎都是静态图。一个user/item只能由一个节点来表示,无法承载user/item的动态信息
  • 而传统模型则没有这方面的限制,同一个用户可以贡献多条训练样本,而每条样本中该用户的动态信息(比如最近1小时/6小时/1天的点击分布)可以截然不同。

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方'AINLP',进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

欢迎加入知识图谱技术交流群
(0)

相关推荐

  • 基于图模型的智能推荐算法学习笔记

    一.基于知识图谱的智能推荐 以知识图谱作为边信息生成推荐的价值在于:一方面可以提供更准确的推荐:另一方面可以对推荐结果进行解释. 知识图谱由实体和关系组成(以电影推荐为例):实体(用户.电影.演员.导 ...

  • NAACL 2019 论文 | 基于胶囊网络的知识图谱表示学习

    知识图谱表示学习(Knowledge Graph Embedding)是将知识图谱中的实体和关系等表示为低维的向量空间中的向量,这些向量蕴含了实体和关系的复杂信息,有利于计算机进行计算和推理. 论文背 ...

  • 学习|知识图谱学习路线

    学习|知识图谱学习路线

  • 论文浅尝 - CIKM2020 | 用于推荐系统的多模态知识图谱

    论文笔记整理:王琰,东南大学硕士. 来源:CIKM 2020 链接:https://doi.org/10.1145/3340531.3411947 研究背景与任务描述 为了解决推荐系统中的数据稀疏和冷 ...

  • 深入理解推荐系统:十大序列化推荐算法梳理

    在推荐系统中,用户行为序列化建模一直是个非常重要的话题,本文总结了近年来广告.推荐领域的十大序列化推荐算法,主要介绍每个算法的结构和其特点. 为什么进行序列化推荐? 传统的推荐系统,例如基于内容和协同 ...

  • 赠书 | 知识图谱上的图神经网络

    文中有数据派THU福利哦 几乎所有早期的知识图谱嵌入的经典方法都是在对每个三元组打分,在实体和关系的表示中并没有完全考虑到整幅图的结构. 早期,图神经网络的方法在知识图谱嵌入中并没有被重视,主要由于: ...

  • 深度融合 | 当推荐系统遇上知识图谱(二)

    NewBeeNLP原创出品 公众号专栏作者@上杉翔二 悠闲会 · 信息检索 前情提要: 万物皆可Graph | 当推荐系统遇上图神经网络 深度融合 | 当推荐系统遇见知识图谱 继续来看看推荐系统的花式 ...

  • 重启人工智能:当深度学习遇上知识图谱

    Gary  Marcus 并不缺乏野心,他决意要重新启动人工智能. 本文最初发表于 ZDNet,经原作者 George Anadiotis 授权,InfoQ 中文站翻译并分享. Gary Marcus ...

  • 当知识图谱遇上个性化搜索

    前言 首先是个性化搜索的情况,本质上是根据用户的历史行为来判断现在搜索的目的.这种做法的缺点是不能利用到一些外部信息,比如樱花和日本之间的关系就无法获得:另外一方面是利用实体链接的方法,可以获得外部信 ...

  • 【中医知识】神医面诊图谱(上)

    [中医知识]神医面诊图谱(上) 导读:望闻切问是中医诊断的方法.色诊是望诊的一部分.察颜观色不但医生能用,我们也可用于自查病.         掌握好色诊,能够为我们自己的健康摄取第一道的屏障. 中国 ...

  • 名老中医医案 知识图谱

    随着信息时代的来临,知识呈现出爆炸式增长的现象,计算机处理技术水平和存储能力也得到了迅速提高,且实现了越来越便捷的信息分析.检索,甚至可视化等先进的功能,使得近年来出现了以知识单元为前提.可以快速获取 ...

  • 3Dmax基础知识 (上)

    第一课:现成的三维物体建模 1-1.3Dmax2010软件简介和安装 3D Studio Max,常简称为3ds Max或MAX,是Autodesk公司开发的基于PC系统的三维模型制作和动画渲染软件, ...

  • 何捷:知识图谱——精准定位教学的“GPS”

    2012年,谷歌(Google)正式提出了知识图谱的概念,并宣布以此为基础构建下一代智能化搜索引擎.我们所理解的知识图谱是人工智能领域的一个重要分支,其来源于智能化的图书情报和信息处理技术,即将文献中 ...

  • 【直播课】知识图谱第三期直播-关系抽取及分类

    前言 最近几年知识图谱作为人工智能领域很热门的一项技术,已经在不少领域都取得了不少成功的落地案例.不过知识图谱作为人工智能的一个底层技术,确实不如图像,语音等技术一样让人能很直观的感受到它的存在.于是 ...