本文主要分享过去一年我们在搜索广告召回的传统领域--关键词召回方向上的一些实践。通过二值检索、层次竞买图两期的工作,先后完成了关键词召回从两阶段近似建模到一段式、从一段式到联合召回的两次算法架构升级,既在算力约束的情况下让召回阶段大批量广告在线打分成为可能,也让不同设计目标的Query改写算法不再"内卷",打开独立优化的空间,让直通车关键词召回焕然新生。 1 背景 随着移动互联网及信息技术不断创新,电子商务已经是数字化转型的基础设施,其中,商品搜索场景是客户寻找商品的必经环节,如何帮助客户定位所需商品成为了重要挑战,也是搜索广告商业化中帮助广告主精准投放广告要解决的重要问题。在阿里妈妈直通车搜索广告业务中,主要采用关键词拍卖与竞价排名的产品形式,因此,竞买词Bidword作为广告主圈选用户主动搜索流量的重要抓手,不仅起到计费作用同时也是重要的桥梁与计费作用。一直以来,关键词改写召回作为一种从用户搜索Query出发的召回方法,主要通过对Query的改写扩展与<Bidword,Ad>的买词倒排关系,形成相关广告召回与计价,它的优势在于: 利用广告主自主圈选关键词流量的集体智慧,从Bidword维度分配流量,是搜索广告的启蒙形式; 倒排索引是天然的动态索引,新广告买词append到对应倒排链末尾实时生效,能高效承载几十亿规模的广告索引与检索。 在关键词召回方向上,我们从改写关系<Query,Bidword>与倒排静态分<Bidword,Ad>两方面进行迭代,如图1.1所示,提高改写分与静态分两阶段近似海选分<Query,Ad>的准度,取得了业务效果与系统性能收益;但同时我们也意识到,目前的两阶段近似海选分,在面向效果的海选打分准确性与实时性、面向相关性与效果两个不同目标的改写通道融合quota分配问题上,仍是亟待解决的难题,且最终效果天花板受制于关键词召回目前先改写再打分的架构。 图1.1 直通车关键词召回海选分的演进 算力强约束 :在倒排检索内存与计算消耗约束下,用轻量高效检索模型替代改写分与静态分,提高海选打分的准确性与实时性。quota-free全局排序 :使关键词多目标改写不再需要设置quota,解耦改写分,实现各Bidword倒排链全局可比的排序。联合召回 :进一步突破先召回Bidword再检索广告的模式,构建检索模型与索引结果联合学习、Bidword与Ad联合召回的高效高精度算法。我们通过使用低存储与低计算的二值检索模型替换海选静态分,实现了海选从两阶段近似打分到一段式全局排序的跨越,在为低精度异质检索探索出有效方法的同时,大大优化了引擎负载与离线维护成本,打破了关键词召回的迭代天花板;又通过<Ad,Bidword>联合召回的层次竞买图,将DNN全库检索落地直通车召回场景,突破了关键词召回先改写再打分的架构,实现了检索模型与索引结构、改写与广告召回的联合学习。 2 广告改写的历史与新目标 在搜索广告场景较早期的阶段,竞价排名的产品形式决定了商家参与流量竞价的主动权在商家传统精确、宽泛的买词。广告改写的早期目标本质是提高召回率与高竞价队列填充(RPM最大覆盖),保障平台的竞价候选充足,因此广告改写算法作为关键词召回提效的关键,雅虎、百度等搜索引擎公司不断有改写相关研究出现;而随着推荐技术大踏步进入深度模型时代,算法的瓶颈不断被模型、算力克服,业界主要的研究也更集中在直接面向最终效果的query/user与ad的匹配排序问题上,广告改写因不是通用的推荐问题逐渐淡出了广告业界的主要研究方向。面对这个现状,将改写召回的目标对齐到最前沿的模型技术与面向最终效果学习的样本流,贯穿在我们的广告改写模型迭代中。 同时,随着各种商家推荐产品的发展,尤其是<Bidword,Ad>的传统人工买词关系也进入机器挖掘推荐词的阶段,我们意识到需要更积极的使用点击日志挖掘之外的语义目标,才能跳出“商家端推荐词、投放端改写计费”的数据自循环。为此我们在基于以RPM最大覆盖为目标、Query与人群共同隐式表达的深度双塔改写模型DeepNB基础上,强化语义抽取与关系生成,提出了面向语义关系的生成式改写模型GRM。但我们在生成式改写模型上线过程中发现,面向相关性的改写难以保证广告圈选集合的召回率与高竞价队列填充率,对大盘竞价(PPC)有负向影响,最终上线方案实际是与面向效果的DeepNB改写方法做通道融合竞争,而这个融合策略使改写不同通道间的改写分量纲不同,引入了难以优化的quota分配超参数。 因此,抛弃改写分、解耦召回quota分配,在海选阶段用一个统一的<Query,Ad>全库打分指标,在满足索引存储与检索效率下进行所有改写通道召回广告间的全局排序,解决高相关性与高竞价填充率的改写通道无损融合,将是打破现有关键词改写天花板的重要升级重构。经过过去一年在二值海选、层次竞买图两期的工作,我们顺利解决了以上问题,先后完成了从两阶段近似到一段式、从一段式到联合召回的两次算法架构跳跃,让直通车关键词召回焕然新生。 3 从两阶段到一段式:二值海选 在关键词召回方向上,为了提高在倒排索引上的召回准度与效率,我们一直采用改写关系<Query,Bidword>与倒排静态分<Bid,Ad>两阶段的方式,用Query->Bidword->Ads近似<Query,Ad>的准度。目前这种两阶段近似海选分存在两个问题: 两阶段近似海选打分不能直接面向<Query, Ad>关系建模,仍然依赖改写词间的改写分决定倒排检索各链检索数量配额,无法解耦改写多通道融合配比问题,也很难打开现有改写召回天花板。 静态分是<Bidword,Ad>粒度,数量达到十亿量级,离线全量打分对离线计算资源是很大的消耗,且因调价频繁,对更新链路也有较大的性能压力。 基于以上问题,我们考虑使用基于低存储与低计算的二值表征检索,替代两阶段近似打分,主要解决两方面的问题: 一段式全局海选 :直接面向<Query, Ad>关系建模二值表征模型,只需要128bit存储、位运算打分即可满足海选阶段超大候选集合下的置信广告召回。改写不同通道quota分配问题将被全局统一、量纲一致的二值打分彻底解决,面向不同目标的『改写』结果不再需要考虑如何分配召回配额,为未来B库迭代打开空间。 根本性解决静态分模型的历史遗留问题,可以用准ODL的模型训练与实时索引,提高对用户偏好与商家投放意愿的捕获速度。 位运算的度量计算效率极高,且对索引内存占用较低,支持上亿量级的倒排索引构建,相比静态分几乎没有性能损失与内存膨胀。 链路简化,焕然新生 :更新链路粒度从<Bidword,Ad>简化为Ad,更新链路非常轻量。二值表征替代了很多静态分相关的字段,精简倒排索引字段的同时,也下掉老字段相关的在线模块与大量离线节点,大幅解耦历史包袱,让引擎轻装上阵。二值海选在为低精度异质检索探索出有效方法的同时,实现了从两阶段近似打分到一段式全局排序的跨越。如图3.1,改写作为一级索引,专注于解决相关性广告集合圈选问题;二值海选作为二级索引,在改写圈选的所有倒排广告链上二值检索,并全局排序获得召回集合。 图3.1 从两阶段近似打分到二值全局排序 3.1 量化一致性 vs 表征能力 二值表征目前主要研究方向是基于Learning to Hash的方法,在模型训练过程中对输出量化,增强训练/预测一致性,主要方法可分为Activation-based、Regularization-based两大类。其中Activation-based方法是在输出层增加激活函数,使向量取值趋近于{-1, 1}。由于sign为非连续函数,容易出现梯度消失问题。一种经典的方法是通过连续函数tanh逐渐逼近sign,如图3.2。 图3.2 LTH激活函数方法 而Regularization-based方法在特定任务损失外,增加量化损失,使向量取值趋近于{-1, 1}。如比较常见正则化项为双峰拉普拉斯先验分布,等价于L1正则化,得到接近-1与1的稀疏解,二值表征模型如图3.3。除量化损失外,还可增加向量方差损失(均匀映射)、参数正交损失(独立映射)等正则化项,实现多目标优化。 图3.3 LTH正则化项约束方法 上述方法大多用于图像到图像的verification任务,使用MAP(Mean Average Precision)作为评价指标,数据集规模相对较小。将上述方法直接应用到直通车搜索广告的大规模召回场景,离线Recall指标显著不达预期。我们对两类量化方法分别设置了三组对照实验:“全精度”代表正常训练得到的float32全精度向量,作为base;“二值全精度”代表LTH模型直接输出,未做二值处理的float32全精度向量;“二值”代表LTH模型输出,并截断为{-1, 1}的bit二值向量。 增加二值正则化项后,二值全精度的recall相比于全精度有提升,说明正则化项对全精度模型训练能起到抑制噪声的作用。但二值量化后的recall极低,完全丧失表征能力,说明其对精度依赖性高,量化一致性差。 使用二值激活函数后,二值全精度与二值的recall差异较小,量化一致性好,有效降低了对精度的依赖性。但与全精度相比,recall明显降低,对表征能力的影响较大,仍难以满足要求。上述实验结果表明,当前主流二值表征模型无法用于大规模召回。基于对数据、实验的深入分析,为兼顾量化一致性与表征能力,我们将目光放在了强化符号主成分上,提出面向大规模检索的二值量化方法。 3.2 大规模二值量化检索 3.2.1 二值化方法 二值化的本质可以描述为:将原本连续的取值,映射到{-1, 1}的离线取值上。但其实,它的取值可以是任意绝对值相等的离散取值集合,差异仅由符号体现。{-1, 1}是最简单的表达形式,但不意味着模型要直接学习这种形式。向量检索任务通常使用余弦距离,等价于原始向量归一化后计算点积。在二维空间中,归一化相当于将全空间映射到圆环上,消除了向量的模长差异性,仅保留角度差异性,模型更容易学习;而二值化相当于将全空间映射到矩形四角的固定点上,仅保留有限取值的角度差异性。根据以往经验,归一化向量更适合在大候选集合下的大规模检索,因此我们思考如何将归一化与二值化有机结合。 图3.4 归一化向量空间与二值化向量空间 假设 维向量 第 维取值为 ,归一化等效于约束: 。二值化等效于约束: 。很明显这种情况下,归一化与二值化无法同时成立。为使两者兼容,我们将二值化的定义扩展为:对任意 , 。由此得到归一化且二值化的定义: 。由此优化目标变为,向量归一化后各维绝对值尽可能接近,既保留向量表征能力,又实现最小量化误差。在二维空间中的最优点为图3.4中蓝色虚线与红色圆环的四个交点。 为使归一化向量尽可能接近最优点,受主流LTH方法的启发,我们也相应地设计了两种方法: Activation-based :输出层增加线性激活函数。起到线性放大、截断的作用,线性放大在一定区间内可保留向量各维的相对大小关系,逐渐增大 逼近sign函数,激活函数如图3.5。图3.5 线性激活函数 线性激活:2 先经过线性放大变换到3 ,再将取值大于|1|的部分截断,变换到矩形上的4 。 经过上述步骤,实现了归一化向量从2 到5 的变换,即逐渐向最优点偏移。 图3.6 Activation-based方法示例 Regularization-based :已知 ,要使 取值接近,即分布尽可能均匀,等价于最小化向量的方差。将 作为正则化项,通过约束 使向量各维绝对值趋于相等,突出符号位的作用。
两种方法的recall接近,Activation-based方法的动态参数 在训练过程中指数增长,引入了更多超参数,指标浮动范围较大。而Regularization-based方法可使用固定参数 ,指标相对更稳定。对两种方法做评估后,我们选择使用Regularization-based二值量化方法。在二值表征模型的样本构造上,如果采用预估点击率的pv/click样本,无论任何方法召回效果都很差。主要原因是面向pctr的模型学习结果分布集中在[0, 1]区间靠近0的较小范围内,刻画序关系对精度要求高,二值量化造成的信息损失过大,因此我们需要从负样本构造上均衡匹配分的分布,给二值表征学习足够的分割能力。 3.2.2 低精度纠偏 在搜索广告场景下,Query提供的搜索意图与Ad相匹配非常重要,而二值表征模型因精度不足会损失准确性与多样性。我们通过在Pairwise训练中通过引入对Ad类目判别辅助任务,作为一种面向I2I关系学习的约束目标,约束Ad在类目空间上的内聚性,目标函数设计如图3.7所示。在实验上证明了引入辅助任务后召回率与类目符合率都大幅提升。 图3.7 借助广告类目监督辅助任务约束I2I关系 同时,为解决模型召回分布集中、多样性不足、偏向高点击量广告的问题,我们引入广告周期与点击规模debias的辅助目标,类似于SSB下流行度偏差(Popularity Bias)的一些行业实践,将广告按创建时间、点击量规模划分为64个分层,通过设计不同分层的倾向性得分(Propensity Score),达到均衡不同广告周期与信号强度的海选打分偏差的目的。 3.3 实验与效果 我们将以上介绍的大规模二值量化检索方法,落地在直通车召回场景,在每日增量校验中二值表征相比全精度表征,离线指标Recall@1000的绝对值差异稳定小于5%,类目符合率绝对值差异小于2%。同时,建设了面向新广告的实时二值表征消费链路,新广告可以在2s内完成二值索引的计算并合入在线索引参与竞价。 空间复杂度:用128bit的二值向量,与64维float32向量召回率指标相接近,达到16倍的内存压缩;结合老静态分相关字段被替换下线,索引总大小还略有下降。 时间复杂度:64维float32向量内积,需要64次浮点乘法,而128bit的二值向量内积,只需要进行一次异或运算与一次bitcount,计算量显著低于全精度,与查询静态分相比rt也几乎没有提升。 因二值检索能力相比静态分大幅提升,关键词召回通道占比也显著提升,在各场景CTR指标都有非常积极的表现。通过实验观察广告周期分层、不同点击信号数量分层看,各个层分布均匀,没有明显在新广告上的召回折损、没有对高点击量样本广告的偏向。 4 从一段式到联合召回:层次竞买图 通过上述二值海选的工作,我们有效学习了用128bit对大规模广告集合的二值表征,其物理意义可以理解为将广告投射到128层满二叉树的叶子节点上,而代表空间划分的子树代表了用户相似搜索意图的人群簇,也代表了广告主圈选目标客户的竞买簇。因此,我们考虑压缩表征空间,用更紧凑的树形索引建模检索结构,探索搜索广告召回模型在索引结构与检索模型联合训练方法。 Bidword竞买具有层次性 :Bidword竞买深度从激烈到独特、描述从宽泛到详细,呈现非常强的竞买层次关系,Bidword可以组织在树形索引的中间节点上,构建以Bidword可解释性的层次检索过程。
联合召回<Ad,Bidword>:将关键词召回改造为改写关系<Query,Bidword>与二值海选<Query,Ad>的二级索引后,仍然有一部分高价值广告受制于目前的先改写再打分的二级索引架构,因一级索引『改写』没有圈选到导致无法召回。为了解决此问题,我们希望通过改写关系与二值海选的联合优化,将树形索引与Bidword充分绑定,在沿树逐层检索到叶节点广告的路径上同时召回相关Bidword,实现<Ad,Bidword>的联合召回。
更强的检索模型 :树形索引将广告全库集合做层次划分,压缩总打分次数,拆分子空间纠偏全库打分偏差,能够支持我们将向量度量升级到DNN复杂模型,提升召回模型拟合能力。
综合以上出发点,我们使用树形层次索引的方法将DNN全库检索落地直通车召回场景,如图4.1突破了关键词召回先改写再打分的架构,大幅精简高热广告库倒排索引大小,以Ad层次召回指导Bidword从粗到细粒度检索、以Bidword竞买关系约束Ad召回相关性,显式建模Bidword广告主竞买关系优化竞价分配,形成可解释的竞买关系召回通路,实现了检索模型与索引结构、改写与广告召回的联合学习。 图4.1 从先改写再打分的二级架构,到<Ad,Bidword>联合召回 4.1 竞买图预训练 竞买图内引入了丰富的连通性信息,来约束图学习表征在Co-Click、Co-Bidword、Co-Semantic三方面的关系。与同质图不同,异质图需要考虑不同关系下邻居信息的差异,图中主要包含4种描述不同关系的边,包括刻画用户行为的<Query,Ad>、刻画广告主买词行为的<Ad,Bidword>、刻画Term match语义关系的<Query,Bidword>、与刻画Ad语义关系的<Ad,Ad>。我们通过对图学习的metapath采样与multiview拆分,对多种关系下的节点表示进行融合得到一个较为全面的节点表示,实现了多重关系的同图同空间建模,有效抑制了不同关系互相干扰的情况,在不同类型图节点下的检索均能得到较好的结果,以此竞买图预训练结果作为层次索引构建的初始化向量与检索模型的dense特征。 图4.2 层次竞买图索引Overview 4.2 层次索引构建方法 目前的索引方案使用了树形检索结构,类似展示广告TDM的索引方法,通过EM迭代联合训练检索模型与索引结构。同时,与二值海选低精度纠偏中采用的训练方法一样,我们在检索模型训练中通过引入对Ad类目判别辅助任务,目的是在一个比较小的类目解空间内约束Ad在结构上的内聚性,使得匹配相似用户意图的广告集中在同一棵子树上。 图4.3 检索模型与索引结构联合训练 4.3 面向竞买关系的检索模型 建立层次检索的索引,形成Bidword高内聚簇之后,我们根据叶子节点Ad所实际购买的Bidword集合,自底向上地投票汇聚公共竞买Bidword到他们在树形索引上的最近公共祖先节点,赋予中间检索节点多个Bidword与Term的解释,用于在检索到叶子节点的过程中,召回路径上相关Bidword。这样也使得任意两个不同Ad节点,在索引上的距离与Bidword共同竞买关系高度相关,距离越远代表公共竞买关系越弱,越近代表越在同一种流量下高度竞争。通过挂载Bidword的过程,我们将百万量级的Bidword赋予在树形索引中间节点上,最粗粒度描述的竞买词如”连衣裙“、”手机“被挂载在最浅层节点上,最细粒度的竞买词如”牛油果绿春装上衣女中长款“则在叶子节点的父节点上。 得受益于效能团队“二向箔”项目对算力的充分挖掘,我们在检索模型上从一期的向量度量升级为二期的DNN模型结构,将id特征在高维空间内交叉,相比DSSM类的向量度量有更高的拟合能力,同时也需要更强的泛化性约束,防止检索模型在记忆之外,不能补充有效召回增量。联合检索过程如图4.4所示,在沿树路径进行Beam search的检索过程中,同时对路径上的Bidword进行相关性打分,在检索到最后一层Ad之前,就能评估出检索Ad路径上与Query满足相关性条件的Bidword改写词。 为了兼容低活广告与新广告的召回关系,在检索Ad路径上选定了Bidword后,会对所选Bidword所在子图进行二次扩展。我们会根据竞买关系图Co-Bidword、Co-Semantic的关系,专门构建高热Ad到低活Ad、新Ad的映射关系,面向共同Bidword竞价与属性节点关联的相似新广告进行规则式扩展,并在后链路进行一定冷启扶持。 图4.4 竞买路径检索与扩展过程 4.5 实验与效果 层次竞买图与全库暴力打分相比,离线recall与类目符合率均有一定提升。
2021年双12全量上线,为大盘营收效率带来较为显著的提升;面向用户体验的Gob相关性指标上也有较好表现。 5 关键词召回的业务思考 理解 :相比排序模型在竞价阶段广告候选集合下侧重学习pCTR绝对值与pcoc预估准度,召回模型则是在全部广告集合下侧重学习粗粒度的集合序关系,用有限的算力与表征能力,提供足够多Query/User模式下的空间度量关系。强信号强记忆模型适合拟合出更高的召回率,而弱信号强泛化模型适合为下游细致预估环节供给更多多样性候选,通过优化召回模型与策略,在两者之间寻找一个均衡地带,提供在相关性约束下,不强依赖点击先验、包含足够多样性、竞价充分的最优召回集合。现状 :在深度学习可解释性与结果可控性研究没有取得突破之前,召回模型在一段时间内仍需要以不同目标来设计多个召回通道,用通道融合与给定配额的方式组合供给下游的预估竞价集合,如让高roi的行为重定向广告与Query字面相关广告独立排序,都有配额进入下游参与竞价,避免从供给端就向单一目标倾斜,加剧全链路系统的数据循环、破坏竞价生态。不同目标的召回通道间,配额需要结合流量价值、用户意图倾向、系统算力等多方面因素进行动态分配,是一个结合更多下游策略来考虑的问题。展望 :召回业务承载着广告引擎最上游广告供给的职责,如果视野只看召回的一亩三分地,会发现撬动大盘的能力越来越有限。我们欢欣鼓舞在各召回通道上迭代模型涨了离线Recall/Hitrate,往往因为指标辛普森悖论、通道间重叠、下游打分偏差等原因,无法为大盘带来明显的竞价集合与效果变化。因此未来关键词召回业务的着力点,将聚焦在全链路排序的目标一致性上。将搜索广告系统看作一个计算图,召回阶段作为最上游的“召回Op”,需要捕捉更多下游“预估Op”、“机制Op”反向传播的“梯度”来动态修正召回阶段的检索能力;扩展更多维度的算法评价指标,为下游供给多样性充分、广告主竞争相对平等的广告集合,为直通车业务的高质量发展添砖加瓦。