cover_image

喜马广告算法优化实践(三):广告CTR模型优化实践

elias.xu 喜马拉雅技术团队
2024年02月20日 04:00

图片

一、CTR模型在业界的发展介绍

        近年来,随着深度学习技术在CV、NLP等领域的不断发展,在线广告领域中经典的CTR预估问题,也在经历着深度学习技术带来的范式转变。业界的主CTR模型目前也已经全面拥抱深度模型,深度CTR模型表达能力更强,并且根据不同业务的特点存在很大的结构设计空间,从不同的建模角度和业务需要出发,深度CTR模型在技术路线上逐步衍生出了如下一些发展方向,并涌现出一批比较经典的模型:

  1. 特征交互建模:Wide&Deep、DeepFM、xDeepFM、DCN(v2)、PNN、AutoInt、CAN等;

  2. 用户兴趣建模:DIN、DIEN、DISN、MIMN、SIM、ETA、SDIM、TWIN等;

  3. 多场景建模:HMOE、STAR、AdaSparse、MARIA、DFFM、PEPNet、HiNet、HC^2等;

  4. 结构搜索:NIS、AutoEmb、AutoDim、AutoFis、PEP等;

  5. 特征Embedding重要性建模:FiBiNet、FiBiNet++、ContextNet、MaskNet、GateNet、AMTL等。

        总结来说,业界多数广告深度CTR模型的基础结构是Embedding&Feature Interaction&MLP,如下图1所示。首先,用户(User)、广告(Ad)、上下文(Context)维度的特征先离散化成ID后,再被转换成稠密的Embedding表征向量;其次,有一些对多个特征进行交叉建模的模块,用于生成交叉维度的Embedding表征向量;最后,各个原有特征及交叉特征的Embedding向量被Concat在一起,给到MLP部分,最终输出一个pctr值。业界的模型发展也主要聚焦在这三个模块上,针对特定的业务和数据特点做迭代优化。

图片

图1 深度CTR模型基础结构图

        接下来的篇幅,首先,介绍喜马自营效果广告深度CTR模型在Sparse部分(Embedding、Feature Interaction)、Dense部分(MLP)、模型时效性、模型训练框架上的优化实践。然后,展望一下后续的迭代方向。

二、模型结构优化

2.1 Sparse部分

        Embedding部分的作用是对用户(User)、广告(Ad)、上下文(Context)上的一些属性进行个性化表征,如用户ID、广告ID、专辑ID等,每个ID在模型的Embedding部分都会分配一个独立的参数向量,Embedding部分随着ID空间的膨胀,其大小也会不断增长,通常占据模型整体参数量的95%以上。Embedding部分奠定了模型个性化能力的基础,其学习的好坏对模型预估的差异化和精准性至关重要。

        Feature Interaction部分的作用是发掘利用多个特征组合维度的信息来进一步提升广告个性化预估的能力。如用户收听成人英语内容标签特征和广告成人英语标签特征组合建模之后,从而让模型预估有成人英语内容收听兴趣标签的用户对有成人英语标签的广告的ctr更精准一些。

2.1.1 用户广告偏好特征的设计

        用户的广告展点行为直接反映了用户对广告的偏好。结合喜马自营效果广告多广告位投放、且不同广告位广告样式差别明显带来点击率差异大的特点,我们设计了一些用户广告位-广告-展现数-点击数的历史聚合统计序列特征。例如把用户u1对广告a1历史30天的展现点击整体作为一个单独的离散ID特征给到模型进行学习,从而让模型更好地捕捉用户在不同广告位上针对不同广告的行为偏好,离线实验来看,总体auc有1个千分点的提升,线上ecpm指标有1.3个百分点的提升。


2.1.2 LLM理解广告内容标签特征

        考虑到大语言模型对文本有通用的理解、归纳、推理能力,广告的文案创意中蕴含着广告主向目标受众传达的重要信息。因此对广告的创意文案用LLM提取出了关键词、目标人群等一些文本语义标签特征,并结合用户的历史广告点击行为将这些标签打到用户身上,反映出用户对不同类型广告的偏好。基于用户和广告的这些标签特征,提升了CTR模型对广告内容的理解能力,离线auc有3个千分点的提升,线上ecpm有1.7个百分点的提升。结合多模态大模型的CTR模型广告图片创意理解也在探索中。

图片

图2 广告内容语义标签挖掘示意图

2.1.3 用户广告行为序列特征建模

        用户针对广告的历史点击行为序列反映了用户的广告偏好,从业界实践看,对CTR预估效果的提升有显著的作用。简单直观的方案是对用户历史广告点击行为序列特征直接进行avg pooling,但这种方案无法反映用户广告点击行为和目标广告的关联,一个改进的方案是通过Target Attention的方式对用户行为序列进行建模,让用户的广告行为序列信息随着目标广告的不同而差异化。Attention的计算方式如下,Q代表目标广告的embedding,K和V都是用户历史点击广告ID的embedding,scale是一个可学习的变量,用于缩放attention score的大小。Attention可以看作是特征交叉建模中的一种方式。具体到喜马的广告业务中,广告主投放的广告有创意、计划、账户、行业多个不同的维度,用户很少会重复点击同一个广告创意,我们在实际建模过程中,把广告多个维度的ID的embedding进行Concat后,再和用户的点击序列进行Attention Score计算,这样效果更明显,离线auc有1个千分点以上的提升。

