MDL (Multi-Scenario Denoising Learning) 笔记

原文:https://mp.weixin.qq.com/s/LUfZLnWD9d60cn9H192Hig

---与AI瞎聊

> 写在前面:这是一篇关于MDL(Multi-Scenario Multi-Task Learning)技术的学习笔记,试图用最通俗的方式解释这个看似复杂的技术概念。


一、背景:为什么需要多场景多目标?

在推荐系统和广告领域,我们经常会遇到这样的问题:

  • 同一个产品,需要同时预测「点击率」和「转化率」

  • 同一个模型,需要同时服务「搜索场景」和「推荐场景」

  • 不同场景下,用户的行为模式完全不同

传统做法是**每个场景单独建模**:

```

搜索场景 → 搜索模型 → 点击率 + 转化率

推荐场景 → 推荐模型 → 点击率 + 转化率

```

这种方式的弊端显而易见:

  1. **数据稀疏**:每个场景的数据量有限,模型效果受限

  2. **资源浪费**:每个场景都要维护一套独立的模型

  3. **难以迁移**:新场景冷启动困难

于是,研究者们开始思考:**能不能用一个统一的模型,同时处理多个场景、多个目标?**

这就是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的核心价值

  1. **统一建模**:一个模型处理多场景、多目标

  2. **场景感知**:显式学习场景信息,而不是隐式融合

  3. **目标感知**:显式学习目标信息,提升预测精度

落地建议

  • **大公司**:直接A/B测试,流量大、见效快

  • **中小公司**:先离线评估,再小流量灰度,谨慎推进

一句话理解MDL

> **以前:场景和目标只在门口喊话**

>

> **现在:场景和目标Token走进模型内部,每层都参与决策**


参考

  • 论文:MDL (Multi-Scenario Multi-Task Learning) 相关技术

  • MMoE:Google KDD 2018


*本文是个人学习笔记,如有理解偏差,欢迎指正。*

相关推荐
困死,根本不会2 小时前
蓝桥杯python备赛笔记之(八)动态规划(DP)
笔记·python·学习·算法·蓝桥杯·动态规划
ByNotD0g2 小时前
Doris 学习笔记
android·笔记·学习
困死,根本不会3 小时前
Qt Designer 基础操作学习笔记
开发语言·笔记·qt·学习·microsoft
2501_926978333 小时前
LLM的可信度边界--人类思考的可信边界
经验分享·笔记·ai写作
在坚持一下我可没意见3 小时前
软件测试入门复习笔记:认识测试
软件测试·笔记·概念
xuhaoyu_cpp_java3 小时前
并发编程笔记2
笔记
云边散步3 小时前
godot2D游戏教程系列二(13)
笔记·学习·游戏·游戏开发
九成宫3 小时前
编译技术/编译原理期末复习
笔记·软件工程·编译原理·编译技术
被遗忘的旋律.3 小时前
Linux驱动开发笔记(二十六)——PWM(SG90驱动)
linux·驱动开发·笔记