MOBIUS Towards the Next Generation of Query-Ad Matching in Baidu’s Sponsored Search
目录
整理一下百度凤巢最近发表的一篇广告检索相关的论文,本文提出了一种新的架构来统一之前召回和rank分开的架构。
一、Motivation #
然而,这种架构有一个问题:match层跟rank层的优化目标不一样。match层主要侧重优化相关性,而rank层主要优化商业指标比如ctr。这样会导致match层召回的很多广告cpm不高,不会被展现,从而影响商业收入。
二、Challenges #
2.1 模型对于长尾样本的泛化能力不足 #
百度rank层的ctr模型采用的是大规模DNN,有上百亿、千亿级别的特征,侧重于memorization,而对于长尾的样本泛化效果不好。
mobius系统最开始尝试直接用之前的rank层ctr预估模型对样本进行预估,发现在抛开之前match层的相关性束缚后,模型容易预估出高ctr但相关性很差
的结果,论文中举了一个case来说明这个问题。
Tesla model3
和 white rose
两个query。
传统多层的漏斗,首先召回时保证一定的相关性,由于Mercedes-Benz
跟Tesla model3
相关性很高,就会在match层被召回;然后通过rank层预估ctr很高,最终展现的概率就达,从而Mercedes-Benz
能累积到很多日志。
在用mobius进行ctr预估时,这时预估的候选集就不只是之前rank层所面对的经过挑选的几百条了,而是百万级别的候选集,这里面肯定有很多候选集是处于流量长尾的,即query-ad pair展现次数很少。比如用户的querywhite rose
和adMercedes-Benz
可能之前没有展现过。但是如果query和或者ad中有一个频繁出现,那么ctr模型也会认为这个query-ad pair的ctr很高,那么Mercedes-Benz
可能跟很多query组合都会被认为ctr很高,从而针对white rose
系统也会召回相关性没那么高的Mercedes-Benz
广告
2.2 广告检索的性能问题 #
传统多层漏斗架构的优势就是通过多级筛选,逐步减少每一层要预估的资源条数,从而缓解性能问题。如果mobius要直接从百万级的广告中进行检索,那么在线检索性能就是需要考虑的问题。
三、Solutions #
3.1 Active-Learned CTR Model #
作者认为模型的主要的问题是怎么让模型识别出低相关性且高ctr
的query-ad pair作为bad case。为了学习出bad case,那么就需要人工构造出bad case的样本,再通过在模型的目标函数中加上bad case率这个目标来进行学习。因此,整体分成了2个部分:人工构造样本和模型学习。
3.1.1 样本构造 #
balance the exploration and exploitation of the augmented data
,这里实现了一个采样器,通过采样选出高ctr样本,保证了一定的探索性。
7.把人工构造的bad case样本跟常规训练样本合并,放出到trainBuffer
8.进行模型训练
3.1.2 模型学习 #
再看红色的线:
1.bad样本跟正常的点击和未点击样本放到一起,因此所有样本有3种label(click\unclick\bad case)
2.网络是双塔结构,quert和ad分别各一个网络,到最上面是96维(32 * 3)
3.分别做cos后果softmax,拟合3种label
4.最后学习出的pr(click)可以用于线上ctr预估,pr(bad)可以用来过滤ctr高但相关性差
的样本
3.2 Fast Ads Retrieval #
四、Experiment #
最终上线,广告收益CPM等也有很大的提升
五、思考 #
mobius系统采用的是双塔结构,这种结构其实没法引入query-ad的交叉特征,在预估精度上有一定影响的。不知道在这个系统之上会不会还有一个小型的rank系统(全连接dnn)网络进行ctr预估
Reference #
[1] http://research.baidu.com/Public/uploads/5d12eca098d40.pdf