热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DCGNN:面向大规模广告召回场景的解耦式图模型方法

丨目录:摘要背景方法实验分析总结参考文献1.摘要在广告召回场景中,图神经网络(GNN)由于其强大的拓扑特征提取和关系推理能力

目录:

· 摘要

· 背景

· 方法

·  实验分析

· 总结

· 参考文献

1. 摘要

在广告召回场景中,图神经网络(GNN)由于其强大的拓扑特征提取和关系推理能力成为最先进的技术之一。大规模广告召回场景通常包含了数十亿量级的商品和数百亿量级的交互关系,导致传统的基于GNN的召回方法训练效率低。在训练效率的限制下,通常只能应用浅层的图模型算法,这极大限制了图模型的表达能力,从而降低了广告召回的质量。为了提升训练效率以及图模型表达能力,我们提出了解耦式图模型方法(DC-GNN)以改进和加速基于GNN的大规模广告召回。DC-GNN主要包含三个阶段:预训练、深度聚合与双塔CTR预估。具体来说,预训练阶段设计有监督的边预测任务和自监督的图多视野对比学习任务相结合的多任务学习以重点学习图节点属性信息,同时有效增强GNN鲁棒性;深度聚合阶段利用异构线性图算子进一步高效挖掘图深层结构信息来增强图节点的向量化表达;双塔CTR建模阶段将前两个阶段生成的节点向量化表达作为输入,获取预估分数以进行广告召回。DC-GNN通过将双塔CTR预估和图操作进行解耦,使得训练复杂度独立于图结构,有效提升了训练效率。同时,深度聚合阶段允许更深层次的图操作以挖掘高阶图结构信息,从而有效提升了模型的表达能力。大规模工业数据集实验表明,本文所提的DC-GNN方法在大规模广告召回场景下模型性能和训练效率都获得了显著提升。

2. 背景

近年来,在线电商平台在人们的生活中越来越普遍,其通过搜索、广告、推荐等系统来帮助用户从数十亿商品中更好地找到他们所需要的。以淘宝广告系统为例,主流的解决方案通常可以粗略地分为两个阶段:召回阶段、排序阶段。召回阶段负责从数十亿的候选库中挑选一组相关的商品,然后排序阶段对该组相关的商品进行排序并根据机制确定最终的展示位置。在以上两个阶段中,CTR预估均起着重要的作用。不同的是,召回阶段的CTR预估旨在高效地从庞大的候选库中挑选相关商品,排序阶段的CTR预估负责精细化地排序相关商品。在本文中,我们主要关注召回阶段,该阶段的CTR模型通常被设计为双塔结构以高效地检索。

图神经网络(GNN)由于其强大的特征提取和关系推理能力成为电商广告召回最先进的技术之一。GNN的核心是迭代地从邻居节点聚合信息到目标节点,以捕捉图中高阶近邻来缓解数据稀疏问题。传统的基于GNN的大规模广告召回面临两个挑战:

  1. 该场景通常包含数十亿量级的商品和数百亿量级的关系,且图操作随着层数的增加复杂度指数增加,庞大的图数据和复杂的图操作导致图模型的训练效率较低;

  2. 在训练效率的限制下,只能应用浅层图操作(1~2层),使得目标节点只能获取有限的邻居信息,限制了图模型的表达能力。

为解决以上挑战,本文提出解耦式图模型方法(DC-GNN),将传统的基于GNN的双塔CTR模型解耦为三个阶段:图预训练、深度聚合与双塔CTR预估。每个阶段的主要贡献如下:

  1. 图预训练阶段设计多任务学习,即有监督的边预测任务与自监督的图多视野对比学习任务,重点学习图中节点的属性信息,同时增强GNN的鲁棒性;

  2. 深度聚合阶段利用异构线性图算子进一步高效挖掘图深层结构信息来增强图节点的向量化表达;

  3. 双塔CTR预估阶段将前两个阶段生成的节点向量化表达作为输入,获取预估分数以进行广告召回。

DC-GNN通过将双塔CTR预估和图模型解耦,使得训练复杂度独立于图结构,有效提升了训练效率;在图预训练阶段学习丰富节点属性信息的基础上,深度聚合阶段允许复杂、深层的图操作进一步高效地挖掘图深层结构信息,从而有效提升了图模型的表达能力。我们在大规模工业数据集上的实验表明,DC-GNN在大规模广告召回场景下训练效率和模型性能都获得了显著的提升。

