淘宝搜索模型如何全面实时化?首次应用于双11

简介: 双十一当天,淘宝会产生很多的点击率。点击率(Click Through Rate,CTR)和点击转化率(Conversion Rate,CVR)预估在电子商务中的许多工业应用(例如搜索、推荐和在线广告系统)中发挥着重要作用。其中最主要的挑战是,用户、query、商品的特征分布以及ground truth的CTR/CVR可能受季节性、商家活动、大促等因素影响,随时间发生很大的的变化。受限于在线系统对模型的构建和切换的耗时,模型只能每N小时(N>=2)生效一次。因此模型不仅滞后实时数据N小时,而且由于模型是冻结的,也无法应对CTR/CVR的实时变化。下面我们一睹为快吧。

作者 | 向寒、元涵
1.jpg

前言

点击率(Click Through Rate,CTR)和点击转化率(Conversion Rate,CVR)预估在电子商务中的许多工业应用(例如搜索、推荐和在线广告系统)中发挥着重要作用。其中最主要的挑战是,用户、query、商品的特征分布以及ground truth的CTR/CVR可能受季节性、商家活动、大促等因素影响,随时间发生很大的的变化。预估模型适应这些变化主要有两种策略:

  • 模型引入实时信息,比如商品/用户实时特征,用户实时点击行为、曝光序列、端上行为等;
  • 模型继续引入实时数据,做实时增量训练,并在一天内多次更新预测模型。

但是,以上方案依然有局限性:即使模型的特征是动态的,增量数据是流式的,但是受限于在线系统对模型的构建和切换的耗时,模型只能每N小时(N>=2)生效一次。因此模型不仅滞后实时数据N小时,而且由于模型是冻结的,也无法应对CTR/CVR的实时变化。

为了解决这个问题,我们之前的方案是在deep cxr模型之上增加了一个小规模的online stacking模型,输入是deep cxr模型的分数,个性化匹配信息,用户/商品标签特征,实时统计值等等不是非常sparse的特征。通过online stacking cxr模型的实时更新(由于模型规模比较小)来弥补deep cxr大模型的实时性不足。online stacking模型的前身是搜索的online ltr模型,是搜索做了多年的一个成熟在线学习技术。

今年,通过和定向广告团队关于在线学习技术的交流,和过去online stacking/ltr模型的积累,我们提出了Multi-Layer Multi-Frequency的更新方法,直接对深度大模型做实时更新。Multi-Layer将模型按照权重大小结合业务逻辑拆分为三个部分,分别为freezing embeddings,changing embeddings和changing weights。

Multi-Frequency策略将freezing embeddings通过checkpoint全量切换更新,changing embeddings和changing weights进行实时更新。我们进行了离线与在线实验,实验结果表明我们的方法可以捕捉更加实时的数据分布,并进一步提升CTR/CVR预估的精度。此外,我们所提出的方法已经部署于生产系统中,日常和双11大促的在线A/B测试进一步证明了其有效性。

1.背景

淘宝和亚马逊等大型电商门户网站通过移动应用和PC网站为数亿用户提供数十亿商品。为了获得更好的用户体验和业务效果,帮助用户找到自己喜欢的商品是电商中最重要的任务之一。达成以上目标的最主要手段是对点击率(CTR)和点击转化率(CVR)的精准预估。其中最主要的挑战是,用户、query、商品的特征分布以及ground truth的CTR/CVR可能受季节性、商家活动、大促等因素影响,随时间发生很大的的变化。
捕获.JPG
如图1所示,CVR在日常一天内的ground truth会发生非常大的变化,最高点是最低点的4倍;如图2所示,双11前后两天的ground truth都跟双11有着极大的不同,尤其是CVR在双11当天是预热期的2.5倍+。因此,预估模型需要有能力去适应这些变化:首先,我们的模型在特征层面引入了更丰富更实时行为序列特征,端上点击序列,端上曝光序列,可以捕捉用户不断演化的兴趣;其次,去年双11,我们基于AOP平台实现了多路实时样本流的超大规模多目标模型在线联合学习,并在一天内多次更新预测模型。

今年我们在以上基础上,设计并落地了真正意义上的超大规模深度网络的在线学习,也就是streaming training real-time updating的模式。为此,我们提出了Multi-Layer Multi-Frequency的更新方法,将小时级别更新模型提升到分钟级更新和秒级生效。在双11当天,取得了相当不错的效果。

2.流式训练和实时更新

