Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
PaddleRec
提交
34eddbc6
P
PaddleRec
项目概览
BaiXuePrincess
/
PaddleRec
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleRec
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleRec
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录