只做好CTR预估远不够,淘宝融合CTR、GMV、收入等多目标有绝招

640?wx_fmt=jpeg

作者 | 吴海波

转载自知乎用户吴海波


【导读】一直以来,电商场景就存在 ctr、cvr、gmv、成交 uv 等多个目标,都是核心指标。理想情况下,提升 ctr 就能提升 gmv,但本文作者认为,在一定程度上, ctr 和 gmv 并不是完全一致。一般大幅的 ctr 提升,都会带来相关的 gmv 的提升,但小幅度的 ctr 提升就不一定了,有的时候还是负向的。

那是否只优化 GMV 就可以了呢?一方面,虽然电商公司最终追求 gmv,但是 ctr 之类的指标,一定程度上代表着用户体验,也需重点关注。另一方面,GMV等成交指标,比起点击率相关的指标,更难优化。成交比起点击,数据稀疏很多,且受更多的场外因素影响。

大数公司这个问题并不严峻,每个目标训练个模型,拍个公式在线上揉在一起也能用。且在大公司,不同模型各自有团队在做,也没有很强的融合意愿。而我们不行,由于淘宝的网络效应,决定了我们无法依靠 cpc 竞价的模式走向盈利。因此,只做好 ctr 预估并不够,如何融合 ctr、gmv、收入等目标,则成为我们重点要解决的问题。

去年 ESMM 出来时,我们已经做过一些相关尝试了,并没有很成功。当时的想法很朴素,希望从丰富的 ctr 样本中学习到一部分能够 generalization 的表达,辅助 cvr 的学习。ESMM 这篇论文给了我们进一步的信心。另外,还从dupn 的论文中借鉴了不少特征构建的想法,经过几个月的尝试,迭代了几版,拿到相对不错的结果。

模型总体策略

模型预估目标

用户在平台的行为遵循一定的顺序决策模式:impression->click->conversion

CVR 模型旨在预估用户在观察到曝光商品进而点击到商品详情页之后购买此商品的概率,即 pCVR=p(conversion|click, impression)。CVR 模型的目标是预估条件概率 pCVR,与其相关的两个概率为点击率 pCTR 和点击且转化率 pCTCVR,它们之间的关系如下:

640?wx_fmt=jpeg


模型结构

样本按照正负样本比例 =1:6 的比例进行采样,这里的正样本指的是点击正样本。

借鉴阿里妈妈提出的 ESMM 模型(完整空间多任务模型),使用全站用户行为序列数据(包括点击、加购、收藏等),使用多任务学习的思路,引入了两个辅助的学习任务,在完整的曝光样本空间,分别拟合 pCTR 和 pCTCVR,从而缓解传统 CVR 预估模型难以克服的样本选择偏差和训练数据稀疏的问题。

640?wx_fmt=jpeg

对于一个给定的展现,模型能够同时输出预估的 pCTR、pCVR、pCTCVR。模型主要由两个子网络组成,左边的子网络用来拟合 pCVR,右边的子网络用来拟合 pCTR。两个网络的输出结果相乘,即为 pCTCVR。具体反映在目标函数中:

640?wx_fmt=jpeg

即用 CTCVR 和 CTR 的监督信息训练网络,隐式学习 CVR。本次实验,只使用 MTL 模型的 CVR 网络产出的 CVR 预估分用于排序。

过程中一些有意思的点

预估偏置问题

一开始,我们希望直接采用 ctcvr 的结果,去替代线上的融合模型。但结果不太理想,我们做了很多数据分析,发现主要是由于 ctcvr 在预估上存在比较大的偏置。比如对订单量很少的样本,cvr 预估会明显偏高。而在数据量相对丰富的头部样本,预估的分数没有表现出差异,过于集中。

尝试了几种校准方案后,效果不是特别理想。但发现模型结构中的 cvr,校准的难度比 ctcvr 低,经过一段时间的尝试,上线效果还是不错的。

增加 attention 层的 share

原有结构仅共享底层 embedding 表达,即 CVR-task 和 CTR-task 两个子网络的 embedding 层共享 embedding 向量(特征表示)词典。embedding 层的参数占据整个网络参数的绝大部分,需要大量的训练样本才能充分学习到。

由于 CTR 任务的训练样本量远远超过 CVR 任务的训练样本量,ESMM 模型中,embedding 共享的机制能够使得 CVR 子任务能够从只有曝光没有点击的样本中学习,从而可以极大缓解训练数据稀疏的问题。

在此基础上,鉴于行为序的重要作用,我们把行为序列的 attention 参数共享。对比原结构:ctr、cvr、ctcvr 的 auc 都有明显的提升。

DUPN类的特征

这个说法是我们内部发明的,其实一点也不严谨,只不过是我们借鉴了 dupn 那边论文中特征构建的方式。