在原有模式基础上,feed更多的数据进行连续训练,我们将这种行为称为增量学习。实践中发现,增量学习可以稳定提升模型性能。在生产实践中,增量学习有几种不同粒度。其中普遍增量模式是,restore已有模型的checkpoint,采用批训练模式,全量部署上线,更新时效性为天级别。进阶的模式是,使用实时样本进行流式训练,但部署过程依旧采用全量模型切换,更新时效性为小时级。然而,最完美的增量学习解决方案是流式训练&实时更新。

2.1 Multi-Layer 权重

首先,在搜索的算法和工程体系下,实时更新全量模型是不现实的。搜索大模型权重包括Embeddings和MLP。其中embedding包括一些high sparse的ID类特征,比如item id。我们模型中item id数量在使用淘汰机制结果后依然为8亿,每个id的dimension为64,那么item id embedding大小为190G。这类high sparse的ID类特征,在RTP是以表的形式存储的,因此这样大的embedding是无法实时更新的。

其次,uid/item_id embedding这类high sparse特征进行纯实时更新是不适合的。high sparse特征需要更多的数据才能让embedding学习的充分,而学习不充分的后果就是模型在当前样本上过拟合,在未来样本上缺少泛化性。因此,我们倾向认为在日常情况下item id学习到的embedding是相对稳定的商品表征,稳定期可以到7天。只有在换季、大促期间,item id embedding在一天内才需要发生比较大变化。

因此,我们将模型权重按照sparse的程度分为三个部分,分别为freezing embeddings,changing embeddings和changing weights。其中,freezing embeddings对应模型中的high sparse embedding如user_id、query id、item_id。changing embeddings对应其余embeddings,如user profile embedding、商品品牌embedding、商品统计特征embedding。changing weights对应模型中的所有MLP部分权重。我们的模型结构和多层权重如图3所示。
3.jpg

图3 Multi-Layer Weights,灰色部分表示freezing embeddings,橘色部分表示changing embeddings,蓝色部分表示changing weights


changing weights包括sequantial modeling的MLP以及CTR/CVR任务prediction layer的MLP。为何对changing weights做实时更新是必要的?

首先,sequence中的MLP包含了序列化建模以及attention网络。我们采用Self-Attention对序列进行建模,weights包括Multi-head Attention中的Q、K、V的投影,以及FFN网络,通过这些参数建模序列中商品两两的依赖关系。我们采用商品的行为类型(点击、加购、购买)、停留时长、以及距离当前的行为时间,来计算不同商品的重要性权重,其中MLP就在学习这几种商品context的关系,来共同决定attention的结果。不管是序列依赖关系还是attention都是实时发生变化的,因此对序列中MLP的实时更新十分必要。

其次,prediction layer中的MLP主要学习不同抽取的向量表征之间的实时关系。比如用户当时当刻是更看重商品的品牌还是商品的价格,又比如当时用户是以自身的长期还是短期(Long -and Short Term)兴趣为出发点来选购商品。这些向量表征的关系是需要进行实时训练,从而可以分配实时的不同权重。此外,CTR和CVR预估不仅要保证用户和商品之间的序关系,而且要保证CTR和CVR预估值各自的准度。prediction layer依照实时数据的分布来调节网络中的参数,同时实时学习CTR/CVR的准确值。

2.2 Multi-Frequency 更新
4.jpg

图4 Multi-Frequency的更新策略


我们提出Multi-Frequency的更新策略,将freezing embeddings通过checkpoint全量切换更新,changing embeddings和changing weights进行实时更新,如图4所示。那么在Multi-Frequency的更新策略下,如何保证MLP和Embedding的一致性?日常策略:天级更新一次全量模型,天内进行模型实时更新;大促策略:双模型交替更新。

双模型交替更新如图5所示。大促当天我们准备了两个实时训练任务,分别称为模型A和模型B。模型进行流式训练,其中embedding和mlp全部参与训练,并通过checkpoint进行小时级别的构建和切换。模型B将high sparse的embedding fix住,训练其余embedding和mlp。具体过程如下:
5.jpg

图5 双模型交替更新

  • T为起始时刻,模型A和模型B恢复同样的checkpoint各自开始流式训练;
  • T+1分钟开始,模型B开始通过swift更新部分embedding和mlp参数到RTP;
  • T+2分钟,模型B继续更新部分embedding和mlp参数到RTP;
  • T+N小时时刻,模型A已累计训练N小时,此时通过checkpoint更新全量,并且在切换阶段停止模型B向RTP发送参数。
  • T+N小时+30分钟时刻,模型A切换完成,模型B restore 模型A同时也是线上的checkpoint。
  • T+N小时+30分钟+1分钟开始,模型B继续开始流式训练和实时更新。

