他山之石 | 腾讯图神经网络与推荐预训练模型

2022-11-11 11:16:09 浏览数 (2)

作者 | 宋重钢@腾讯 整理 | DataFunTalk

大家好,这里是NewBeeNLP。今天分享腾讯图神经网络与推荐预训练模型。主要包括以下几部分内容:

  • 预训练模型目标与核心问题
  • 推荐系统场景中的预训练模型
  • 预训练模型的服务模式
  • 图神经网络预训练案例分享

01

预训练模型⽬标与核⼼问题

1. 预训练模型的发展历程

随着深度学习在各领域的快速发展,我们逐渐发现,基于监督信息的深度学习⽅法对标注样本有极强的依赖性,这⼀定程度地限制了模型从海量的⽆标注数据中提取信息的能⼒。在学术界中,从⾃然语⾔处理(NLP)到计算机视觉(CV)的领域,为了充分地利⽤海量的语料和图⽚中所蕴含的信息,基于神经⽹络的预训练模型从2003年的NNLM提出的word embedding的概念开始,就迎来了能够取得良好效果的预训练框架,包括2019年的BERT,2021年的MAE等。这些都是在学术界极具影响⼒的模型。

⽽在图神经⽹络⽅⾯,最早期的⽅法主要是基于路径重构的⽅法,包括Node2Vec,Methpath2Vec等⼀类⾃监督模型。⽽后诞⽣了⼀些基于AutoEncoder和对⽐学习(CL)的⽅法。这些都为图⽹络预训练提供了更多的技术选择。

在⼯业场景下,预训练模型同样有着许多的优势和应⽤。

2. 预训练⽬标

预训练的⽬标主要有以下三点:

①打通数据孤岛,充分利⽤全域信息有效帮助下游任务。

整合不同任务信息到同⼀通⽤表征空间,减少过拟合⻛险

为新⽤户/新场景/⻓尾情景带来丰富信息,解决稀疏标注样本的问题

以上图⽚展示了预训练模型通⽤的模式:在获取到海量的全域数据后,通过⾃监督学习的⽅式去提取user 和item等多种实体的表征;同时,利⽤跨域的辅助样本对模型参数进⾏预训练;最后通过⽬标域样本对模型进⾏Fine-tuning的操作得到⽬标模型,达到提升⽬标任务的⽬的。

3. 预训练核⼼问题

在选择预训练模型的过程中,需要考虑以下的三个核⼼问题:

①如何利⽤全域数据⾃监督学习?

诸如⽣成模型,对⽐模型,对抗模型都是⼗分出⾊的技术,如何选择合适的模型进⾏学习是值得思考的问题。

②如何找到最契合⽬标任务的⽹络结构?

从针对⾃然语⾔处理任务的BERT模型,到针对社交⽹络、⾏为⽹络的GNN及其变体,当拥有具体的业务需求之后,应当根据具体任务去选择最契合的⽹络结构。

③如何找到通⽤的迁移泛化结构?

考虑到⼯业中需求,将预训练模型中的参数泛化到通⽤模型中,也有着如Meta learning,Contrative learning等⽅法。

02

推荐系统场景中的预训练模型

1. 推荐场景中的预训练模型分类

在推荐场景中的预训练模型分类中,根据数据的组织形式及跨域信息迁移⽅式可以分为很多⼦类别。

在基于数据的组织形式分类中,可以根据⾏为序列及⾏为⽹络进⾏进⼀步的划分。根据跨域信息迁移⽅式进⾏分类,则可以根据元学习与多⽬标学习分为两⼤类别。

2. 图神经⽹络在推荐场景的优势

为什么我们选择在推荐场景中运⽤图神经⽹络的⽅式?源于图神经⽹络在其中有着⾮常明显的优势:

①契合数据:图⽹络结构是推荐系统数据的天然组织形式社交⽹络

  • ⾏为⽹络
  • 知识图谱

②信息丰富:结合图论知识,提取⾼阶关系信息

  • PPR-based sampling
  • k-Clique/Centrality measures

③包罗万象:兼容传统深度神经⽹络结构,融合节点特征表达

3. 团队算法演进⽅向:技术与业务相辅相成

从2016-2019年,团队⼀直着⼒研究⼴告召回的业务,其中2016-2018注重于⾃监督模型的构建与落地;⾃2018 年起,团队跟进了在学界与业界中⽐较成功的图神经⽹络技术模型。从2019年下半年开始,团队深度参与到视频 号,直播号的召回,及订阅号召回与⼴告特征提取的业务中,在直接加⼊到推荐系统场景的背景下,团队在GNN 模型上有着出⾊的改进与落地。再往后的发展中,团队更多关注⼤规模图神经⽹络预训练的技术发展上,并且希望能够为更多业务提供应⽤。

03

预训练模型的服务模式

预训练模型主要的服务模式分为三种:

①特征:为下游模型补充特征,通过预训练模型提取多域信息,丰富⽤户特征表达。

