Fork me on GitHub

CTR 2023 最新进展:Calibration based MetaRec CTR

以下文章来源于 https://zhuanlan.zhihu.com/p/671193362

导读 本文主要介绍 Shopee 的个性化 CTR 方法:基于校准的元学习 CTR 方法。

围绕下面几部分展开:

  1. 业务介绍

  2. 建模目标定义

  3. 模型演进及优化

分享嘉宾|汤其超、杨浩强、肖玄基 shopee Expert Engineer

编辑整理|王丽颖

内容校对|李瑶

出品社区|DataFun

01业务介绍

首先来介绍一下 Shopee 的业务背景。



Shopee 直播是内嵌在电商 APP 中的一个场景,整体业务目标是优化直播效果。直播场景的推荐系统架构包括召回、粗排、精排和重排,本次主要介绍精排相关工作,围绕精排中的 CTR 目标优化展开。

02建模目标定义



直播推荐的业务指标主要是提升正向反馈,如时长、互动、订单等,同时减少负向反馈,如短播放等。如上图所示,用户显式的正反馈包括点击主播头像、关注、点赞、点击展示商品、加购、评论等;隐式正反馈包括播放时长、有效播放等;而隐式负反馈主要包括短播放、终止 Session 等;显示负反馈主要是 Dislike,这种并不常见。

因此,我们根据用户反馈定义了部分建模目标,包括内容消费目标,如 CTR、停留时长;电商消费目标,如 ATC、Order 等。本文分享的工作主要涉及内容消费目标。

03模型演进及优化

1. 启发工作 Calibration4CVR



Calibration4CVR 是 18 年提出的基于 Representation Calibration 的网络架构,实现了 CTR 与 CVR 神经元粒度的共享,核心思想是基于 CTR 层校准 CVR 层的网络学习。

2. 模型优化-元学习建模 CBMR(Calibration based meta-Rec)



元学习建模 CBMR 的基线是 Wide&Deep 模型,本质是千样本一模,基本上所有样本共享一套模型参数,虽然可以从数据中提取出一般性规律,但对于不同类型样本个性化的建模缺乏刻画。本文提出了 CBMR 模型,取得了显著的业务效果。

CMBR 模型基于 meta-Rec 分别从 Emb 层和 MLP 层实现不同样本自适应生成模型参数,从而实现千样本千模。EmbCB 是在 Embedding 层实现不同样本自适应生成特征重要性权重;MlpCB 是在 MLP 层实现不同样本自适应生成网络个性化参数。

(1)模型优化-元学习建模 EmbCB



首先对于 EmbCB 模块,我们最初调研了业界的 SeNet 网络,其基本思想是对Embedding 层后的 Sparse 特征 Mean Pooling 后再 concat,通过网络先降维后升维生成特征权重。该网络在我们业务数据上 AUC 负向较多,经过观察,特征权重输出全为 0,可能是 Sparse 特征失效,猜测是输出层激活函数 relu 导致。因此我们将输出层激活函数换成了 sigmoid,AUC 表现基本持平,但特征权重全为 0.5,说明输出层的输入全为 0,我们猜测是隐层激活函数 relu 导致。因此后续我们把 relu 激活函数换为了 elu,AUC 表现仍持平,特征权重仍为 0.5,我们猜测是隐层表达能力不够导致的。后续我们通过调整隐层初始化由正态分布到均匀分布,将隐层宽度由 16 增加到 32,AUC 与权重表现仍一致,因此我们猜测该现象是由输入层基本为 0 导致。



接下来我们对输入层进行分析,输入层对特征 Embedding 做了 Mean Pooling 操作,本质是原始特征向量乘一个固定向量。我们对其进行了优化,将固定向量改为一个可学习向量,同时将隐层激活函数改为了 linear。由观测结果来看,AUC 基本持平,但同一样本不同特征权重差异大,不同样本同一特征差异小,在 0.1 范围波动,可能是由于输入层提取到的信息太少导致。后续我们把共享向量由 1 个改为 2 个,AUC 得到了 0.15% 的提升,不同样本同一特征差异明显在 0.3 范围波动,该思路证明有效,但输入层信息提取仍不够。因此我们继续加大了输入层信息提取力度,将输入层共享向量由 2 增加到 16,AUC 可以得到 0.36% 的提升,特征权重差异更加明显,在 0.5 范围波动。同时为了提高隐层的非线性能力,我们把隐层激活函数由线性 linear 改为非线性 relu,共享向量直接 concat,隐层宽度改为 128。结果观察到 AUC 提升 0.5%,不同样本特征权重差异大,在 0.9 范围波动,符合预期。



