具有互斥任务的多任务学习?

Posted

技术标签:

【中文标题】具有互斥任务的多任务学习?【英文标题】:Multi-task learning with mutually exclusive tasks? 【发布时间】:2020-09-19 18:24:37 【问题描述】:

我希望通过使用共享层执行分割和分类来执行多任务学习,如图所示。然而,输出 1 将是一个分割掩码,它与 Dice 损失等不同的损失函数一起工作,输出 2 与 softmax 激活一起工作以提供类概率。此外,数据是互斥的,分割任务来自自然图像域,分类任务来自医学图像域。 Keras 或 Pytorch 是否有明确的方式或示例来演示此类多任务学习任务?

【问题讨论】:

【参考方案1】:

我想您想在训练时交替执行这两项任务。 我还将假设您将在同一个批次中混合这两个任务。

你可以自定义一个返回的Dataset

class MixedDataset(Dataset):
  # ...
  def __getitem__(self, index):
    # ... get data according to index
    return img, seg, seg_flag, class, class_flag

对于医学图像,seg 将是一个虚拟掩码,seg_flag 将为零,而class 将成为目标类,class_flag 为 1。 另一方面,对于自然图像,seg 将是所需的分割掩码,seg_flag 为 1,而class 将是一个虚拟图像,class_flag 为零。

现在你可以运行你的训练代码了:

for i, (img, seg, seg_flag, class, class_flag) in train_loader:
  opt.zero_grad()
  pred_mask, pred_class = model(img)  # predict both
  loss_seg = seg_flag * dice_loss_fuction(pred_mask, seg)
  loss_class = class_flag * cross_entropy_loss_function(pred_class, class)
  (loss_seg + loss_class).backward()
  opt.step()

【讨论】:

以上是关于具有互斥任务的多任务学习?的主要内容,如果未能解决你的问题,请参考以下文章

西湖大学张岳:自然语言处理中的多任务联合学习(384页PPT)

前沿 | DeepMind提出新型架构IMPALA:帮助实现单智能体的多任务强化学习

推荐系统中的多任务学习

「回顾」自然语言处理中的多任务学习

用于自然语言理解的多任务学习的深度神经网络

M-SQL:超强的多任务表示学习方法