3. 方法

图1展示了DC-GNN的整体框架,主要包含图预训练、深度聚合以及双塔CTR预估三个阶段。

fe514cc106dd6b048e74cda4f9cb2588.png
图1: DC-GNN框架

3.1 图预训练

预训练阶段主要关注图节点的属性信息学习。如图1 Stage 1所示,大规模异构图(Main graph)主要包含query、user、ad三种节点,每类节点包含丰富的属性信息,图中的边表示点击行为。考虑到效率性,我们在异构图上以每个节点为目标节点进行三次随机游走(RW),为每个节点产生三个子图(Subgraph)。其中第一个子图用于边预测任务(Link prediction),其余两个子图用于对比学习任务(Contrastive learning)。

3.1.1 边预测任务

边预测任务旨在预测图中两个节点之间是否存在边,如图1中的query和ad。边预测任务的优化目标为:

其中表示余弦相似度函数;和表示一对正样本,即两者在图中存在边;表示第k个负样本。注意我们用点击行为作为图中的边,因此边预测任务的目标与CTR预估阶段在某种程度上是一致的,这意味着我们用CTR预估来引导预训练阶段节点的向量化表达。

d0e1a435bfc1152f7e4a22a21a18a95c.png
图2: 困难负样本. (a) 可控难度k-hop负样本 (b) 结构负样本

如图2所示,为了提升节点向量化表达的质量,并使得GNN更加关注节点属性信息的学习,我们探索了两种类型的困难负样本():

  1. 可控难度的k-hop负样本。以中心目标节点为query为例,我们选择其k-hop (k>=2)广告邻居节点ad作为负样本,通过改变参数k则可以改变负样本的难易程度。距离query越近的ad节点更为困难,越远的则越简单。此类负样本忽略图结构,使得GNN可以关注节点属性信息的学习。

  2. 结构负样本。仍以目标节点为query为例,保留其正样本ad的邻居结构,并将该ad替换为来自全局负采样的负样本。理论上,结构负样本生成了假子图,但其拓扑结构与真实子图一致,并保留了全局负采样的随机性。因此,在正、负样本相同的图结构情况下,GNN会更关注节点属性信息的学习。同时,由于GNN天然容易过度依赖图结构,此类负样本可以缓解over-smoothing问题。

3.1.2 图对比学习任务

在工业场景下,由于效率的限制,节点向量化表达的更新通常都是以子图形式进行的,子图的生成会引入随机性和干扰。为了提升GNN的鲁棒性,捕获节点的泛化性特征,我们补充了多视野图对比学习任务。如图1 Stage 1所示,以目标节点为query为例,第二个和第三个子图是同一目标节点的两个增强视野,它们被视为正样本对(和),任意不同目标节点的增强视野则被视为负样本对(和)。对比学习损失函数旨在最大化正样本对的agreement,并且最小化负样本对的agreement。目标节点query的优化目标为:

其中,表示图中的query节点。同理,可以获得对于目标节点user和ad的优化目标和。因此,对比学习任务的目标函数为:

最后,利用多任务训练策略来联合优化边预测任务和多视野图对比学习任务,预训练阶段的损失函数为:

其中,表示模型参数,和是用于平衡和正则的超参数。

3.2 深度聚合

深度聚合阶段旨在高效地挖掘图的深层结构信息以进一步增强图节点的向量化表达。如图1 Stage 2所示,对异构图中的每个目标节点生成三类关系子图(Relation subgraphs),以目标节点为query为例,我们可以采样得到其query子图、user子图以及ad子图。假设分别表示关系子图预先计算好的一阶、二阶、三阶以及更高阶的邻接矩阵,用于捕获和保留不同阶近邻的信息。注意区别不同阶近邻的信息是必要的,可以使得图结构得到充分的学习。假设预训练阶段学习到的节点向量化表达为,则第二阶段增强后的节点向量化表达为:

其中,表示深层聚合阶段的节点向量化表达。

异构线性图算子实质上是一种并行前向传播的策略,可以使得计算复杂度与图层数呈线性关系。因此,其在图操作本身上进行了加速,使得深层图结构的挖掘更加高效。除此之外,在最终节点向量化表达中我们保留了节点的局部信息(Locality)来缓解深层图结构学习中可能出现的over-smoothing问题。

