前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大道至简,一文看懂推荐系统多目标模型

大道至简,一文看懂推荐系统多目标模型

作者头像
TechFlow-承志
发布2022-09-22 14:34:04
7510
发布2022-09-22 14:34:04
举报
文章被收录于专栏:TechFlowTechFlow

作者 | 梁唐

出品 | 公众号:Coder梁(ID:Coder_LT)

大家好,我是梁唐。

今天和大家聊聊推荐模型的一个重要突破:多目标模型。

PS:今天太忙了,EasyC++鸽一期……

多目标模型

其实单纯地从技术上来讲,多目标并不是很困难或者是很高深的技术,相反它非常简单。简单到你了解神经网络就能看懂它的原理。

我给大家看两张图就明白了,这是我们常规的推荐模型:

最底下是许多embedding层,然后这些embedding通过各种方式加工之后拼接在一起,之后作为一个MLP(多层神经网络)的输入,最后预测出结果。如果是按照点击率排序就是pCTR,如果是按照转化率排序就是pCVR。

多目标是什么呢?其实就是把原本的单塔做成双塔或者多塔,这里的塔(tower)是术语,其实就是指代的MLP(多层神经网络)。由于多层神经网络一层层堆起来可以堆得很高,称为塔非常形象。多个塔可以同时预测多个目标,以ESMM模型为例,它的完整的模型结构是这样的:

因为一般电商的推荐场景当中,核心的指标只有两个,也就是点击率和转化率。在一些复杂的场景当中可能还会有更多,比如说视频推荐场景中,观看视频的时长也会是一个重要指标。我们不搞那么复杂,仅仅考虑点击率和转化率好了。

我们从上面的截图当中可以看到,我们在预测的时候,一个塔预测点击率得到pCTR,一个塔预测转化率得到pCVR,最后把两个结果相乘得到了pCTCVR,也就是点击转化率。最后排序的时候,根据这个pCTCVR进行排序。

从技术层面来看,多目标基本上就这点东西,并没有什么高深的技术,也就是把原本神经网络一个塔变成两个塔,原本按照pCTR排序转变成按照pCTCVR排序而已。但魔鬼都藏在细节里,我们深挖细节可以挖出很多东西。最终回答终极问题:我们为什么需要多目标?

单目标的问题

在回答为什么需要做多目标之前,我们先来看看传统的单目标模型会有什么问题。

在推荐系统当中,几年前最常规的做法就是按照点击率排序。在用户浏览或者打开app的时候,我们会用模型预测每一个商品的点击率,然后根据点击率从高到低进行排序,从而达到尽量让用户点击的效果。

这样设计当然没有问题,但有一个潜在的bug,就是会有这样的结果出现

这图片摆出来,我估计很多人都很兴奋,毕竟现在互联网人均lsp。

但问题是,纯爷们看到大胸美女是很喜欢,这样的结果点击率肯定低不了。但有一个巨大的问题,就是纯爷们只会点击,绝大多数都是不会掏钱买的。

只看不花钱,就是一个巨大的问题。毕竟是电商平台,目的就是为了让用户花钱购物。追求点击率希望用户多点多看,本质上也是因为希望用户多看了能多花钱。现在推了一大堆用户很喜欢看但几乎不会买的东西,其实是一种资源的浪费。因为如果推一些用户潜在可能喜欢的,反而可能构成成交。

我们来简单总结一下,这里面问题出在哪里呢?

最大的问题是电商平台追求的本身就不是单一的目标,我们既希望用户多看多逛产生粘性,又希望用户多掏钱多成交。这些目标之间逻辑上可能本身就是有冲突的,符合用户兴趣的东西,用户可能不会多看,用户喜欢看的,又不一定会购买。所以我们围绕点击率来建模,本身就是有损失的。

那么不围绕点击率建模行不行呢?

答案是不行,因为点击是一切的基础,只有用户先点了,才有可能加购、下单、成交。这一切的前提都是点击,如果我们跳过点击直接对后续的下单、加购建模同样也是不准确的。并且由于加购、下单的样本更少,会导致模型的效果更差。

其次是推荐场景本身就是一个马太效应非常严重的场景,其中的流量是非常聚集的。这点不用我多说,大家也知道。比如直播里头部几个主播拿走了绝大多数流量,剩余的大一批主播瓜分剩余的长尾流量。不仅是主播如此,商品也是一样的,热门的商品占据了绝大多数曝光机会,剩余的海量商品瓜分长尾。

