原文:https://mp.weixin.qq.com/s/LUfZLnWD9d60cn9H192Hig
---与AI瞎聊
> 写在前面:这是一篇关于MDL(Multi-Scenario Multi-Task Learning)技术的学习笔记,试图用最通俗的方式解释这个看似复杂的技术概念。
一、背景:为什么需要多场景多目标?
在推荐系统和广告领域,我们经常会遇到这样的问题:
-
同一个产品,需要同时预测「点击率」和「转化率」
-
同一个模型,需要同时服务「搜索场景」和「推荐场景」
-
不同场景下,用户的行为模式完全不同
传统做法是**每个场景单独建模**:
```
搜索场景 → 搜索模型 → 点击率 + 转化率
推荐场景 → 推荐模型 → 点击率 + 转化率
```
这种方式的弊端显而易见:
-
**数据稀疏**:每个场景的数据量有限,模型效果受限
-
**资源浪费**:每个场景都要维护一套独立的模型
-
**难以迁移**:新场景冷启动困难
于是,研究者们开始思考:**能不能用一个统一的模型,同时处理多个场景、多个目标?**
这就是MDL的由来。
二、传统多目标模型:MMoE
在说MDL之前,必须先了解它的前身------**MMoE(Multi-Gate Mixture-of-Experts)**。
2.1 MMoE的核心思想
MMoE的核心是「**专家+门控**」:
```
┌─ Expert 1 ─┐
│─ Expert 2 ─┼──→ 共享专家层
输入特征 ──│─ Expert 3 ─┤
└─ Gate ─────┘ ← 不同目标有不同门控
```
-
**Expert(专家)**:多个神经网络,各自学习不同的知识
-
**Gate(门控)**:每个目标有一个「路由器」,决定用哪些专家的输出
2.2 MMoE的局限
MMoE解决了多目标学习的问题,但它**没有考虑多场景**。
更关键的问题是:**场景信息在哪里?**
在MMoE里,场景信息只是众多输入特征中的一个,模型很难充分利用这些信息。
三、MDL:场景感知的多目标学习
3.1 MDL的核心创新
MDL(Multi-Scenario Multi-Task Learning)的核心突破是:**把「场景」和「目标」本身也变成可学习的向量**。
| | MMoE | MDL |
|---|---|---|
| 输入 | 只有用户/商品特征 | 特征 + 场景向量 + 目标向量 |
| 场景信息 | 隐式融合,不明确 | 专门的场景向量,清晰可学习 |
| 目标信息 | 隐式融合,不明确 | 专门的目标向量,清晰可学习 |
3.2 MDL的架构
```
输入层
│
├── 特征Token(用户ID、商品ID等)
│
├── 场景Token("当前是搜索场景")
│
└── 目标Token("要预测点击+转化")
│
▼
多层Transformer交互
│
▼
输出:点击率 + 转化率
```
3.3 Token化的魔力
Token是NLP里的概念,可以理解为「**一段有意义的信息**」。
在MDL中:
-
特征 → 特征向量
-
场景 → 场景向量
-
目标 → 目标向量
这三个向量在模型内部充分交互,模型可以学习到:
-
「搜索场景下,点击率和转化率的关系是什么?」
-
「转化目标下,特征重要性的权重是什么?」
四、极简比喻
传统方法 = "传达室主任"
```
特征 ──> [工厂] ──> 输出
↑
传达室主任(Gate)
│
"这是搜索场景,
要优化转化"
```
**问题**:传达室主任只负责分配任务,但进不了工厂内部指挥生产。
MDL = "深入车间的项目经理"
```
场景Token ──> ┌─────────────────────────┐
│ [工厂内部:每层车间] │<── 特征Token
目标Token ──> │ 项目经理到处跑 │ │
│ 逐层指挥 │ │
└─────────────────────────┘ │
│ │
└─────────> 输出 │
(预测结果)
```
**改进**:项目经理(场景/目标Token)能走进工厂每层车间,边走边指挥。
五、具体例子:电商搜索
场景:用户搜索"男士T恤"
| | 传统MMoE | MDL |
|---|---|---|
| **场景信息** | 作为普通特征输入 | 专门的场景向量 |
| **目标信息** | 通过Gate隐式学习 | 专门的目标向量 |
| **指挥方式** | 门口喊一嗓子 | 走进工厂每层车间 |
| **效果** | 工人随便听听 | 每层都精准调整 |
六、MDL怎么评估?
6.1 A/B测试
最直接的方法就是A/B测试:
```
┌─────────────────┐ ┌─────────────────┐
│ 对照组 (MMoE) │ │ 实验组 (MDL) │
│ 场景1+场景2特征 │ │ 场景1+场景2特征 │
│ 传统MMoE模型 │ │ MDL模型 │
│ ↓ │ │ ↓ │
│ 目标1+目标2预测 │ │ 目标1+目标2预测 │
└─────────────────┘ └─────────────────┘
│ │
└────────┬───────────────┘
▼
对比各种业务指标
```
6.2 核心评估指标
| 指标类型 | 指标名称 | 含义 |
|----------|----------|------|
| **排序指标** | AUC / GAUC | 模型区分度,越高越好 |
| **业务指标** | CTR | 点击率 |
| **业务指标** | CVR | 转化率 |
| **业务指标** | LT30 | 30天长期价值 |
| **业务指标** | 人均浏览时长 | 用户活跃度 |
6.3 论文中的实际效果
根据MDL论文的线上A/B测试结果:
-
**LT30(30天长期价值)**:+0.0626%
-
**换Query率**:-0.3267%
6.4 消融实验
还可以进一步验证每个模块的贡献:
```
MDL完整版
│
├── 去掉场景Token → 看看场景信息多重要
├── 去掉目标Token → 看看目标信息多重要
└── 去掉特征交互 → 看看特征交互多重要
```
七、现实问题:大公司 vs 中小公司
7.1 流量差距
| | 大公司(字节/阿里/腾讯) | 中小公司 |
|---|---|---|
| **日活** | 亿级 | 百万/十万级 |
| **A/B测试** | 1小时就能收敛 | 要跑1-2周 |
| **试错成本** | 掉1%影响几千万人,但扛得住 | 掉1%可能就亏损了 |
| **团队** | 几十人专门做算法 | 1-2个人兼顾 |
| **敢不敢测** | 敢,流量大波动小 | 不敢,流量小波动大 |
7.2 中小公司的困境
进行一次A/B测试,结果显示:
-
实验组:CTR = 3.21%
-
对照组:CTR = 3.18%
-
差异:+0.03%
**问题**:
-
这个差异是真的有效,还是随机波动?
-
需要跑多久才能确定?→ 可能要2周甚至更久
-
期间业务可能已经变了
7.3 低成本验证方法
方法一:离线评估
```
历史数据 ──> 训练模型 ──> 用离线指标(AUC/GAUC)看效果
│
└─ 不上线,只看模型本身的区分度
```
方法二:小流量灰度
```
先切1%流量 → 观察3天 → 正向则扩量 → 负向则回滚
```
方法三:拷贝推理(Shadow Mode)
```
线上同时跑两个模型:
-
对照组模型:负责实际决策
-
实验组模型:只记录预测结果,不影响最终结果
↓
对比两组预测的差异
↓
不影响用户,但能看出效果
```
八、总结
MDL的核心价值
-
**统一建模**:一个模型处理多场景、多目标
-
**场景感知**:显式学习场景信息,而不是隐式融合
-
**目标感知**:显式学习目标信息,提升预测精度
落地建议
-
**大公司**:直接A/B测试,流量大、见效快
-
**中小公司**:先离线评估,再小流量灰度,谨慎推进
一句话理解MDL
> **以前:场景和目标只在门口喊话**
>
> **现在:场景和目标Token走进模型内部,每层都参与决策**
参考
-
论文:MDL (Multi-Scenario Multi-Task Learning) 相关技术
-
MMoE:Google KDD 2018
*本文是个人学习笔记,如有理解偏差,欢迎指正。*