3.3 双塔CTR预估

如图1 Stage 3所示,我们构建了双塔CTR模型,其中一个塔为(query, user),另一个塔为ad,前两个阶段生成的节点向量化表达作为CTR的输入,优化目标为:

其中,我们利用(query, user)-ad点击结果当作正样本对(即(q, u)-),展示了但未点击结果当作负样本对(即(q, u)-)。CTR阶段获取预估分数,以进行广告召回。

4. 实验分析

该部分我们选择了部分实验进行展示,更多的结果详见论文。

DC-GNN: Decoupled Graph Neural Networks for Improving and Accelerating Large-Scale E-commerce Retrieval https://www2022.thewebconf.org/PaperFiles/19.pdf

4.1 与SOTA方法的对比

我们利用从淘宝APP收集到的大规模异构图数据作为数据集进行实验。表1所示为DC-GNN与SOTA方法在AUC和Hitrate@K方面的对比,最好的结果加粗显示,次好的结果下划线显示。实验结果表明,在AUC指标上,DC-GNN相比于其他方法获取了最好的效果,这主要是因为DC-GNN在深度聚合阶段挖掘图的深层结构信息以增强模型的表达能力,突破了传统大规模广告召回场景只能应用浅层图模型的瓶颈。另一方面,我们通过Hitrate@K来评估模型性能,DC-GNN与其他方法相比获得了有竞争力的效果,并且随着K的增大,DC-GNN的优势明显扩大,这表明DC-GNN可以显著提高中长尾候选商品的预测结果。

66c7cd32e9998e4fdbee8d8382e43f7a.png
表1: DC-GNN与SOTA方法的性能对比

图3展示了DC-GNN与轻量化图模型在训练效率上的对比。我们将LasGNN方法的训练效率作为基线,并计算其他方法的加速比。实验结果表明,随着GNN层数的增加,基于采样的轻量化图模型方法计算复杂度会急剧上升;基于高效传播的轻量化图模型方法(例如SGC、LightGCN)可以获得更好的训练效率,这归功于它们抛弃了图算子中的线性转换和非线性激活模块。相比之下,DC-GNN由于解耦了CTR预估和图操作,使得训练效率独立于图结构,因此,其可以获得更高的训练效率,且随着图层数的增加,训练效率的提升越明显。

54413e1a73127f007311f8f0ad58bc6b.png
图3: 训练效率对比

4.2 对DC-GNN的研究

4.2.1 图预训练

为验证图预训练阶段多任务的效果,我们对比了DC-GNN在只有边预测任务或者只有图对比学习任务下的性能。如表2所示,LP表示模型只被边预测任务优化,CL表示模型只被对比学习任务优化,最好的结果粗体显示。实验结果表明,边预测任务和对比学习任务均对模型效果有正向作用,且两者联合优化时,DC-GNN可以获得最好的结果。

f021088fca0f8f7667ca2dc4ab3f85f1.png
表2: 多任务的效果对比

4.2.2 深度聚合

为了验证深度聚合阶段聚合层数与聚合邻居的影响,我们在聚合层数1~5以及聚合邻居2~10分别进行了实验,实验结果如图4所示。实验结果表明,当聚合层数小于5时,随着聚合层数的增加,模型性能有效增加,此时当聚合层数继续增加时,模型效果趋于平缓;值得注意的是异构线性图算子使得图模型的计算复杂度与层数呈线性关系。当聚合邻居小于6时,随着聚合邻居的逐渐增加,模型性能有效增加,此时当聚合邻居继续增加时,模型效果趋于平缓。考虑到训练效率、网络复杂度以及模型性能,在深度聚合阶段,我们分别采取了4层聚合层数以及5个聚合邻居。

a4da952646eaa72ee4706cf5376e0e7f.png
图4: 聚合层数(a)以及聚合邻居(b)对性能的影响

5. 总结

本文提出了DC- GNN,将传统的基于GNN的双塔CTR框架解耦为图预训练、深度聚合以及CTR预估三个阶段,以缓解模型性能与训练效率之间的权衡。图预训练阶段通过多任务学习关注节点属性信息的学习,深度聚合通过线性图算子进一步高效地挖掘图深层结构以增强节点向量化表达,双塔CTR以前两个阶段的节点向量化表达为输入,获取预估分数以进行召回。在大规模工业数据集上的实验表明,DC-GNN在训练效率和模型性能上均取得了显著的提升。其中训练效率的提升主要归功于双塔CTR与图模型的解耦,模型性能的提升主要在于预训练阶段节点属性信息的充分学习以及深度聚合阶段深层图结构信息的学习。

