Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleRec
提交
34eddbc6
P
PaddleRec
项目概览
PaddlePaddle
/
PaddleRec
通知
68
Star
12
Fork
5
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
27
列表
看板
标记
里程碑
合并请求
10
Wiki
1
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleRec
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
27
Issue
27
列表
看板
标记
里程碑
合并请求
10
合并请求
10
Pages
分析
分析
仓库分析
DevOps
Wiki
1
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
34eddbc6
编写于
8月 24, 2020
作者:
1
123malin
提交者:
GitHub
8月 24, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into readme
上级
e2a97b46
c9c2a695
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
112 addition
and
139 deletion
+112
-139
models/multitask/mmoe/README.md
models/multitask/mmoe/README.md
+104
-130
models/multitask/mmoe/config.yaml
models/multitask/mmoe/config.yaml
+8
-9
未找到文件。
models/multitask/mmoe/README.md
浏览文件 @
34eddbc6
...
...
@@ -34,19 +34,7 @@
多任务模型通过学习不同任务的联系和差异,可提高每个任务的学习效率和质量。多任务学习的的框架广泛采用shared-bottom的结构,不同任务间共用底部的隐层。这种结构本质上可以减少过拟合的风险,但是效果上可能受到任务差异和数据分布带来的影响。 论文
[
《Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts》
](
https://www.kdd.org/kdd2018/accepted-papers/view/modeling-task-relationships-in-multi-task-learning-with-multi-gate-mixture-
)
中提出了一个Multi-gate Mixture-of-Experts(MMOE)的多任务学习结构。MMOE模型刻画了任务相关性,基于共享表示来学习特定任务的函数,避免了明显增加参数的缺点。
我们在Paddlepaddle定义MMOE的网络结构,在开源数据集Census-income Data上验证模型效果,两个任务的auc分别为:
1.
income
> max_mmoe_test_auc_income:0.94937
>
> mean_mmoe_test_auc_income:0.94465
2.
marital
> max_mmoe_test_auc_marital:0.99419
>
> mean_mmoe_test_auc_marital:0.99324
我们在Paddlepaddle定义MMOE的网络结构,在开源数据集Census-income Data上验证模型效果。
若进行精度验证,请参考
[
论文复现
](
https://github.com/PaddlePaddle/PaddleRec/tree/master/models/multitask/mmoe#论文复现
)
部分。
...
...
@@ -59,26 +47,6 @@
数据地址:
[
Census-income Data
](
https://archive.ics.uci.edu/ml/machine-learning-databases/census-income-mld/census.tar.gz
)
数据解压后, 在run.sh脚本文件中添加文件的路径,并运行脚本。
```
sh
mkdir
train_data
mkdir
test_data
mkdir
data
train_path
=
"data/census-income.data"
test_path
=
"data/census-income.test"
train_data_path
=
"train_data/"
test_data_path
=
"test_data/"
pip
install
-r
requirements.txt
wget
-P
data/ https://archive.ics.uci.edu/ml/machine-learning-databases/census-income-mld/census.tar.gz
tar
-zxvf
data/census.tar.gz
-C
data/
python data_preparation.py
--train_path
${
train_path
}
\
--test_path
${
test_path
}
\
--train_data_path
${
train_data_path
}
\
--test_data_path
${
test_data_path
}
```
生成的格式以逗号为分割点
...
...
@@ -86,6 +54,7 @@ python data_preparation.py --train_path ${train_path} \
0,0,73,0,0,0,0,1700.09,0,0
```
完整的大数据参考论文复现部分。
## 运行环境
...
...
@@ -124,7 +93,6 @@ dataset:
CPU环境
在config.yaml文件中设置好epochs、device等参数。
```
- name: infer_runner
class: infer
...
...
@@ -134,14 +102,20 @@ CPU环境
## 论文复现
用原论文的完整数据复现论文效果需要在config.yaml中修改batch_size=1000, thread_num=8, epoch_num=4
数据下载,我们提供了在百度云上预处理好的数据,可以直接训练
使用gpu p100 单卡训练 6.5h 测试auc: best:0.9940, mean:0.9932
```
wget https://paddlerec.bj.bcebos.com/mmoe/train_data.csv
wget https://paddlerec.bj.bcebos.com/mmoe/test_data.csv
wget https://paddlerec.bj.bcebos.com/mmoe/config_all.yaml
```
用原论文的完整数据复现论文效果需要在config.yaml中修改batch_size=32 gpu配置等,可参考config_all.yaml
修改后运行方案:修改config.yaml中的'workspace'为config.yaml的目录位置,执行
使用gpu p100 单卡训练 6.5h 测试auc: best:0.9940, mean:0.9932
```
python -m paddlerec.run -m /home/your/dir/config
.yaml #调试模式 直接指定本地config的绝对路径
python -m paddlerec.run -m /home/your/dir/config
_all.yaml #调试模式 直接指定本地config的绝对路径
```
## 进阶使用
...
...
models/multitask/mmoe/config.yaml
浏览文件 @
34eddbc6
...
...
@@ -16,12 +16,12 @@ workspace: "models/multitask/mmoe"
dataset
:
-
name
:
dataset_train
batch_size
:
1
batch_size
:
5
type
:
QueueDataset
data_path
:
"
{workspace}/data/train"
data_converter
:
"
{workspace}/census_reader.py"
-
name
:
dataset_infer
batch_size
:
1
batch_size
:
5
type
:
QueueDataset
data_path
:
"
{workspace}/data/train"
data_converter
:
"
{workspace}/census_reader.py"
...
...
@@ -38,15 +38,14 @@ hyper_parameters:
strategy
:
async
#use infer_runner mode and modify 'phase' below if infer
mode
:
train_runner
#mode: infer_runner
mode
:
[
train_runner
,
infer_runner
]
runner
:
-
name
:
train_runner
class
:
train
device
:
cpu
epochs
:
3
save_checkpoint_interval
:
2
save_checkpoint_interval
:
1
save_inference_interval
:
4
save_checkpoint_path
:
"
increment"
save_inference_path
:
"
inference"
...
...
@@ -61,7 +60,7 @@ phase:
model
:
"
{workspace}/model.py"
dataset_name
:
dataset_train
thread_num
:
1
#
- name: infer
#
model: "{workspace}/model.py"
#
dataset_name: dataset_infer
#
thread_num: 1
-
name
:
infer
model
:
"
{workspace}/model.py"
dataset_name
:
dataset_infer
thread_num
:
1
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录