news 2026/6/7 18:06:37

从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/5/29 8:09:29

从零构建:RT-Thread与AT32的Flash管理实战指南

从零构建&#xff1a;RT-Thread与AT32的Flash管理实战指南 嵌入式系统中Flash存储管理一直是开发者的核心挑战之一。面对不同厂商的Flash芯片、复杂的底层驱动以及多样化的存储需求&#xff0c;如何构建一套稳定高效的解决方案&#xff1f;本文将带你从零开始&#xff0c;基于R…

作者头像 李华
网站建设 2026/5/21 10:22:58

突破10倍速!5大模块解锁资源加速新方案

突破10倍速&#xff01;5大模块解锁资源加速新方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为网盘下载速度发愁吗&#xff1f;当你急需获取重要文件却被限制在100K…

作者头像 李华
网站建设 2026/5/20 9:49:05

3步搞定:用lychee-rerank-mm优化搜索引擎结果排序

3步搞定&#xff1a;用lychee-rerank-mm优化搜索引擎结果排序 1. 为什么“找得到”不等于“排得准”&#xff1f; 你有没有遇到过这样的情况&#xff1a;在自己的搜索系统里输入“夏季防晒霜推荐”&#xff0c;返回了10条结果&#xff0c;前两条却是“冬季保湿面霜”和“防晒…

作者头像 李华
网站建设 2026/5/22 21:33:44

Qwen3-0.6B在无障碍阅读中的实际应用案例

Qwen3-0.6B在无障碍阅读中的实际应用案例 [【免费下载链接】Qwen3-0.6B Qwen3 是通义千问系列最新一代大语言模型&#xff0c;于2025年4月开源&#xff0c;涵盖从0.6B到235B的多尺寸密集模型与MoE架构模型。Qwen3-0.6B以轻量级体积、高响应速度和强指令遵循能力&#xff0c;成…

作者头像 李华
网站建设 2026/6/6 6:45:03

Glyph视觉推理项目分享:我用它复原了老照片文字

Glyph视觉推理项目分享&#xff1a;我用它复原了老照片文字 1. 这不是普通OCR&#xff0c;是让模型真正“看字”的新思路 上周整理家里阁楼时&#xff0c;翻出一叠泛黄的老照片——有上世纪七十年代的毕业合影&#xff0c;有手写信封上的邮戳和地址&#xff0c;还有几张模糊不…

作者头像 李华