该项工作相关内容已发表在 TheWebConf 2022,欢迎阅读交流。

论文:DC-GNN: Decoupled Graph Neural Networks for Improving and Accelerating Large-Scale E-commerce Retrieval

下载:https://www2022.thewebconf.org/PaperFiles/19.pdf

参考文献

[1] Fabrizio Frasca, Emanuele Rossi, Davide Eynard, Ben Chamberlain, Michael Bronstein, and Federico Monti. 2020. Sign: Scalable inception graph neural networks. arXiv preprint arXiv:2004.11198 (2020).

[2] Jiancan Wu, Xiang Wang, Fuli Feng, Xiangnan He, Liang Chen, Jianxun Lian, and Xing Xie. 2021. Self-supervised graph learning for recommendation. In Proceedings of the 44th International ACM SIGIR Conference on Research and Development in Information Retrieval. 726–735.

[3] Yanqiao Zhu, Yichen Xu, Feng Yu, Qiang Liu, Shu Wu, and Liang Wang. 2021. Graph contrastive learning with adaptive augmentation. In Proceedings of the Web Conference 2021. 2069–2080.

[4] FanLiu,ZhiyongCheng,LeiZhu,ZanGao,andLiqiangNie.2021.Interest-aware Message-Passing GCN for Recommendation. In Proceedings of the Web Conference 2021. 1296–1305.

END

e99b46a00465a3f27537f84350227c26.gif

也许你还想看

从二值检索到层次竞买图——让搜索广告关键词召回焕然新生

基于生成式回放的流式图神经网络模型

图深度学习模型进展和在阿里搜索广告中的应用创新

关注「阿里妈妈技术」,了解更多~

e850f82d4d544640fe6e2321a835766c.gif

喜欢要“分享”,好看要“点赞”ღ~

↓欢迎留言参与讨论↓



推荐阅读
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 【图像分类实战】利用DenseNet在PyTorch中实现秃头识别
    本文详细介绍了如何使用DenseNet模型在PyTorch框架下实现秃头识别。首先,文章概述了项目所需的库和全局参数设置。接着,对图像进行预处理并读取数据集。随后,构建并配置DenseNet模型,设置训练和验证流程。最后,通过测试阶段验证模型性能,并提供了完整的代码实现。本文不仅涵盖了技术细节,还提供了实用的操作指南,适合初学者和有经验的研究人员参考。 ... [详细]
  • 《Intel IA-32 架构软件开发人员手册详尽指南》提供了详尽的 IA-32 架构技术文档,涵盖指令集、系统编程和硬件接口等内容,为软件开发人员提供全面的技术支持和参考。该手册不仅包括详细的架构说明,还提供了丰富的编程示例和最佳实践,帮助开发人员更好地理解和应用 IA-32 架构。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 题目《BZOJ2654: Tree》的时间限制为30秒,内存限制为512MB。该问题通过结合二分查找和Kruskal算法,提供了一种高效的优化解决方案。具体而言,利用二分查找缩小解的范围,再通过Kruskal算法构建最小生成树,从而在复杂度上实现了显著的优化。此方法不仅提高了算法的效率,还确保了在大规模数据集上的稳定性能。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • 本文详细介绍了在 Vue.js 前端框架中集成 vue-i18n 插件以实现多语言支持的方法。通过具体的配置步骤和示例代码,帮助开发者快速掌握如何在项目中实现国际化功能,提升用户体验。同时,文章还探讨了常见的多语言切换问题及解决方案,为开发人员提供了实用的参考。 ... [详细]
  • 分页机制详解:实现高效数据加载与展示
    在数据集合庞大且需要部分展示的情况下,分页机制能够有效提升用户体验和系统性能。通过合理划分和组织数据,确保每个页面的数据量适中,便于用户理解和操作。该机制特别适用于数据量大、不适合一次性加载全部内容的场景,如电子商务网站的商品列表、社交媒体的信息流等。分页不仅提高了页面加载速度,还优化了数据展示的逻辑性和可读性。 ... [详细]
author-avatar
Cynthia番茄际_382
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有