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 80 81 82 83 84 85 86 87
## 使用教程(复现论文)
### 注意
为了方便使用者能够快速的跑通每一个模型,我们在每个模型下都提供了样例数据,并且调整了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
# infer_runner中 class配置为 class: single_infer
# 修改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          |