2.3 实践经验

2.3.1 Streaming CTR/CVR CoTrain

进行streaming cotrain,需要同时消费CTR和CVR的样本流。这与离线cotrain有着很大不同。离线天级别cotrain,只需要按照样本比例设置固定的样本迭代概率,交替训练,最终两个task基本会同时结束。而实时训练是,CTR和CVR样本的比例关系是不固定的,因此需要使用动态样本比例。我们的方法是先基于一个固定的比例进行迭代,但是在迭代之前会先检查数据流中是否有足够样本,如果有足够样本才会执行当前task,否则切换另一个task执行。这样的方案,就不会卡主训练流程。

2.3.2 No Time Feature

模型中经常会引入时间特征提升模型在每个时间段的预估准度,比如day of week和hour of day两个参数,但是在实时训练的任务中,我们永远训练的是同一个时刻的数据,比如都是周一,13点的数据,模型容易在这两个特征上过拟合,而对下一个时刻周二9点的数据没有泛化性。

2.3.3 SyncSendSwiftHook

我们通过chief worker向RTP发送swift消息,而发送的过程中,training workers依然在频繁的更新PS中的参数。而流式训练任务任务的迭代速度为200 steps/sec,batch-size为1024,那么一秒中权重经过20万样本,变化200次。因此此过程中更新的参数,很大程度上会不一致。我们设计了SyncSendSwiftHook,它的逻辑是在chief发送权重之前,会设置一个标记位sending=True,而训练worker在每次训练前都会检查这个sending标记,如果发现sending=True则会sleep,直到chief worker发送结束后,将sending置为False。

2.3.4 Sending Mean and Variance

不要忘记更新BN中的均值和方差。因为均值和方差并不是trainable variable,是通过update op进行更新的参数,所以非常容易忘记,而引发严重的问题。

3.实验和分析

为了准确验证更新部分Embedding和MLP的方案的有效性,我们将可能的收益分为离线天级收益和实时收益。离线天级收益是指增量一天数据后,在新一天数据上的AUC提升值;实时收益针对流式训练实时更新模式,通过当前10分钟的训练对接下来10分钟的预测样本上的AUC提升。

3.1 对比方法

  • Base:全量模型,freezing所有weights。
  • ALL-EMB+MLP:全部参数参与训练
  • MLP:只训练MLP。
  • Part-EMB+MLP:训练部分embedding和MLP。

3.2 离线天级收益验证:

我们指定BASE模型训练到第T天数据,其他模型以BASE模型为基准模型增量第T+1天的数据。我们以所有方法在T+2天AUC表现来评价所有方法。如表1所示,ALL-EMB+MLP增量学习一天数据在next-day的AUC评测上,CTR提升0.16%,CVR提升0.18%;MLP在total AUC上可以获得ALL-EMB+ MLP全部收益,在PV-AUC上可以获得50%收益;Part-EMB+MLP在total AUC和PV-AUC上均可以获得ALL-EMB+MLP全部收益。
6.jpg

表1 增量一天数据后,在预测集的CTR&CVR AUC

3.3 大促实时收益验证:

我们以双11当天的实时CTR&CVR AUC为例,验证模型的实时收益。实时AUC统计线上30分钟窗口回流数据。为了更准确验证模型提升的有效性,我们在双11通过事件分别验证每个模块的有效性。

3.3.1 实时模型更新时间线:

  • 8点,实时大模型上线
  • 13点更新全量模型。
  • 17点30分,实时更新停止,
  • 20点30,实时模型开启。

3.3.2 分事件,CTR&CVR AUC对比:

  • 早上8点,实时大模型上线(只更新部分embedding+hidden layer),AUC提升非常明显,其中CTR AUC提升0.6%,CVR AUC提升0.8%。
    7.jpg

8.jpg

  • 13点更新全量模型(embedding+hidden layer全更新),AUC有进一步提升。其中CTR AUC提升扩大0.9%,CVR AUC提升扩大为2%。
    9.jpg

10.jpg

  • 17点30分,实时更新停止,CTR AUC提升维持在0.5%,CVR几乎无提升。说明在大促期间,CVR预测对实时性的需求更高。
    11.jpg

12.jpg
13.jpg

4.未来展望

