cover_image

喜马广告算法优化(五):广告召回优化之路

sereny.chen 喜马拉雅技术团队
2024年07月12日 06:31

图片

一、前言 

实时竞价广告整体链路中,广告系统在接收到广告请求后,需要快速基于对流量的评估找出合适的广告返回给ADX参与竞价。要在极短时间内完成对海量广告的打分评估,业界普遍的做法与推荐系统类似,分为两个主要环节:召回和排序

广告的召回和排序两个阶段有不同的目标:

  • 召回:在所有候选集中找到相关的候选项。召回相对粗精排是粗筛,基于算力考虑,不能使用过于复杂的模型进行预估,但需要获得较为准确的topn广告;

  • 排序:排序直接决定了最后的结果,广告排序需要达到ecpm最优和收益最大化。因此,从商业角度来看,我们会优先推荐那些能带来最大收益的候选项。

图片
图1 广告打分环节

召回的目标是在大量的候选集中迅速剔除用户不感兴趣的项目,将合适的项目推荐给用户。考虑到系统性能,召回的过程并不会过于复杂。由于个性化和精度的限制,召回通常采用多支路多策略的方式,一方面是可以弥补单召回的不足,另一方面可以增加召回内容的多样性。使用多个简单召回,多路并行召回往往可以达到甚至超过单个复杂模型的效果。考虑到一些不同广告业务、广告主的额外需求,在实际的广告系统中,不同的场景、不同的广告类型以及不同的实验都会触发不同的召回策略。召回策略可分成非个性化召回和个性化召回。非个性化召回有热门召回、新物料召回、高点击或高转化召回等;用户感兴趣广告的相似召回、协同过滤等召回方式是个性化的召回,个性化召回中也会包含很多深度模型,通过训练向量进行召回。

二、多路召回结构

在我们的广告场景中,针对相关推荐场景和用户个性化实现了多路召回。在播放页场景下,内容的相关性要求高,我们结合用户当前播放专辑进行了相关广告推荐,使广告和播放的内容有更高的相似度。上线了内容的类目和文本匹配召回。在通用场景下,比如首页信息流等场景中更注重用户的个性化推荐,结合用户兴趣上线了协同过滤,广告向量召回,图模型召回等多路召回策略,这些解释性强的规则类召回和通过神经网络训练的向量化召回都能一定程度上对用户的广告兴趣有不同程度的补充,对比内容相关推荐而言也能推荐更多长尾广告。除了这些通用页面和广告位的推荐外,还有一些需要针对特定广告主或者指定内容下优化的场景,比如在儿童内容页面、电商广告等特定场景下,我们也单独针对内容和特定行业广告主做了一些定制化的召回。

图片
图2 召回优化历程

此外,由于链路中存在多种召回,基于业务需要搭建多路召回框架来适配分业务分广告位的迭代优化,提供更好的业务灵活性。我们可以分业务线、分广告位进行排序阶段的上下限召回权重调整,同路召回不同广告的权重大小和广告的排序分相关。可以一定程度上弥补粗精排能力的不足。

图片

图3 个性化调整权重

由于广告主可以自定义一些定向条件来选择广告的触达人群,这就意味着广告系统的召回输入集合并非全集。广告系统在进行召回的时候,也需要对广告主的广告状态进行判断,以确保不违反广告主设置的投放时间,因此,在广告系统中,召回模块首先要解决如何找到与当前流量匹配的可投放广告全集问题。召回模块会结合广告数据和用户数据筛选出初步的广告候选集,通过广告检索和召回进行广告粗筛。

  • 用户数据:可以通过请求中带的用户信息和上下文信息进行用户标签的实时更新,部分数据也可以通过线下离线全量更新。

  • 广告数据:广告主当前能投放的广告会存放在实时投放索引系统中,建成相应的广告索引。具体而言,广告主可以在广告管理平台上进行操作,实时修改广告的状态属性,广告系统需要对这些广告的状态进行实时的感知和响应。为了解决这个问题,一些召回模块会在检索阶段内置一份广告索引的数据,用于接收广告管理平台的状态变更。比如在展示类广告中,会额外增加以广告自身为主键的倒排检索,广告主对广告的状态属性设置都会存储在这个索引中, 比如广告的基础属性,上下线状态,广告对于时间、年龄、性别、地域、设备等的限制条件。

