多任务学习可能带来负迁移(negative transfer)现象,即相关性不强的任务之间的信息共享,会影响网络的表现。此前已经有部分研究来减轻负迁移现象,如谷歌提出的MMoE模型。
但通过实验发现,多任务学习中往往还存在跷跷板现象(seesaw phenomenon),即多任务学习相对于多个单任务学习的模型,往往能够提升一部分任务的效果,同时牺牲另外部分任务的效果。即使通过MMoE这种方式减轻负迁移现象,跷跷板现象仍然是广泛存在的。
论文提出了Progressive Layered Extraction (简称PLE),来解决多任务学习的跷跷板现象。
model_config {
feature_groups {
group_name: "all"
feature_names: "user_id"
feature_names: "cms_segid"
...
group_type: DEEP
}
ple {
extraction_networks {
network_name: "layer1"
expert_num_per_task: 2
share_num: 2
task_expert_net {
hidden_units: [1024, 512, 256]
}
share_expert_net {
hidden_units: [1024, 512, 256]
}
}
extraction_networks {
network_name: "layer2"
expert_num_per_task: 3
share_num: 3
task_expert_net {
hidden_units: [256, 128, 64]
}
share_expert_net {
hidden_units: [256, 128, 64]
}
}
extraction_networks {
network_name: "layer3"
expert_num_per_task: 4
share_num: 4
task_expert_net {
hidden_units: [128, 64, 32]
}
share_expert_net {
hidden_units: [128, 64, 32]
}
}
task_towers {
tower_name: "ctr"
label_name: "clk"
mlp {
hidden_units: [256, 128, 64]
}
metrics {
auc {}
}
losses {
binary_cross_entropy {}
}
}
task_towers {
tower_name: "cvr"
label_name: "buy"
mlp {
hidden_units: [256, 128, 64]
}
metrics {
auc {
thresholds: 1000
}
}
losses {
binary_cross_entropy {}
}
}
}
}
- feature_groups: 配置一个名为'all'的feature_group。
- ple: ple相关的参数
- extraction_networks
- network_name
- expert_num_per_task 每个目标任务的专家数
- share_num 共享任务的专家数
- task_expert_net 目标任务的专家网络的dnn参数配置
- share_expert_net 共享任务的专家网络的dnn参数配置
- task_towers 根据任务数配置task_towers
- tower_name:TaskTower名
- label_name: tower对应的label名
- mlp: TaskTower的MLP参数配置
- losses: 任务损失函数配置
- metrics: 任务评估指标配置
- extraction_networks