Attention(Q, K, V)=softmax(\frac{QK^{T}}{scale})V

图片

图3 广告行为序列attention网络结构示意图

2.1.4 组合特征

        针对特征交互建模,业界在模型方法上也进行了较多的尝试,一类是像DeepFM、PNN、DCN、ONN等方法,每个特征ID的embedding既承担表征学习的任务,又承担交叉建模的任务,通过embedding之间的内积、哈达玛积等计算方式来建模特征交叉;另一类是CAN,把用作表征学习的ID特征的embedding和用作特征交叉建模的参数分离开,通过一个精心设计的MLP结构来建模特征交叉。此外,还有一类比较简单有效的特征交叉建模方式是基于笛卡尔积的特征组合,特征组合的目的是对用户或者广告的特征做更细粒度的隔离,从而增强模型的个性化表达能力。举例来说,如下图所示,性别(取值空间2)与广告类目(取值空间N)组合后,组合特征的取值空间是2N,其中每个特征取值都会有自己独立学习的embedding,极大增强了模型的学习空间。但基于笛卡尔积的特征组合,会带来模型参数空间的爆炸,伴随着需要更多的样本才能保证组合特征embedding参数的有效收敛,也会给线上推理服务带来很大的压力,需要有节制的使用。

        在喜马自营效果广告CTR模型上,我们针对用户收听内容标签ID序列特征与目标广告ID特征的交互建模,对比过CAN、Attention、笛卡尔积的离线效果,相比笛卡尔积来说,CAN和Attention没有显著的auc提升。但CAN和Attention由于特征交叉带来了的整体计算复杂度的明显增加,考虑到线上推理服务的性能要求,我们目前主要仍是采用基于笛卡尔积的特征组合建模方案。

图片

图4 特征笛卡尔积组合示意图

2.1.5 ID特征的动态化准入&淘汰

        喜马app上的用户和广告集合是在不断更新变化中的,对于模型来说,用户和广告侧对应的ID特征也在不断进入和退出。我们基于DeepRec训练框架(后文介绍)对ID特征做了如下一些处理:

  1. 模型要动态地适应ID特征的增减,模型的大小是随着Embedding个数的变化也处于不断变化中;

  2. 对于模型训练使用的样本来说,各个ID出现的频次是不同的,大量存在的低频ID特征的embedding是难以学习好的,特征本身会存在很大的噪声,并且会显著增加模型的大小,因此需要设置一定的频次准入门槛,对低频不达门槛值的ID特征进行过滤,这样低频的ID特征的embedding在未准入之前的值是全0,对模型预估值不产生影响;

  3. 对embedding的初始化值设置在较小的范围内,从而缓解新ID更新次数较少时带来的高估问题;

  4. 一些在最近一段时间样本中不再出现的ID,对模型当前的预估不再有用,随着模型的长期增量训练,ID特征Embedding大小不断膨胀,模型体积的不可控增长给线上推理服务带来了稳定性隐患。在不影响模型效果的前提下,我们对一段时间内不更新ID特征的Embedding进行淘汰,将模型的体积缩小为之前的40%,同时保证了模型体积的可控增长。

2.2 Dense部分

        MLP部分(FC)的作用是提供非线性的拟合能力。目前MLP部分在业界的技术发展主要有两个方向:第一、与Embedding部分融合,通过门控等机制实现MLP部分在样本粒度的差异化,进一步提升了模型的刻画能力,这方面的工作有MaskNet、GateNet、PPNet等;第二、根据一些重要特征动态生成MLP的权重,更好地发挥一些关键特征的作用,这方面的工作有M2M、APG等。

2.2.1 多广告位的多塔结构

        喜马自营广告在app内有多达几十个广告位,不同广告位的样本量、点击率有高达几十倍的差距。需要探索相适应的多广告位联合建模方案,来反映不同广告位的个性和共性,同时提升模型单次迭代的收益,降低维护成本。我们从特征和模型结构上进行了一些探索。在特征上,最直观的方案是把广告位ID特征、广告位ID与广告的一些组合特征,直接embedding后,给到MLP部分,通过特征刻画来反映不同广告位上的差异,但在我们的场景中实际效果并不理想;于是在模型结构上,借鉴多任务建模中的SharedBottom结构,MLP部分尝试每个广告位拆一个单独塔,只使用对应塔的样本更新对应塔的参数,通过每个塔来反映不同广告位的差异,离线auc有2个千分点的提升。具体结构如下图5所示。

图片

图5 广告位多塔网络结构示意图