对这些数据在不同阶段进行有效的分析利用都能对整体的广告推荐起到正向的效果,在排序阶段进行更准确的预估,在召回阶段更高效的获取价值高以及用户感兴趣的广告集合送入粗排,整体架构如图所示。

图片

图4 多路召回

三、播放页场景内容相关召回

早期我们的广告场景主要以收入为目标,很少考虑广告与推荐的音频内容的相关性,而在播放页做了一些样式改版后,播放页推荐的内容更多以当前播放的相关内容为主,因此也需要进一步提升广告和内容的相关性来进一步提升广告点击率,也可以提升用户的体验一致性。因此在播放页的多个广告位上线了内容相关的召回,利用专辑类目和内容文本等数据做了几版迭代,取得了较好的效果,也进一步带动了广告收入提升。对比之前不考虑内容相关性的推荐,对生效广告位ctr相对提升18.4%,ecpm提升5+%。

图片     图片
旧版                            新版
图5 播放页2023年改版前后

为了提升播放页内容和广告的相关性,在播放页使用了内容相关召回,用当前播放的内容作为trigger召回广告。排序模型侧更注重ecpm和消耗最优,召回的相关性优化能更好的挖掘相关内容以及用户兴趣的匹配,也能和粗排互补来对送入精排的物料做更优筛选。

类目召回

基于规则召回是最常用的召回,也是可解释最强的召回。例如基于热门物品的召回,基于标签的召回,基于点击率的召回等。在喜马内容平台,专辑都会有对应的类目体系,针对要推广的专辑,我们根据其专辑类目标签进行了类目的倒排召回,其他非专辑广告按照相似的类别进行倒排召回。

文本相似召回

但是类目标签召回属于较粗粒度的匹配,同类目也存在内容相差较大的专辑和广告,为了更细粒度的挖掘广告和专辑的相似性,我们又利用内容的标签文本获取embedding来计算专辑和广告的向量相似度。我们的效果广告分为声播广告和ads广告,其中声播广告和平台内的普通专辑和声音形态类似,因此可以直接使用专辑的类目和文本体系做相似性推荐。使用BERT 做为 encoder 来对广告和专辑的标签文本进行向量的表示,基于faiss对向量构建索引进行文本向量检索召回。

图片
  图6 内容相似召回图

四、通用场景个性化规则类召回

除了做了一些内容相关的召回,我们也从用户维度来挖掘广告的相关性上做了一些优化,上线了一些经典的规则驱动类算法如itemcf召回,并基于业务数据做了一些适配,将其优化成计算广告主的相似度,这类算法解释性强,同个广告被相同用户喜欢的用户数越多,相似性会越高。

图片   图片
图7 通用场景

itemcf召回 

基于物品的协同过滤(item-based collaborative filtering)算法ItemCF是目前业界应用最广泛的算法之一,算法思想是是根据用户对物品的喜好来寻找相似的物品,然后根据用户的历史喜好来推荐这些相似的物品。在这里,我们使用最常见的计算规则来确定物品的相似度:如果两个物品的喜欢者的重合度越高,那么这两个物品就越相似。在计算相似度时,任何合理的“向量相似度计算”都可以作为协同过滤的依据,可以根据业务需求进行算法的迭代。

图片
图8 协同过滤相似计算

ItemCF通过用户的共同行为挖掘用户兴趣,由于我们的业务场景中广告用户行为稀疏,共同点击广告用户极少,为适配业务将ItemCF优化成使用共同点击广告主的统计数据来实现召回相似广告主的广告。

  • 离线部分:

    • 建立用户->偏好广告索引:记录了每个用户与广告的点击列表,只需根据用户id,就可以快速查询到该用户最近点击过的N个列表

    • 建立广告->相似广告索引: 通过使用相似度计算规则,可以离线计算出每个广告最相似的广告列表。只需给出一个物品,就可以快速查询到最相似的TopK广告

  • 线上召回部分:

        通过使用相似度计算规则,我们可以离线计算出每个广告最相似的物品列表。只需给出一个广告,就可以快速查询到最相似的TopK广告,在我们的场景中,由于计算的是广告主的相似度,因此从对应的相似广告主中挑选适当数量的物料进行召回。将适配业务的itemcf算法在单个场景下验证其效果后我们将其推广到了通用场景,在首页等其他页面下也取得了较好的收益提升, 整体效果广告消耗提升2.3%,Ecpm提升1%;