②召回:直接将预训练所产⽣的user和item的embeddings通过计算的⽅式来进⾏召回。召回过程中可以适配多种业务形态和⽬标,融合域外信息激活新⽤户/场景。

③⼦模型:将预训练模型作为⼦模型的结构,直接加⼊下游模型,保留预训练模型的模型参数和对特征的抽象能⼒。

1. 预训练结果作为下游模型特征

⽅案⼀:离散/连续特征分别建模,最终层concat。

⽅案⼆:把embedding特征转换为⼀个离散特征,与其他离散特征交叉。

⽅案三:根据embedding产出topK的ID list作为离散特征。

2. 预训练结果作为召回

①形式⼀:兴趣召回

在获取users与items的embeddings后,直接计算两套embeddings的相似度进⾏兴趣召回。

②形式⼆:跨域兴趣召回

在特定场景中,⽬标⽤户在⼴告域的⾏为⾮常少,但该⽤户会实时地点进公众号,从⽽产⽣与公众号界⾯的交互⾏为,这体现了⽤户对公众号的实时兴趣。因此我们可以通过公众号的embeddings与⼴告的embeddings做⼀个SimSvr近邻查找,将与其交互过⼴告召回给⽤户。

③形式三:作者冷启动召回

在⼀些成熟的推荐系统中,新加⼊的作者发布的作品⽐较难以被⽤户发现,⽐如在视频号⾥⾯,已经存在⼀批头部的视频号作者,相⽐较之下,冷启动的作者作品就⽐较难被⼈看到,这会⼀定程度损伤这些作者的创作积极 性。⽽在作者冷启动召回的做法当中,基于作者的创作与消费的作品具有相似性的原则,当⽬标⽤户进⼊系统中后,我们会根据⽤户与冷启动作者的消费兴趣计算出作者的embeddings,从⽽查找出与该⽤户具有相似消费兴趣的同好作者,当这类作者有发表作品的⾏为后,则会将其作品召回给⽬标⽤户。

04

图神经⽹络预训练案例分享

1. 案例⼀:跨域兴趣召回GNN

在微信直播业务起步阶段,每天会有⼤量的新⽤户通过微信发现⻚的红点进⼊到直播推荐⻚⾯,但是这些⽤户中,有观看或点击主播⾏为的占⽐⾮常少。然⽽我们观察到,这些⽤户在其他域⾥⾯是有⾮常丰富的兴趣⾏为,⽐如他可能看过⾮常多的公众号的⽂章或有看过⾮常多的短视频。同时,在微信中,我们也注意到⽤户好友和好友之间是具有社交同质性的,在社交关系中,蕴藏着⽤户和⽤户之间的相似兴趣。基于以上的观察,我们就提出了想要通过GNN去实现跨越兴趣和社交信息的建模,来为新⽤户做补充召回。

抱着这样的⽬的,我们起始的模型设计如下图,红⾊虚线框⾥是我们底图,该底图包括的节点有⽤户直播间和⽤户或items的属性,其边信息包括⽤户对直播间的观看⾏为或好友关系等。

基于该底图,我们对于每⼀个节点就可以进⾏图卷积的操作来提取其特征,这⾥设计了多个Metapath来做进⾏多路图卷积。

此处设计的Metapath,我们为⽤户和items分别设计了三路的Metapath。

⽤户侧有基于⽤户⾃身对于直播间的观看⾏为的Metapath,⽤户看过的直播间特征可以聚合到⽤户上。另外,有基于社交关系的协同信息提取,⽐如⽤户的好友观看的items,我们可以把这些items的信息聚合到该⽤户上。还有基于静态属性的协同,跟⽤户具备相同属性的其他⽤户特征,也可以聚合到⽤户上,如年龄、性别等基础属性。

在items侧也是类似的,我们提出了三路的卷积路径设计。⾸先第⼀路是直接把⽐较相似的items信息直接进⾏传播,聚合到⽬标的items上。或通过⽤户⾏为来进⾏协同过滤,即看过当前⽬标item的⽤户还看过哪些其他直播间,这些直播间的信息也可以通过这⼀路卷积到当前⽬标item上。第三路同样是通过静态属性的协同,即具备相同的属性,⽐如直播间的类⽬相同,如皆为购物的直播间,直播间两两之间的信息则能够通过静态属性进⾏扩散。

具备多路图卷积后,每⼀路会产⽣出来⼀个embedding,把embeddings进⾏pooling之后送⼊dense层,则会产⽣出对应的user或item的embeddings。此处的user和item的embedding则会计算相似度,与⽤户在直播领域的⾏为作⽐对,最终计算出⼀个U-I loss,也叫recommend loss。在打分阶段,我们会直接把产⽣的⽤户和items的embeddings作为⼀个embedding的输出,去提供给下游的业务使⽤。