2.2.2 多广告位感知的moe结构

        按广告位拆塔的建模方案,适用于广告位数量相对稳定的情况,如果广告位不断变化,则需要针对修改模型结构,重新训练模型,不够灵活。因此,我们设计了广告位感知的moe(mixture of experts)网络结构,能更好地应对喜马场景下广告位数量较为频繁的动态变化。通过广告位维度的特征刻画和门控网络,从广告位expert集合中自适应地提取广告位维度的表征信息,同时也能更灵活地在不同广告位之间传递信息。相比上述的广告位拆塔方案,离线auc有2个千分点的提升。具体结构如下图6所示。

图片

图6 广告位注意力专家网络结构示意图

三、模型时效性与更新方案优化

3.1 从天级更新到小时级更新

        在广告业务场景中,每个小时都会存在新广告的创建投放,模型能够快速学习最新样本对模型的线上效果有着重要的影响。之前的CTR模型是在T当天用T-1及之前十几天的样本进行一次全量更新,样本从产生到更新到模型中的端到端时延高达几十小时。后续的优化上,首先对训练样本生产的pipeline进行了优化,考虑到曝光点击样本的回收延迟并不高,我们将训练样本由T-1生产提速为H-1生产,每个小时生产上个小时的训练样本;其次,对模型训练方式进行了优化,将天级全量训练修改为T-1样本天级增量训练+T样本小时级增量训练,每天更新十几次,优化之后模型的端到端更新时延降低为之前的十分之一。优化之后带来了业务ecpm指标3%的提升。

图片

图7 模型更新时效性前后对比图

3.2 从滑动窗口增量训练到长期增量训练

        为了发挥出稀疏大模型承载更大参数容量的优势,需要让模型使用更长时间周期的训练样本,从而进一步提升模型的训练效果。从离线评估来看,回溯更长时间的历史样本,会带来模型auc的进一步提升。因此,我们对模型的训练方式进行升级优化,将之前历史十几天样本的滑动窗口天级全量训练+当天样本小时级增量训练方式升级为三个月样本的全量训练+天级增量训练+小时级增量训练方式,新模型上线前,会先全量回溯三个月的样本,后续开始常态化天级增量训练和小时级增量训练。通过训练方式的升级,模型训练的样本数增加了几十倍,带来了业务ecpm指标1%以上的提升。

图片

图8 增量更新方案前后示意图

四、模型训练框架优化

4.1 训练框架迭代

        合适高效的模型训练框架对模型的调研迭代效率提升至关重要。原生的TensorFlow框架的Embedding功能对高维稀疏ID特征的支持存在缺陷,即Embedding的个数在使用前需要预先指定,模型的大小在训练过程中是固定不变的。但实际CTR模型在增量训练过程中,会有新的ID不断加入,整个Embedding的大小是会动态变化的,随之模型的大小也在不断变化,合适的Embedding大小难以预先估计,静态的Embedding往往会带来不同ID特征的Embedding值冲突问题。通过和中台团队的合作,将模型的开发框架从TensorFlow转向了阿里开源的DeepRec框架。DeepRec中EmbeddingVariable功能支持embedding参数的按需生成,并且可以灵活控制ID特征的准入和淘汰,支撑了CTR模型参数量百倍地增长。

图片

图9 动态Embedding准入和淘汰示意图

4.2 训练提速

        单机单卡:我们的训练样本通过Spark生产,保存成Parquet格式。阿里开源的HyBridBackend框架对稀疏模型训练过程中的数据访问、稀疏计算以及分布式训练都进行了深度优化。首先,HyBridBackend的数据列选择性解析特性可以支持读取 Parquet 文件时只读取选择的字段;其次,可以充分利用CPU资源并行读取多个Parquet文件,以及并行解析多个列,极大提升数据读取和解析的性能,让数据访问不再是训练提速的瓶颈。通过训练数据管道的优化,GPU单卡训练时的平均利用率提升了3倍,训练时间降低了50%。

        多机多卡:随着模型参数量和训练样本量向百亿级的演进,单机单卡训练已经不能满足我们对迭代效率的要求,通过和阿里云的合作,我们走向了EasyRec+DLC框架下的PS-Worker异步多机多卡分布式训练方式,初步测试,在多worker多张gpu卡的配置下,在百亿样本上的训练时间降低了1倍以上。

图片

图10 训练pipeline前后对比示意图

五、总结与展望

        我们深知喜马自营效果广告CTR模型虽然取得了一些进展,但仍然有很多可以进一步优化的空间,展望未来,我们还可以在如下几方面上进一步提升:

  1. 能力增强,广告内容理解更深入:结合多模态大模型的能力,增强模型对广告内容(图片、文字、视频)的理解,进一步提升模型的个性化预估能力;

  2. 打牢基础,Embedding层重要性差异化:随着模型稀疏ID特征的不断增加,Embedding层也膨胀了数十倍,但不同ID对应Embedding的重要性是有差异的,我们希望进一步提升Embedding层的表征能力;

  3. 应对变化,多场景预估能力提升:面对后续广告位的迭代更新和AIGC应用带来的千变万化的创意形式,探索更优异的多场景建模方案,注重个性和共性,进一步提升所有场景的预估能力。

继续滑动看下一个
喜马拉雅技术团队
向上滑动看下一个