不同的 ID 特征从不同规模上刻画了商品。比如 shop、brand、cid、sale 等属于比较泛化的特征,描述商品的一般特征;而商品 ID 属于非常个性化的特征,描述了商品的独特性。

在用户点击序列的基础上,拓展 dupn 的思路,根据用户当前或历史的行为,去预测用户的一些隐藏信息,比如偏好品牌、偏好类目、用户购买力、价格偏好、商品的评价数量、商品的价格、商品的销量、商品的喜欢数等泛化特征,这些信息与原始用户点击序列一起,会帮助模型学习商品表达。

训练本身的问题

虽然 ESMM 的思路很赞,但是联合训练本身就会带来新的问题,模型训练收敛更难了,且更慢了。在我们前期实践过程中,经常会发现 logit 飘了、nan 了,除了一些代码 bug 外,就需要精细的调参和数据清洗了。

训练速度慢,对我们也是一个很大的挑战。我们的集群资源有限,特别要训练 ctcvr 模型,对数据量的要求更高,也是我们在 ctcvr 上进展缓慢的另一个重要原因。

可以预见,如果我们再增加更多的目标 loss,这个问题会更尖锐。

一个小问题

在计算ctcvr_logits的时候,应该算sigmoid(ctr_logits) * sigmoid(cvr_logits) ,即两个网络的输出,做 sigmoid 之后再相乘。众所周知,TensorFlow 中是不提供单独的 cross entropy loss 计算函数的,只有softmax_cross_entropy_with_logits和sigmoid_cross_entropy_with_logits 两类。(不过现在Keras里有这种东西了,categorical_crossentropy 可以指明输入的是 logits 而非 softmax )。

重新实现了 sigmoid + loss 交叉熵函数,并对边界值进行了严格校验。但是 在 embedding 向量从 32 维扩展到 128 维是,会出现输出 Nan 的情况,调小优化器的学习率,可以暂时避免出现 Nan。

总结

这种 mutil-task 联合训练的方式,在我们线上实践中,比单独 ctr 和 cvr 模型分开训练,总体表现上要好不少,可以做到 ctr 不怎么降,gmv、收入有明显的提升。

再说个题外话,针对多目标的问题,我们还想过尝试 RL 。RL 最吸引我的是long term reward,我们可以在 reward 中引入多目标。但 RL 的问题太多了,而现有的技术,大多已经是基于实时的行为 seq 做,RL 目前没有给我特别大的吸引力。

最后,非常感谢参与其中的小伙伴们坚持不懈的努力。

原文链接:

https://zhuanlan.zhihu.com/p/76413089

(*本文为 AI 科技大本营转载文章,转载请联系原作者)

福利时刻

入群参与每周抽奖~

扫码添加小助手,回复:大会,加入福利群,参与抽奖送礼!

640?wx_fmt=jpeg

大会优惠票限时抢购中!此外,伯克利大学名师精髓课程移师北京。《动手学深度学习》作者、亚马逊首席科学家李沐线下亲授「深度学习实训营」,免费GPU资源,现场还将限量赠送价值85元的配套书籍一本,先到先得。原价1099元,限时专享CSDN 独家福利价199元识别海报二维码,即刻购票~

640?wx_fmt=jpeg

推荐阅读


640?wx_fmt=png

你点的每个“在看”,我都认真当成了喜欢

格力GMV5多联机接线与调试是指在安装和使用格力GMV5多联机空调系统时,对其进行电气接线和系统调试的过程。 首先,在接线方面,需要根据安装位置、管道布局和电气线路要求,合理进行电气接线工作。接线时,应确保各模块之间的连接线路正确无误,并且要保证接线牢固可靠,防止发生接触不良或线路短路等问题。同时,还要注意接线环境的干燥、清洁和通风,避免电路受潮或积尘。 接下来是调试阶段,调试主要包括以下几个步骤: 1. 电源调试:将电源接通,确认电源供应正常,并检查空调室外机是否正常运行。 2. 组网调试:通过GMV5多联机系统的组网功能,将各个室内机和室外机进行连接。确保连接线路无误,室内机与室外机之间的通信正常。 3. 系统参数设置:根据实际需求,通过GMV5多联机的控制面板或遥控器,设置制冷、制热、通风等功能以及温度设定等参数。 4. 故障检测:进行故障检测,确认系统的工作状态是否正常。如有故障,检查并排除故障原因。 5. 性能测试:对多联机系统进行性能测试,测试空调的制冷、制热、通风等功能是否正常,并检查温度、湿度等参数是否符合要求。 最后,结束调试后,还应对接线和接头进行检查,确保连接牢固。如果发现接线不良或存在问题,及时进行修复。 总之,格力GMV5多联机接线与调试过程需要进行仔细、认真的操作。只有确保接线正确、调试完善,才能保证多联机空调系统的正常运行和高效使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值