Task04 多任务模型:ESMM、MMOE
一、ESMM
-
ESMM的全称是Entire Space Multi-task Model (ESMM),是阿里巴巴算法团队提出的多任务训练方法。其在信息检索、推荐系统、在线广告投放系统的CTR、CVR预估中广泛使用。
-
ESMM原理
- ESMM模型利用用户行为序列数据在完整样本空间建模,避免了传统CVR模型经常遭遇的样本选择偏差和训练数据稀疏的问题,取得了显著的效果。另一方面,ESMM模型首次提出了利用学习CTR和CTCVR的辅助任务迂回学习CVR的思路
- ESMM模型利用用户行为序列数据在完整样本空间建模,避免了传统CVR模型经常遭遇的样本选择偏差和训练数据稀疏的问题,取得了显著的效果。另一方面,ESMM模型首次提出了利用学习CTR和CTCVR的辅助任务迂回学习CVR的思路
-
ESMM模型的优化
- 模型优化:论文中,子任务独立的Tower网络是纯MLP模型,可以根据自身特点设置不一样的模型,例如使用DeepFM、DIN等
- 学习优化:引入动态加权的学习机制,优化loss
- 特征优化:可构建更长的序列依赖模型,例如美团AITM信用卡业务,用户转换过程是曝光->点击->申请->核卡->激活
-
代码实现:
import torch import torch.nn.functional as F from torch_rechub.basic.layers import MLP, EmbeddingLayer from tqdm import tqdm class ESMM(torch.nn.Module): def __init__(self, user_features, item_features, cvr_params, ctr_params): super().__init__() self.user_features = user_features self.item_features = item_features self.embedding = EmbeddingLayer(user_features + item_features) self.tower_dims = user_features[0].embed_dim + item_features[0].embed_dim # 构建CVR和CTR的双塔 self.tower_cvr = MLP(self.tower_dims, **cvr_params) self.tower_ctr =