首先,逐步推进流式训练+实时更新解决方案的日常化。在离线模型checkpoint全量更新期间,开启实时更新模式。日常测试结果为:CTR AUC 提升0.7%,CVR持平。其次,通过CTR模型的实时化方案和CTR收敛快的特性,可以考虑将算法工程师对大模型迭代调优的战场从离线批转到在线实时,这不仅可以提高模型调优的效率,也可以加速拿线上效果。此外,由于深度大模型的完全实时化,online stacking模型的必要性变弱,未来甚至可以去掉。最后,全链路的监控体系、稳定性仍需完善,实时链路已经是一个近online系统,要向online系统的生产安全标准靠拢。

相关文章
|
机器学习/深度学习 数据采集 人工智能
阿里巴巴首次揭秘电商知识图谱AliCoCo!淘宝搜索原来这样玩!
电商技术进入认知智能时代,将给亿万用户带来更加智能的购物体验。经过两年的探索与实践,阿里巴巴的电商认知图谱 AliCoCo 已成体系规模,并在搜索推荐等电商核心业务场景上取得佳绩,关于 AliCoCo 的文章《AliCoCo: Alibaba E-commerce Cognitive Concept Net》也已被国际顶会 SIGMOD 接收,这是阿里巴巴首次正式揭秘领域知识图谱。 本文将通过介绍 AliCoCo 的背景、定义、底层设计、构建过程中的一些算法问题,以及在电商搜索和推荐上的广泛应用,分享 AliCoCo 从诞生到成为阿里巴巴核心电商引擎的基石这一路走来的思考。
17111 1
阿里巴巴首次揭秘电商知识图谱AliCoCo!淘宝搜索原来这样玩!
|
2月前
|
小程序 算法
支付宝搜索,再添新能力!
支付宝搜索,再添新能力!
54 0
|
7月前
|
关系型数据库 分布式数据库 数据库
沉浸式学习PostgreSQL|PolarDB 8: 电商|短视频|新闻|内容推荐业务(根据用户行为推荐相似内容)、监控预测报警系统(基于相似指标预判告警)、音视图文多媒体相似搜索、人脸|指纹识别|比对 - 向量搜索应用
1、在电商业务中, 用户浏览商品的行为会构成一组用户在某个时间段的特征, 这个特征可以用向量来表达(多维浮点数组), 同时商品、店铺也可以用向量来表达它的特征. 那么为了提升用户的浏览体验(快速找到用户想要购买的商品), 可以根据用户向量在商品和店铺向量中进行相似度匹配搜索. 按相似度来推荐商品和店铺给用户. 2、在短视频业务中, 用户浏览视频的行为, 构成了这个用户在某个时间段的兴趣特征, 这个特征可以用向量来表达(多维浮点数组), 同时短视频也可以用向量来表达它的特征. 那么为了提升用户的观感体验(推荐他想看的视频), 可以在短视频向量中进行与用户特征向量的相似度搜索.
228 0
|
11月前
|
容灾 算法 数据可视化
闲鱼技术2022年度白皮书-服务端主题-电商搜索里都有啥?详解闲鱼搜索系统(中)
闲鱼技术2022年度白皮书-服务端主题-电商搜索里都有啥?详解闲鱼搜索系统
159 0
|
11月前
|
搜索推荐 UED 索引
闲鱼技术2022年度白皮书-服务端主题-电商搜索里都有啥?详解闲鱼搜索系统(下)
闲鱼技术2022年度白皮书-服务端主题-电商搜索里都有啥?详解闲鱼搜索系统
167 0
|
11月前
|
存储 移动开发 自然语言处理
|
11月前
|
存储 缓存 安全
《Elastic(中国)产品应用实战》——六、使用新的冻结层直接搜索 S3
《Elastic(中国)产品应用实战》——六、使用新的冻结层直接搜索 S3
《Elastic(中国)产品应用实战》——六、使用新的冻结层直接搜索 S3
|
2天前
|
算法 关系型数据库 分布式数据库
如何用 PolarDB 整合age算法插件, 实现图式搜索加速 - 刑侦、社交、风控、族谱、推荐等业务图谱类关系数据搜索
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力.本文将介绍PolarDB结合图式算法, 实现高效率的刑侦、社交、风控、族谱、推荐等业...
|
搜索推荐 SEO
怎样做好搜索下拉优化?百度搜索推荐词的推广方式
怎样做好搜索下拉优化?百度搜索推荐词的推广方式
184 0
|
存储 SQL 并行计算
如何用 PolarDB 整合age算法插件, 实现图式搜索加速 - 刑侦、社交、风控、族谱、推荐等业务图谱类关系数据搜索
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力. 本文将介绍PolarDB结合图式算法, 实现高效率的刑侦、社交、风控、族谱、推荐等业务图谱类关系数据搜索.
314 0

热门文章

最新文章