很多人吐槽推荐系统围绕用户兴趣构建信息茧房,看到的东西非常单一,其实这个逻辑完全弄反了。推荐系统本身的目的就是为了对抗马太效应,围绕用户的兴趣带来更多的信息设计的。

如果没有推荐系统,我们连我们自己喜欢的内容都看不到了。不仅同一个用户看到的商品单一了,而是所有人看到的都是千篇一律的结果。所谓个性化的信息茧房其实已经是推荐系统努力之后的结果了……

马太效应严重,会导致点击率越高的商品被推得越多,被推得越多模型学习得也就越深刻,也就越容易被推。发展到最后,整个平台都是类似的同质化的垃圾内容,用户看一次还行,看多了之后会非常腻,最后慢慢就不来了。很多平台早期内容质量很高,但到了后来都逐渐被博眼球的垃圾营销内容占据,除了平台运营策略之外,和围绕点击率建模的算法也有一定的关联。

多目标的改进

从模型角度来看,单目标模型最大的问题就是围绕点击率建模,无法估计其他指标。然而点击率又是平台最核心的指标之一,毕竟所有的交互都因为点击而产生。所以我们肯定是无法舍弃点击率的,最好的办法就是在点击率的前提下兼顾其他指标,这也是多目标模型的诞生初衷。

以双塔模型为例,两个塔共享输入,一个塔预测点击率,一个塔预测转化率。最后将两者相乘,按照相乘之后的结果排序,从而达到兼顾点击和转化的效果。

这里面有很多细节,我们一一来说。

点击、转化平衡

点击率好理解,就是点击的数量除以曝光的数量,反应的是用户点击商品的概率。转化率类似,是购买的下单的数量除以点击的数量,反应的用户下单、购买的概率。

做过算法的同学应该都清楚,这两者之间有一个取舍。通常我们是很难同时优化这两个指标的,原因也很简单,因为对于用户来说,点击几乎没有成本,而转化是需要成本的。所以相对来说提升点击率容易,提升转化率很难。往往点击率有了大幅提升之后,转化率反而会下降,因为点击多了,计算转化率时的分母也就变大了,因此反应在转化率上反而降低了。

反过来也是一样的,有的时候点击率大跌,转化率反而增加了。道理是类似的,因为点击少了,分母小了。正因为这两个指标之间有着这样一种特殊的平衡关系,所以我们围绕点击率建模的结果通常都是点击率提升,但转化率下降。想要提升转化率,也可能会影响点击率,这两者之间互相影响,想要同时提升往往比较困难。

更关键的是,由于排序的时候只能按照单一指标排序。我们按照pCTR排序就会影响转化率,我们按照pCVR排序就会影响点击率。所以比较好的做法是分别构建两个模型,然后将两者相乘,按照pCTCVR来排序,也就是点击转化率排序。

这也不是什么新思想,在多目标模型出来之前就已经有了。但这样的方案当中有两个bug,一个bug是两个模型耗时会更长,性能会比较差,第二个bug是转化率模型的训练样本比较稀疏。

共享输入

模型的结构当中有一个细节,双塔共享了输入。表面上看这是一个非常正常天经地义的做法,但就是这个平平无奇的做法解决了样本稀疏的问题。

很明显,在电商场景当中,转化数量要比点击的数量少得多。我们可以看几百个商品,但是最终下单的可能只有一两个。这就导致了如果我们想要单独构建一个转化率模型样本会非常稀疏,因为转化的样本太少,而没转化的太多。模型看到茫茫多的负样本,只有零星的正样本,很难学到正负样本之间的差别。

有了多目标模型之后,转化率的塔可以和点击率的塔共享输入,一方面是极大地拓展了样本的数量,另外一方面是由于点击率和转化率目标之间存在很大的共性,它可以从中提取到点击率模型学到的信息。一般来说,在多目标模型当中,多个目标之间的关联程度越强,最后的效果就越好。

说起来多目标模型只是一个很简单的改动,但其实如果仔细深挖分析,会发现其中暗藏的原理是不少的。老实讲看到这样的模型设计思路是非常愉快的,有一种大道至简的感觉,比花里胡哨加了一堆模型结构,最后提升一点点的论文看起来舒服多了。

好了,关于多目标就聊到这里,感谢阅读。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Coder梁 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多目标模型
  • 单目标的问题
  • 多目标的改进
    • 点击、转化平衡
      • 共享输入
      相关产品与服务
      云直播
      云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档