readme.md 4.0 KB
Newer Older
Z
zhangwenhui03 已提交
1 2 3
# 多任务学习模型库

## 简介
Z
zhangwenhui03 已提交
4
我们提供了常见的多任务学习中使用的模型算法的PaddleRec实现, 单机训练&预测效果指标以及分布式训练&预测性能指标等。实现的多任务模型包括 [MMoE](mmoe)[Share-Bottom](share-bottom)[ESMM](esmm)
Z
zhangwenhui03 已提交
5 6 7 8 9 10 11

模型算法库在持续添加中,欢迎关注。

## 目录
* [整体介绍](#整体介绍)
    * [多任务模型列表](#多任务模型列表)
* [使用教程](#使用教程)
F
frankwhzhang 已提交
12 13 14
    * [数据处理](#数据处理)
    * [训练](#训练)
    * [预测](#预测)
Z
zhangwenhui03 已提交
15 16 17 18 19 20 21
* [效果对比](#效果对比)
    * [模型效果列表](#模型效果列表)

## 整体介绍
### 多任务模型列表

|       模型        |       简介        |       论文        |
C
Chengmo 已提交
22 23 24 25
| :------------------: | :--------------------: | :--------- |
| Share-Bottom | share-bottom | [1998][Multitask learning](http://reports-archive.adm.cs.cmu.edu/anon/1997/CMU-CS-97-203.pdf) |
| ESMM | Entire Space Multi-Task Model | [SIGIR 2018][Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate](https://arxiv.org/abs/1804.07931) |
| MMOE | Multi-gate Mixture-of-Experts | [KDD 2018][Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts](https://dl.acm.org/doi/abs/10.1145/3219819.3220007) |
Z
zhangwenhui03 已提交
26

Z
zhangwenhui03 已提交
27 28 29
下面是每个模型的简介(注:图片引用自链接中的论文)


Z
zhangwenhui03 已提交
30
[ESMM](https://arxiv.org/abs/1804.07931):
Z
zhangwenhui03 已提交
31
<p align="center">
Z
zhangwenhui03 已提交
32
<img align="center" src="../../doc/imgs/esmm.png">
Z
zhangwenhui03 已提交
33 34
<p>

Z
zhangwenhui03 已提交
35
[Share-Bottom](http://reports-archive.adm.cs.cmu.edu/anon/1997/CMU-CS-97-203.pdf):
Z
zhangwenhui03 已提交
36
<p align="center">
Z
zhangwenhui03 已提交
37
<img align="center" src="../../doc/imgs/share-bottom.png">
Z
zhangwenhui03 已提交
38 39
<p>

Z
zhangwenhui03 已提交
40
[MMoE](https://dl.acm.org/doi/abs/10.1145/3219819.3220007):
Z
zhangwenhui03 已提交
41 42 43 44
<p align="center">
<img align="center" src="../../doc/imgs/mmoe.png">
<p>

F
frankwhzhang 已提交
45
## 使用教程(快速开始)
Z
zhangwenhui03 已提交
46
```shell
Z
zhangwenhui03 已提交
47 48 49
python -m paddlerec.run -m paddlerec.models.multitask.mmoe # mmoe
python -m paddlerec.run -m paddlerec.models.multitask.share-bottom # share-bottom
python -m paddlerec.run -m paddlerec.models.multitask.esmm # esmm
Z
zhangwenhui03 已提交
50 51
```

F
frankwhzhang 已提交
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
## 使用教程(复现论文)
### 注意
为了方便使用者能够快速的跑通每一个模型,我们在每个模型下都提供了样例数据,并且调整了batch_size等超参以便在样例数据上更加友好的显示训练&测试日志。如果需要复现readme中的效果请按照如下表格调整batch_size等超参,并使用提供的脚本下载对应数据集以及数据预处理。

|       模型       |       batch_size      |       thread_num      |       epoch_num      |
| :------------------: | :--------------------: | :--------------------: | :--------------------: |
|       Share-Bottom        |       32       |        1       |        400       |
|       MMoE        |       32       |       1       |        400       |
|       ESMM     |       64       |       2       |        100       |

### 数据处理
参考每个模型目录数据下载&预处理脚本

```
sh run.sh
```

### 训练
```
cd modles/multitask/mmoe # 进入选定好的排序模型的目录 以MMoE为例
python -m paddlerec.run -m ./config.yaml # 自定义修改超参后,指定配置文件,使用自定义配置
```

### 预测
```
# 修改对应模型的config.yaml, workspace配置为当前目录的绝对路径
# 修改对应模型的config.yaml,mode配置infer_runner
# 示例: mode: train_runner -> mode: infer_runner
C
Chengmo 已提交
80
# infer_runner中 class配置为 class: infer
F
frankwhzhang 已提交
81 82 83 84 85 86 87
# 修改phase阶段为infer的配置,参照config注释

# 修改完config.yaml后 执行:
python -m paddlerec.run -m ./config.yaml # 以MMoE为例
```


Z
zhangwenhui03 已提交
88 89 90
## 效果对比
### 模型效果列表

Z
zhangwenhui03 已提交
91
|       数据集        |       模型       |       loss        |       auc       | 
Z
zhangwenhui03 已提交
92 93 94
| :------------------: | :--------------------: | :---------: |:---------: |
|       Census-income Data     |       Share-Bottom       |       --        |     0.93120/0.99256         |
|       Census-income Data        |       MMoE       |       --        |       0.94465/0.99324         |
F
frankwhzhang 已提交
95
|          Ali-CCP     |    ESMM       |       --        |      0.97181/0.49967          |