• 多任务学习(multi-task learning)


    整理并翻译自吴恩达深度学习系列视频:结构化机器学习2.8。

    与迁移学习的对比

    在迁移学习时,你有一个顺序执行的过程,先学习任务A,然后迁移到任务B。

    在多任务学习中,你开始就使用一个神经网络同时做几个任务,并且希望这些任务里的每一个都可以帮助到其他的任务。
    在这里插入图片描述

    如上图,你需要同时检测行人、车辆、停止标志、交通信号灯。

    多任务学习的网络结构

    在这里插入图片描述
    重点在最后一层,有四个神经元。输出 y h a t y^{hat} yhat是一个4*1的vector。

    它跟softmax regression的区别在于,softmax regression只给一个图像输出一个标签,而多任务学习给一个图像输出了多个标签(如本例4*1向量中有四个标签)。

    计算损失函数时,多了从第一个标签产生的loss到最后一个标签产生的loss的求和(图中红色部分)。
    l o s s : y h a t → 1 m ∑ i = 1 m ∑ j = 1 4 l ( y i h a t   ( i ) , y i ( i ) ) loss:y^{hat} ightarrowfrac{1}{m}sum_{i=1}^msum_{j=1}^4l(y_i^{hat (i)},y_i^{ (i)}) loss:yhatm1i=1mj=14l(yihat (i),yi(i))

    l使用的是logistic regression。

    什么时候使用多任务学习

    在这里插入图片描述

    • 在一系列任务上进行训练,它们有共享的底层特征,这使得任务之间相互获益。
    • 常见用例:你每个任务的数据量过小。
    • 你可以训练一个足够大的网络使得它在所有的任务上都表现良好。

    原字幕:
    If you can train a big enough neural network, then multi-task learning certainly should not or should rarely hurt performance. And hopefully it will actually help performance compared to if you were
    training neural networks to do different tasks in isolation.
    In practice, multi-task learning is used much less often than transfer learning.

    关键点在于,你的网络必须足够大,在这个条件下多任务学习才不会对总体性能产生有害影响。

    实践中,多任务学习比迁移学习用得少得多。

  • 相关阅读:
    python的内置方法 isinstance && issubclass
    python类的内置方法
    反射(python内置方法)
    类装饰器 @property
    多态与多态性
    组合(对象1.属性=对象2)
    类的封装
    多继承 mro 继承顺序 与 菱形继承(钻石继承)
    类的继承派生&&重写
    封装 继承 多态 派生 组合定义 && 对象之间交互
  • 原文地址:https://www.cnblogs.com/wanghongze95/p/13842522.html
Copyright © 2020-2023  润新知