总的来说,SeNet 在 Shopee 的直播场景效果不理想,可能是因为直播 Rank 的特征包括 32 个 sparse+144 个 dense 特征,其中 sparse 特征数量较少,而隐层维度太小可能导致了学不到东西。同时,sparse 特征的权重应该限制在(0,1)区间内,不能过于放大某一特征的作用,造成过拟合。Senet 最后一层 relu 可能会导致某些特征权重过大,带偏其他特征。因此我们做了三点改进:输入层:由先Pooling 再 Concat,改为直接 Concat 作为输入;隐层:由先降维再升维,变成一直降维;输出层:激活函数用 Sigmoid 取代了 Relu。

(2)模型优化-元学习建模 MlpCB



对于 MlpCB 模块,我们首先调研了业界的 PPnet 网络,主网络输入的是非userid 和 hostid 的特征,门网络输入 userid 和 hostid 重要特征,同时主网络与门网络都不会对其他 id 特征进行 BP。该网络在我们业务数据的实践结果是 AUC-1.5%,分析是因为 userid 和 hostid 都是重要特征,去掉会导致主网络学习欠拟合。后续我们把主网络输入层改为所有特征,AUC 达到了持平的效果,经过进一步分析,门网络不对主网络进行 BP,对现有特征 Embedding 影响小,模型训练难度低,天花板低。因此我们调整门网络的输入层,改为所有特征都 BP,效果立竿见影,AUC 提升明显,符合预期,但多层门网络输入都是所有特征,参数量大,性能差。后续我们把多层门网络由并行改为串行,每一层门网络的输出作为下一层门网络的输入。该方法 AUC 提升 1.25%,效果与性能均符合预期。



我们将 PPnet 与 MlpCB 进行了对比,直播 Rank 中的 userid 和 hostid 特征作用较大,主网络中应该保留。主网络和门网络同时对 Emb 进行更新,相比于单独对 Emb 更新,模型学习难度更高,导致模型效果上限更高。我们总结了如下三点改进点:主网络输入层:由非 userid 和 hostid 的其他特征,改成所有特征;门网络输入层:由非 userid 和 hostid 的其他特征不 BP,改成所有特征都 BP;多层门网络连接方式:由并行改为串行。



经过实验验证,CBMR 的业务效果大幅超越了 Wide&Deep 模型,AUC 提升 1.9%,累计大盘时长 +4.87%,订单 +13.91%。同时我们也在各个业务场景进行了尝试,都有较大的提升。经过业务场景检验,CBMR 是一个较为有效的模型结构。

3. 模型优化-多任务建模 MultiCBMR(Multi Task Calibration based meta-Rec)



进一步地,我们将 CBMR 推广到了多任务建模中,提出了 MultiCBMR。我们的基线是 DBMTL2 模型,该模型每个 Expert 输入和网络结构都相同,这会导致 Expert 间趋向同质化问题。为了解决这个问题,我们提出了 MultiCBMR 模型。MultiCBMR 模型通过引入 Emb 层自适应生成器 EmbCB,在 Expert 的输入层实现不同样本特征权重不同;通过引入 MLP 层自适应生成器 MlpCB,在 Expert 的 MLP 层实现不同样本网络参数不同。



接下来介绍 MultiCBMR 的演进。首先基线是 DBMTL2,ctrAUC 与停留时长 AUC 有少量提升,MlpCB 只影响 Expert 最后一层,深层表征影响有限,因此我们将 MlpCB 影响扩大,将其作用于 Expert 每一层后,AUC 得到了进一步提升。后续我们分析应该进一步扩大 MlpCB 的影响,因此我们进行了两个方向的尝试:首先,将 MlpCB 的作用范围变为 Expert 每一层+Task 每一层,该方法 AUC 持平,但参数量大,性能差;另外,将 MlpCB 同时作用于 Expert 输入层,该方法 AUC 提升明显,说明浅层表征影响大,效果好。

每个 Expert 的 EmbCB 是共享的,经过实验发现不共享的效果差不多但参数量太大,因此 MlpCB 是不共享的。



MultiCBMR 的业务效果大幅超越娱乐 DBMTL2,离线 AUC 与线上效果表现都有明显提升。

4. 模型优化-多场景建模 MultiCBMR(Multi Scene Calibration based meta-Rec)



我们进一步将 MultiCBMR 推广到多场景建模,对多个场景的 CTR 进行联合建模。经过验证,多个场景、新老用户的效果都有所提升。

以上就是本次分享的内容,谢谢大家。




本文地址:https://www.6aiq.com/article/1702085741609
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出