news 2026/6/17 16:57:45

从ESMM到ESM2:多任务学习在CVR预估中的演进与实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从ESMM到ESM2:多任务学习在CVR预估中的演进与实践

1. 从点击到购买:CVR预估的核心挑战

在电商推荐系统中,转化率(CVR)预估一直是个让人头疼的问题。想象一下这样的场景:用户看到商品展示(曝光)→ 点击商品详情 → 最终下单购买。传统做法是直接用点击后的数据训练CVR模型,但这里藏着两个大坑:

**样本选择偏差(SSB)**就像用高考成绩预测大学表现——训练时只用"考上大学的学生"数据,但实际要预测的是"所有高中生"的未来表现。具体到CVR预估:

  • 训练数据:只有点击过的样本(点击未转化=负例,点击且转化=正例)
  • 预测场景:面对的是所有曝光样本(包括未点击的) 这种训练和预测的数据分布差异,会导致模型在实际应用中表现不佳。

**数据稀疏性(DS)**的问题更直观。以淘宝数据为例:

  • 日均曝光量:1亿次
  • 平均CTR:2% → 点击量200万
  • 平均CVR:0.5% → 转化量仅1万 用1万条转化样本训练深度模型,就像用几滴水试图填满一个游泳池。

2. ESMM:多任务学习的破局之道

2.1 模型设计的灵感来源

2018年阿里妈妈团队提出的ESMM模型,巧妙地用概率论解决了这两个难题。其核心思想可以用一个简单公式表达:

p(转化|曝光) = p(点击|曝光) × p(转化|点击)

这个等式揭示了CTR(点击率)和CVR(点击转化率)的天然关联性。

**为什么不直接相除?**有人可能想到用 pCTCVR/pCTR 计算pCVR。但实测会发现:

  1. 两个概率值都很小(通常<1%),除法会放大噪声
  2. 当pCTR预估不准时,可能算出pCVR>1的荒谬结果

2.2 网络架构与实现细节

ESMM的模型结构包含三个关键组件:

  1. 共享嵌入层:统一处理用户、商品特征
  2. 双塔结构
    • CTR塔:预估点击概率
    • CVR塔:预估转化概率(无直接监督信号)
  3. 概率融合层:CTCVR = CTR × CVR
# 简化版ESMM核心代码 class ESMM(tf.keras.Model): def __init__(self): super().__init__() self.shared_bottom = DNN([256, 128]) # 共享底层 self.ctr_tower = DNN([64, 1], activation='sigmoid') self.cvr_tower = DNN([64, 1], activation='sigmoid') def call(self, inputs): shared = self.shared_bottom(inputs) ctr = self.ctr_tower(shared) cvr = self.cvr_tower(shared) ctcvr = ctr * cvr # 概率连乘 return ctr, ctcvr

2.3 损失函数的设计艺术

ESMM的损失函数包含两部分:

L = L_CTR + L_CTCVR
  • L_CTR:用全部曝光样本计算点击损失
  • L_CTCVR:用点击样本计算转化损失(通过CTCVR间接优化CVR塔)

这种设计实现了:

  • 解决SSB:CVR塔通过CTCVR接触到全量样本
  • 缓解DS:CTR和CVR共享特征表示

3. ESM2:行为链路的深度挖掘

3.1 从两阶段到多阶段建模

虽然ESMM解决了基础问题,但实际场景中用户行为更复杂。阿里2020年提出的ESM2观察到:

  • 用户点击后可能先加购/收藏(DAction)
  • 这些中间行为数据量更大(加购率≈10%,是直接购买的20倍)
  • 最终购买可能来自不同路径:
    • 点击→加购→购买
    • 点击→其他行为→购买

3.2 四任务联合建模

ESM2将用户行为拆解为:

  1. Y1:点击率(CTR)
  2. Y2:点击后执行DAction的概率
  3. Y3:DAction后购买的概率
  4. Y4:其他行为后购买的概率

最终CVR计算公式变为:

CVR = Y2*Y3 + (1-Y2)*Y4

3.3 模型架构演进

ESM2的主要改进:

  1. 共享嵌入模块(SEM):统一特征表征
  2. 分解预测模块(DPM):四个子任务独立MLP
  3. 序列组合模块(SCM):按行为链路组合概率
