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%),除法会放大噪声
- 当pCTR预估不准时,可能算出pCVR>1的荒谬结果
2.2 网络架构与实现细节
ESMM的模型结构包含三个关键组件:
- 共享嵌入层:统一处理用户、商品特征
- 双塔结构:
- CTR塔:预估点击概率
- CVR塔:预估转化概率(无直接监督信号)
- 概率融合层: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, ctcvr2.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将用户行为拆解为:
- Y1:点击率(CTR)
- Y2:点击后执行DAction的概率
- Y3:DAction后购买的概率
- Y4:其他行为后购买的概率
最终CVR计算公式变为:
CVR = Y2*Y3 + (1-Y2)*Y43.3 模型架构演进
ESM2的主要改进:
- 共享嵌入模块(SEM):统一特征表征
- 分解预测模块(DPM):四个子任务独立MLP
- 序列组合模块(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 训练技巧
- 损失权重调整:
- 初期可设w_ctr=1, w_ctcvr=0.1
- 逐步增加CTCVR权重
- 渐进式解冻:
- 先训练CTR塔至收敛
- 再联合训练双塔
- 对抗验证:检测训练集/测试集分布差异
4.3 线上效果对比
在淘宝公开数据集上的AUC提升:
| 模型 | CVR AUC | CTCVR AUC |
|---|---|---|
| 传统模型 | 0.682 | 0.715 |
| ESMM | 0.703 (+3.1%) | 0.732 (+2.4%) |
| ESM2 | 0.712 (+1.3%) | 0.741 (+1.2%) |
5. 技术演进的方向
当前业界的最新探索集中在:
- 因果推断应用:用IPW等方法解决曝光偏差
- 长行为链路建模:覆盖浏览→对比→咨询等更复杂路径
- 多场景迁移:跨品类/跨渠道的知识共享
在实际业务中,ESMM系列模型已成为电商推荐的标配。我在某跨境电商项目落地ESM2时,通过引入"加入比价"作为新行为节点,使CVR预估准确率提升了5.7%。关键是要根据业务特点设计合适的行为分解策略,而不是机械照搬论文方案。