分享嘉宾:孙瑞鸿 腾讯大数据
编辑整理:赵文娇
出品平台:DataFunTalk、AI启蒙者
导读:随着数据多样性的发展,图计算已经成为业界的一个重要的研究方向,其中图神经网络广泛应用于图的表征学习,与传统的图学习相比,既能学习图网络的拓扑结构,也能聚合邻居特征,从而能够有效的学习到图网络中的信息,为后续的推荐工作起到关键作用。
01
图神经网络简介
1. 万物互联
以社交网络的构建方式为例,之前主要以“关注关系”为基础进行构建,现在则会多方位的考虑到“点赞、分享、评论”等数据。图算法的实践应用在更加广泛的应用到腾讯的各个场景中都得到了广泛地应用。
2. 应用场景
- 基于关键人物的推荐。通过一些图结构结合一些算法,比如典型的pagerank算法,我们可以找到关键人物,通过对关键人物采取特定性策略(比如定向推广),提升推荐效果。
- 基于圈子的推荐。基于地理、人物任务关系、兴趣爱好组成的圈子,进行产品和广告的推荐。
3. 推荐中的图挖掘算法
图挖掘算法,包括传统的图挖掘算法,比如pagerank, closeness等;找到关键节点和关键群体的社区发现类算法,也包括,图表示学习算法deepwalk, node2vec等等,今天我们主要介绍一下图神经网络的使用。
图神经网络考虑的比较多,考虑节点的特征,边的特征,通过聚合邻居的特征同时结合自己的特征,进行的学习。图神经网络的效果也是很明显的,在不同场景下的效果如下。
02
Angel图神经网络
1. 什么是图神经网络
图神经网络就是在图上应用神经网络框架。图神经网络和神经网络的异同,例如:传统的神经网络框架处理的数据是基于标准的欧式空间,如图片数据,文本数据等;对于图神经网络则需要处理图网络拓扑数据,他是一个非欧式空间数据如下,左图是在图像分类中常见的猫咪图片,是标准的欧式空间,右边的图网络,是非欧式空间,主要是邻居节点的数目和顺序会有所不同,并且网络图数据量很大难以缩放。由于数据结构上存在着这差异,图神经网络不能沿用神经网络的处理方式,而是图神经网络通过聚合邻居节点特征来构建特征。
2. Angel图神经网络框架
这里不做特别详细的阐述,官方文档可以进行详细的学习。这里强调一下,在聚合邻居特征的时候有一阶邻居和二阶邻居特征,一阶邻居特征就是放在spark executor上面,采样速度很快。然后会把邻接表放到ps上,方便进行二阶采样服务器。
Angel现有的图神经网络算法有很多graphsage, 分成有监督、无监督、同构、异构等。
下面以graphsage为例介绍一下我们关注的点。
GraphSage原理:
GraphSage有两个点关键点,一个是采样,一个是聚合,如下图箭头标示。
- 采样。选择一个点,先对它的一阶邻居随机采样,然后根据采样得到的一阶邻居进而来采样二阶邻居,以此类推,目前,我们实验发现,二阶邻居采样就可以得到不错的效果。在获得邻居之后,下面我们开始考虑如何聚合邻居特征。
- 聚合。首先将二阶邻居特征进行聚合,然后将聚合后的二阶邻居特征和一阶邻居特征进行融合,最后然后将融合后的特征与再和初始节点的特征进行融合。这样就获得了一个融合特征的embedding。
03
推荐场景下的实践
1. GNN推荐场景概览
首先是构建网络,比如说例如:通过社交网络,移动支付,通信网络,电商购物等场景构建出网络结构,然后放入gnn中获取embedding,之后最后就可以应用到更多下游推荐,比如作为模型特征,推荐召回,推荐冷启动,用户画像等等。下面我们基于场景进行具体介绍:
场景一:腾讯看点视频推荐
通过用户的历史观看记录构建网络。具体说来,每个用户都有自己的观看记录,然后从视频角度,我们可以得到如下图的网络结构图,这个过程是有信息折损的,就是用户观看的历史记录不完整,我们想办法解决这个问题。
第一步是网络构建,如上所述,另外需要加上的特征包括用户特征、视频特征、观看记录特征,我们不希望丢失序列特征,所以我们会使用一些序列算法,比如transformerTransformer处理序列的历史数据,可以得到用户的embedding,然后将视频的embedding也放入graphGraph-sageSAGE里面进行学习,这样最后学出来的东西既包含用户的历史观看记录,也包括网络结构的信息。
最后使用的是半监督GraphSAGEgraphsage,作用在千万级点上,十亿级边上。离线式表效果上,对比直接的transformer,top50命中率提升3%左右,在线指标上,短视频时长提升了0.98%,总时长提升0.34%。
场景二:微信内容推荐
这个场景是为微信用户推荐公众号,首先构建网络,如果直接利用关注关系构建网络,是有问题的。如下图,我们发现出现了“人民日报”这样超级节点,太多用户对其他进行了关注,解决办法是图转换,将图从用户和公众号的关系图,变成公众号和公众号的关系图。
这种改变也会同样会带来其他问题,就是比如:超级大号会和其他很多点产生联系,也是从而产生有问题的,解决这个问题就是需要刻意做一些边筛选。考虑到关注只是一个行为,我们也可以将观看,点击等行为作为边的触发行为加进来。
特征工程包括:公众号的特征,用户特征,和对这些特征的去噪。
算法选择:我们可以选择GraphSAGEgraphsage或者DGI,但最终选择了DGI。
关于一阶和二阶的选择,最终确定一阶效果更好,选用二阶容易构成embedding趋同。
流程如下:
使用dgi抽取特征后,利用itemCF,选取一些种子,从全量公众号里面圈定一个召回,然后进行排序等一些列行为。
最后使用百万级的点,亿级的边。曝光率提升2.38%,点击率提升1.61%,关注率提升 0.5%。
04
经验总结
网络构建和特征工程对任务目标是有关键影响的,主要需要注意降噪。
算法不是普适的,需要针对场景进行调整,多模型融合的效果一般来说更好,我们用过的有:
gnn transformer,Gnn xgboost,gnn kmeans,gnn itemcf等。
今天的分享就到这里,谢谢大家。
嘉宾介绍:
孙瑞鸿
腾讯大数据 | 高级算法工程师
孙瑞鸿,腾讯大数据高级算法工程师,目前专注于Angel图算法研发与腾讯内部场景的落地。
扫码关注 | 即刻了解腾讯大数据技术动态