转自:知乎-水哥

链接: https://zhuanlan.zhihu.com/p/396951216

说明:本文仅用于知识交流,如有侵权,联系删除

写在前面

1、把点击多的item曝光提升是推荐模型的基本能力,也是基本要求。后验不好的曝光提高也可能是好模型,后验好的曝光不提高,可以开除推荐模型了

2、在起量阶段,各路item需要争宠,谁能最快博取精排的欢心,谁就有可能在冷启动阶段占据压倒性优势

3、广告主很像dota教练,他们深信一个原则:阵容(素材)没问题,下把干(投放)回来

4、粗排没别的任务,就是向上管理

上一讲我们提到,整个链路是一个大漏斗,前面召回入口最多,最后精排仅仅输出一点点,在这一讲中我们会对漏斗的连接部分做更多的分析。包括上一讲中很多同学都想问的粗排,召回的学习目标,评价标准分别是什么,也会在这一讲和下一讲中详细讲解。

首先我们要分析漏斗的各个环节,学习的目标是什么。虽然整个链路正着往后推理,但是改进的时候往往是倒着往前的,原因我们在上一讲提到过。假如想加某种特征,那么先是精排验证有效,然后粗排。召回可以不按照这个规则走,因为召回很多时候是觉得上面的队列里缺少哪一方面的东西,才多一路的。

各个环节的学习目标及问题

精排的学习目标:后验

以点击率(CTR)预估为例,精排学习的目标的范围一般是所有存在曝光的样本。有曝光但没有点击的是负样本,有曝光也有点击的就是正样本。在其他目标中可以以此类推:比如转化率(CVR)预估,点击了没转化的是负样本,点击了,也转化了就是正样本。

精排的评估方式:AUC/GAUC

说白了,精排还是一个排序模型,排序模型输出的结果,线下都可以由AUC来进行评估。在[1]这篇论文中,阿里的工程师们提出了另一个评价指标:Group AUC(GAUC),如下:

在这个指标中, 代表的是曝光数或者点击数。这个指标是对用户的行为做了加权,比较偏向高活跃的用户。

线上指标则根据业务各有不同,比如在短视频平台上,推荐看的就是观看时长,而广告看的则是eCPM(出价乘以CTR乘以CVR)。在电商平台上看的是GMV(Gross Merchandise Volume,商品交易总额)。线上提升是由线下的一个一个模型提升带来的。比如在广告场景下,既要提升CTR,也要提升CVR,也要改善出价机制。推荐场景下,既要提升对于观看时长的预估,也要提升用户正负反馈(比如点赞关注这些)的预估。

关于AUC和GAUC的文章参考有:

精排的样本组成

在精排中,每次行为都是一条样本,最后实际上是一个分类任务,分为“点击”或者“不点击”的二分类。在一个点击率预估模型中,正样本是非常稀疏的。对于模型来说,当他遇到正样本的时候,它必须把这个结果反映到当前的用户和item上。也就是说,相比于没有点击的样本,这个item会得到模型的认可。那么在接下来的预估中,这个item自然会被更加青睐,排序更加靠前。这样就使得item的曝光能力提升。这样我们就归纳出了推荐系统的一个基本性质: 正反馈的能力 。指的是对于 一开始后验较好的item,他们的排序更靠前,曝光会进一步提升 。如果去掉一开始这三个字,这句话就是一句废话。但是所谓“一开始”就表明该item不一定是一个真正好的素材,而这会引发下面的问题。

(这里留一个思考题,这个正反馈会无限地持续下去吗?答案我们在未来专门讲item的生命周期中来揭晓)

精排的问题1:ground truth不够置信

我们想评价一个item的质量是否好,其实是需要一定量的曝光量才能说明。但是系统整体的曝光机会往往是有限的。给你的曝光多了必然意味着对他的曝光机会少了。因此有很多item在没有得到充分曝光的情况下就被判了死刑。有的item可能不错,但是在一开始因为有点随机性,或者精排没预估的比较准,导致最初的量没起来。当最初的量没起来的时候,别的起来了的item迅速博取了精排的欢心,这个不幸运的item就只能被打入冷宫了。如下图:

这个问题不仅我们知道,广告主们也知道。他们不仅知道,他们还会不服。他们当然会优化素材,但同时也会进行大量的“重开”,即同样的素材内容,换一个id再来一遍(当id变成新的,系统就会把它当做新的重新开始,这涉及到后面要讲的冷启动问题)。这就是所谓的“阵容没问题,下把干回来”。当大量的广告主这样做了之后,平台资源就会被极大的浪费,因此平台也会做各种方法来阻止这件事情。所以我们也能看到,平台和金主爸爸有时候也存在一种博弈。

精排的问题2:自嗨

从上面的叙述中,可以看出精排学习的目标往往有一个共同的特点,就是正负样本都来自于 已经曝光的样本 ,而曝光与否是谁决定的呢?是精排自己决定的。这就造成了“自己学自己”的问题, 学习的目标本来就是自己产生的,在自己原本的大方向上有可能一条路走到黑 。设想有AB两个item,实际上B是一个更优秀的素材,因为系统随机性或者精排的缺陷,A获得了更多的曝光量,而B只获得了很少的曝光量。而B恰好在这几个曝光量中都没获得什么正向反馈。那接下来B就惨了,根据我们上面说的正反馈特性,A的曝光会越来越高,正向的点击数据越来越多,而B可能就暴毙了。这个情况如果不断恶化,推荐系统可能会陷入局部最优中出不来,也就是我们说的“自嗨”:它认为A好,所以给了A更好的条件,而A自然获得了更好的反馈,又再一次验证了系统的“正确性”。最终在A比B好的错误路线上越走越远。

那么有什么办法可以防止这个情况?一般来说有两种方法。第一种是策略的干涉。有的策略会强制一定的探索量,比如上面的B曝光不能低于100,这样会缓解一些学习错误的问题。可能还是有个别item的序会不符合,但是整体上发生错误的概率会变低。另一种做法是开辟“随机流量”,即有一定比例的请求不通过任何模型预估,直接随机展示看看点击率。随机流量的结果一方面可以认为是完全真实的训练样本,另一方面也可以对照当