【问题标题】:How does softmax loss works in multi-task learningsoftmax loss在多任务学习中是如何工作的
【发布时间】:2019-10-11 22:25:45
【问题描述】:

在研究多任务学习的损失函数时,我有点迷失了。

例如,在只有一项任务的二元分类中,例如将电子邮件分类为垃圾邮件与否,使用 softmax 激活 + softmax_crossentropy 损失函数,每个标签(垃圾邮件/非垃圾邮件)的概率之和将为 1。这如何适用于多任务学习?

让我们考虑一下有 5 个任务的情况,每个任务都是一个二元问题。 softmax 函数是否独立应用于每个任务(例如,对于任务 1:标签 1 = 0.7 和标签 2 = 0.3 的概率;对于任务 2:标签 1 = 0.2 和标签 2 = 0.8 的概率等等)还是它考虑联合任务(例如,如果任务 1 的标签 1 的概率为 0.80,则所有其他任务的所有其他标签的总和为 0.20)?

【问题讨论】:

    标签: keras neural-network deep-learning multitasking softmax


    【解决方案1】:

    一些注意事项:

    1. 吹毛求疵:您不应该使用 softmax 进行二元分类,而应使用常规 sigmoid(这是 softmax 的 2d 缩减),然后是 log-loss(相同)。

    2. 对于涉及分类的多任务,您可能会使用多个二进制分类。假设你有一张图像,并且你想要一个输出来说明其中是否有行人、汽车和路标。这不是多类分类,因为图像可以包含上述所有内容。因此,您将输出定义为 3 个节点,然后计算每个节点的二进制分类。这是在一个多任务 NN 中完成的,而不是运行 3 个不同的 NN,假设所有 3 个分类问题都可以受益于在该 NN 中创建的相同潜在层或嵌入。

    【讨论】:

    • 如果单个任务不是二进制的怎么办?架构应该如何改变?
    • 假设有 2 个任务。第一个任务是二分类任务,比如是否有行人。其次是多类分类任务,比如天气是晴天、阴天还是天黑。因此,您的网络应该输出 (1 + 3) 4 个节点。第一个节点应该应用 BCE(sigmoid)损失,第 2 到第 4 个节点应该连接到 CE 损失。您可以假设将输出节点拆分为 2 个不同的输出并应用 2 个不同的损失。
    【解决方案2】:

    首先,在多任务(我想说它不是MULTI-LABEL分类)分类的情况下,不同任务计算的损失函数可能不同。 例如,Task 1 可以是二分类;任务2可以是下一句预测等等。因此,由于不同的任务涉及学习不同的损失函数,您可以将其归因于假设的第一部分,即 Softmax 仅应用于第一个任务的标签,同时学习第一个任务。

    【讨论】:

      猜你喜欢
      • 2012-01-31
      • 2018-05-26
      • 2019-04-20
      • 2016-03-30
      • 2020-09-19
      • 1970-01-01
      • 2018-03-17
      • 2019-04-13
      • 2018-06-17
      相关资源
      最近更新 更多