# ESM2的概率计算示例 def calculate_cvr(y1, y2, y3, y4): return y1 * (y2*y3 + (1-y2)*y4)

4. 实战中的调优经验

4.1 特征工程要点

  • 用户行为序列:加入历史CTR/CVR统计特征
  • 跨任务特征:CTR塔学到的embedding可作为CVR塔输入
  • 时间衰减:近期的行为赋予更高权重

4.2 训练技巧

  1. 损失权重调整
    • 初期可设w_ctr=1, w_ctcvr=0.1
    • 逐步增加CTCVR权重
  2. 渐进式解冻
    • 先训练CTR塔至收敛
    • 再联合训练双塔
  3. 对抗验证:检测训练集/测试集分布差异

4.3 线上效果对比

在淘宝公开数据集上的AUC提升:

模型CVR AUCCTCVR AUC
传统模型0.6820.715
ESMM0.703 (+3.1%)0.732 (+2.4%)
ESM20.712 (+1.3%)0.741 (+1.2%)

5. 技术演进的方向

当前业界的最新探索集中在:

  1. 因果推断应用:用IPW等方法解决曝光偏差
  2. 长行为链路建模:覆盖浏览→对比→咨询等更复杂路径
  3. 多场景迁移:跨品类/跨渠道的知识共享

在实际业务中,ESMM系列模型已成为电商推荐的标配。我在某跨境电商项目落地ESM2时,通过引入"加入比价"作为新行为节点,使CVR预估准确率提升了5.7%。关键是要根据业务特点设计合适的行为分解策略,而不是机械照搬论文方案。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 12:32:03

AI设计师必备:FLUX.1-dev快速生成商业级图片

AI设计师必备&#xff1a;FLUX.1-dev快速生成商业级图片 你有没有为一张主图反复修改三小时&#xff1f; 输入“高端珠宝海报&#xff0c;极简白金风&#xff0c;柔光摄影”&#xff0c;结果AI吐出一张带浮雕边框渐变蓝背景的“电商爆款风”&#xff1b; 再试一次&#xff0c;…

作者头像 李华
网站建设 2026/6/10 3:51:50

时间同步的误差博弈:STM32F103从机守时优化实战录

STM32F103时间同步系统优化&#xff1a;从39.8μs误差到精准守时的实战解析 1. 时间同步系统的核心挑战与解决方案框架 在嵌入式实时系统中&#xff0c;时间同步精度往往直接决定了系统性能上限。基于STM32F103构建的一主多从时间同步架构&#xff0c;面临着三个关键技术挑战…

作者头像 李华
网站建设 2026/6/10 11:28:05

SGLang-v0.5.6保姆级教程:从安装到运行全搞定

SGLang-v0.5.6保姆级教程&#xff1a;从安装到运行全搞定 你是不是也遇到过这些情况&#xff1f; 想跑一个大模型&#xff0c;但发现推理慢得像在等咖啡煮好&#xff1b;多轮对话一多&#xff0c;GPU显存就爆&#xff0c;服务直接挂掉&#xff1b;写个JSON输出还要自己后处理…

作者头像 李华
网站建设 2026/6/10 11:27:43

在React中使用Paged.js的实践指南

简介 Paged.js是一个强大的JavaScript库,它可以将HTML内容转换为打印友好的PDF文档。特别是在处理复杂的文档布局和分页时,Paged.js表现尤为出色。本文将详细介绍如何在React项目中集成Paged.js,并解决一些常见的集成问题,如与Material-UI(MUI)库的兼容性。 环境准备 …

作者头像 李华
网站建设 2026/6/17 3:24:16

30秒音频10秒完成,科哥ASR镜像效率实测

30秒音频10秒完成&#xff0c;科哥ASR镜像效率实测 1. 开篇&#xff1a;语音识别也能“秒出结果”&#xff1f; 你有没有过这样的经历&#xff1a;会议刚结束&#xff0c;录音文件还在手机里躺着&#xff0c;领导已经催着要文字纪要&#xff1b;采访素材堆了几十条&#xff0…

作者头像 李华