但在这个模型设计⾥,其实并没有使⽤到⽤户的域外⾏为。基于这样的考虑,我们会把side-item加⼊到底图的构造中,直接通过 item到⽤户的⾏为,将item的信息卷积到当前的⽤户身上,增加⼀路图卷积的embeddings。

但在这个模型设计中,训练的样本⼤部分是在直播间已经是⽐较活跃的⽤户,这会导致整个模型过度拟合⽬标域,对新⽤户并不友好。

因此,我们提出了以下优化⽅向。

思路:通过其他⾏为来对⽤户和items的embeddings进⾏监督,如果两个⽤户在域外的⾏为是⾮常接近,那么我们认为这两个⽤户的embeddings是⾮常接近的,同理对于items来说也如此。

⽅案:我们把连接了⾜够多共同Side-item或共同属性的⽤户节点,直接构造出邻接矩阵,构造重构loss。这种⽅ 式把⽤户在其他域的⾏为作为监督信息加⼊到整个模型的训练当中,使得模型不再仅仅是拟合⽬标域的⾏为,从⽽可以解决过度拟合⽬标域⾏为的问题。

在重构的loss的权重分配中,借鉴了多⽬标模型的思想,为每⼀个重构loss都赋予了可以学习的权重进⾏⾃动调节。

优势:使得新⽤户也可以通过其他域的⾏为收到监督信息,使得其user embeddings提取的信息更加⾃信。也在新⽤户召回中取得了显著收益。

2. 案例⼆:多⽬标GNN特征提取

在订阅号信息流的⼴告推荐的模型中进⾏特征补充,在⼴告的⽬标域⾥⾯,⼴告的样本⾮常稀疏,⼤量的⽤户缺少⼴告点击和⼴告转化⾏为,但是这些⽤户的阅读⾏为⾮常丰富。

基于这⼀产品形态,我们希望⼴告卡⽚和订阅号⽂章的内容是紧密关联的。因此我们提出GNN提取⽤户在订阅号的⾏为作为特征,来补充到⼴告的精排模型⾥,为⼴告的精排模型提供额外的信息。

基础的模型设计如下。

在底图上,我们构造了⼴告和公众号共同存在的异构⽹络,节点就包括了⽤户⼴告和公众号的⽂章,⽽边则是⽤户的⼴告点击和⼴告转化的⾏为,以及⽤户之间的好友关系。

该模型的卷积路径设计,在user侧有三路不同的Metapath,分别是⽤户在⼴告域的⾏为,其点击或者转化过的⼴告的信息聚合到⽤户上,其好友的信息亦然。公众号跨域的信息,也可以把⽤户在公众号域的消费的⽂章对应的信息聚合到⽤户上。

⽽在⼴告侧的items,有着两路的卷积设计,⼀个是⼴告可以通过其相似的⼴告来做聚合。⼆是通过⽤户⾏为来做协同,可以把其他⼴告的信息聚合到当前的⼴告上⾯。

当拥有图卷积产⽣出来的embeddings之后,将embeddings concat起来进⼊⼀个dense层,再分别为user和item 建模了user embeddings和item embeddings,并通过相似度计算和⽤户在⼴告域的⾏为进⾏⽐对,计算出ui loss,构成了最简单的模型设计。

但在模型设计中,存在着以下问题:

①⼴告的⾏为⾮常稀疏,⼤部分⽤户并没有⼴告⾏为,则⽆法进⼊样本参与训练。

②⼴告投放具备季节性和周期性。⽤户在特定时间可能选择到的⼴告,并不代表⽤户他在其他时间段仍然会对这类内容感兴趣。

基于以上观察,我们做了这样的优化:

将公众号的跨域样本给补充到模型当中,进⾏同步的训练,使得公众号域和⼴告域的特征提取模块,在item侧各⾃提取特征⽽在user侧共享底层的embeddings和卷积参数,从⽽使得⽤户底层的embeddings和卷积的参数可以通过丰富的公众号域的样本去进⾏提取和优化。

但同时也存在着新的问题:⽤户特征的分布差异⾮常⼤,⽤户在⼴告域⾏为⾮常稀疏,⽽⽤户在公众号域⾏为则是⾮常稠密,提取出的分布差异⽐较⼤。在这样的情况下,共享⼀个底层的卷积参数,可能会导致稀疏域的特征的提取能⼒受限。

基于这样的分析,我们提出了进⼀步优化,这⾥的优化主要分为两点:

在卷积层⾯,将⽤户的特征拆分出来,将提取出来的特征送进两个dense层,从⽽产⽣出⽤户的两个share embeddings。除此之外,把⽤户在各个域的对应⾏为单独拎出来做⼀路卷积,产⽣出⽤户在当前域的private embedding。从⽽可以强化两个域对于⽤户的特征的提取。

把两边User的share embedding通过MMD loss进⾏平滑,使得两边的embeddings的分布⽐较⼀致。

这个模式的设计帮助⼴告推荐取得了离线和线上效果的提升。

0 人点赞