五、通用场景个性化模型类召回

上述提到的规则类算法实现较简单,但是个性化能力不足,马太效应聚集明显,而模型类算法个性化能力较强,推荐效果较好,相比规则类更有利于长尾内容推荐。我们也逐步迭代上线了一些模型驱动类的算法,如向量召回,图模型召回等,带来比较好的线上效果,这类算法能通过训练得到广告的表示向量,从用户行为中自动挖掘广告以及用户的关系,进而计算出广告的相似度。

广告的召回模块通常分为两种类型,即基于专家系统的规则驱动召回和基于数据驱动的模型驱动召回,对召回模块的改进,需要对这两种主要的召回算法进行持续的迭代和发展。这两种方法各有其优点和缺点,在许多广告系统中,它们会同时被采用,形成多个召回路径,以实现更大的收益。 

● 规则驱动召回算法:以规则为基础,逻辑通常较为简单,解释性强,非常适合作为初级阶段召回模块的基础算法;

● 模型驱动召回算法;以数据为基础,消耗的算力较大,解释性较弱,但效果通常更好,适合用于候选集规模较大的广告召回模块。

下面是我们业务场景下的两种模型驱动类算法,利用用户的历史点击行为来训练模型,训练获取广告的向量,通过挖掘用户对不同广告的兴趣以及广告之间的相似性来召回相似广告,整体带动消耗提升4.8%,Ecpm提升3.8%。

skip_gram向量召回

在处理序列数据时,序列中的局部数据之间通常存在强烈的关联性。例如,当用户浏览并与不同的广告进行交互时,当前的交互内容可以通过其前后的行为进行向量化表示。因此,我们可以使用skip-gram模型训练广告id的embedding。

Skip-gram是Word2Vec的实现方法之一,它的主要目的是将词语嵌入到低维度的向量空间中,以便捕捉词语之间的上下文关系。这种方法在各种NLP任务中都取得了优异的成果,并已扩展到包括推荐以及广告系统在内的多个业务场景中。我们基于用户点击广告的序列,使用skip-gram模型训练广告id的嵌入向量,然后利用这些向量计算广告之间的相似度,模型使用了层次softmax进行优化。这种模型训练方法有助于我们更好地理解用户的需求,并提供更精准的广告推荐。 

例如,假设不同用户有不同的广告序列,我们可以将广告序列视为一个“句子”,其中的每个广告ID视为一个“单词”,如下图所示,Skip-gram模型会尝试调整“平板”的向量表示,使得根据这个向量能够尽可能准确地预测上下文广告id,滑窗滚动时每个词都可以成为中心词得到向量表示,这些向量表示可以捕获广告之间的相似性。

图片
图9 skip-gram:通过中心词预测上下文

由于我们采用的是是离线计算广告相似度,而线上的物料库是实时更新的,而且广告定向检索会使很多物料不能分发到不在定向条件中的用户,这些会导致离线计算出的相似物料id线上不一定存在,最终召回物料量级很小。针对召回量不足的问题,由于同一计划的广告内容大致相同,我们可以将相似广告id映射到对应的广告计划id。这样,即使某些广告id在线上不存在,也可以通过广告计划id找到具有相似内容的其他广告,从而提高召回量。

Graphsage图模型召回

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

  • 信息流的用户天然是个图结构,图结构易于将信息整合起来,整合多种维度数据,有用户多次行为,信息丰富

  • 节点有多重类型,账户、广告点击、广告转化等

  • 在复杂系统中,信息并不能由独立的关联关系完全表征。

  • 多阶的联通关系使得图模型在协同推荐上效果优于双塔模型。

GraphSAGE是一种归纳学习框架,在模型训练过程中,它在已构建的图上对邻居节点进行由内向外的采样。在训练时,它只保留训练样本之间的边。然后,它包含两个主要步骤:Sample和Aggregate。Sample步骤是关于如何对邻居数量进行采样,而Aggregate步骤是关于如何汇集邻居节点的嵌入信息以更新自身的嵌入信息。以下是GraphSAGE学习的过程:

第一步,对邻居采样:每层随机选取一定个数的邻居节点。

第二步,采样后的邻居embedding传到节点上来,先聚合2-hop邻居到1-hop邻居上,再聚合1-hop邻居到目标节点上。并使用一个聚合函数聚合这些邻居信息以更新节点的embedding;

第三步,根据更新后的embedding预测节点的标签。

图片

图10 基于用户点击广告行为构建图

      我们基于用户点击广告序列构建广告关系有向图,过滤掉置信度较低的边,边权重计算时对热门节点进行debias。使用广告基础特征和广告内容理解文本特征作为节点属性。通过模型训练得到的目标广告节点的向量表示后进行向量检索,获取相似广告。

六、特定场景召回

在不同的业务环境中,召回需要解决的问题会有场景特性。比如不一样的广告行业,如教育、电商等;不一样的广告样式,如声音广告,图片广告等;不一样的广告位置,如开屏广告,信息流等。

电商类场景

在电商广告场景中,商品类广告投放商品类型多样,不同用户对不同商品也有各自的兴趣偏好,因此我们可以针对用户个性化召回不同的广告商品。在广告行业中,行业的分类维度较粗糙,sku对同账户的不同广告进行了更细粒度的分类,我们利用商品的不同广告计划的sku标注信息向量化进行个性化广告推荐,使用用户历史点击商品行为来召回用户感兴趣的广告商品,从而增加用户的转化,增加广告收入。

儿童播放场景

此外,在用户主要播放的内容为亲子儿童类专辑时,一些网服、游戏,以及成人广告在这个场景中可以被视为高风险广告,因为它们可能对青少年产生不良影响。因此我们对此类场景下的广告召回的内容做了安全性限制,利用文本分类模型预估广告是否适宜儿童,只召回安全的广告给收听儿童专辑的用户。

图片图片
图11 儿童场景特定召回

不同的业务场景下需要解决的问题不一样,要深入到不同的业务场景去解决问题,尽量在召回阶段保证召回候选集的用户个性化和场景个性化。    

七、效果评估方式

对于不同召回链路的效果,在日常工作中,我们可以通过离线和在线的两个角度来评估。

离线评测

  • 召回精度:衡量召回链路Top-N召回的准确性,也是最常用的评估方式,一般采用Recall、Precision、F1、Hit-rate几个指标。

  • 召回覆盖率:衡量召回链路对于长尾item的挖掘能力。例如计算召回item在整个物料池的占比,计算去掉top1%的item后的召回精度。

  • 召回多样性:衡量召回链路对用户不同的兴趣领域的覆盖度。例如以类目为用户兴趣领域,比较类目宽度。

  • 召回新颖性:衡量召回链路能否给用户推荐没有过行为的item。计算召回item的平均流行度,平均流行度如果越低,那么可以认为召回的新颖度越高。

在线评测

直接通过AB平台的效果指标来观察召回的效率,比如曝光占比,点击率,消费时长,多样性等。针对特定场景的召回,可以限定筛选条件,比如广告位,广告主,特定人群等

召回quota分配

除了评估单路召回的效果外,还需要让多路召回数量分配整体最优。一般新上的一路召回会固定召回个数,之后可以根据各路召回的后续表现动态调整召回quota比例,比如线上关键评估指标的高低、精排后的排名或者被曝光后用户是否点击,效果越好价值越高。若不同召回之前的重复度过高时,可以下线或者适当减少其中一路的召回数量。

八、展望 

现在广告推荐整体已经走向了广告商品化、创意智能化。我们也可以利用LLM强大的语义理解能力,从用户或者物料的多模态信息中抽取更为精准的表征向量。大模型在各个领域的应用趋势会逐渐由浅入深,由少到多。

此外,在做召回时,很多时候我们会去追求链路一致性,即让召回和排序的目标一致,这样理论上会让末端效果越来越好,但召回属于前链路,不断去学习后链路的目标会造成死循环,需要在召回样本或者新的召回通路上做一些扩展和探索。

召回,是整个链路的起点,在很多时候,起点也决定了终点。


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