机器学习策略-多任务学习

Learninig from multiple tasks

觉得有用的话,欢迎一起讨论相互学习~Follow Me

2.7 迁移学习 Transfer Learninig

  • 神经网络可以从一个任务中习得知识,并将这些知识应用到另一个独立的任务中.例如:你已经训练好一个能够识别猫的系统,你利用这些知识或者这些知识的部分去完成更好的 阅读X射线扫描图.
  • 这就是所谓的-- 迁移学习

how-to

  • 假设你已经训练好一个图像识别神经网络,首先用一个神经网络,在(x,y)对上训练,其中x是图像,y是对象的标签.

  • 现在把这个神经网络拿出来,将其适应(迁移)到不同任务中所学到的知识,比如放射科诊断.
  1. 把神经网络最后的输出层删除
  2. 进入到最后一层并将其权重删除
  3. 为最后一层重新赋予随机权重
  4. 然后将神经网络放在放射诊断数据上训练

Tips

  • 如果进行迁移学习的数据量比较小,只需要重新训练最后一两层权重.但是如果进行迁移学习的数据量较大,建议重新训练整个神经网络.
  • 预训练(pre-training): 如果重新训练所有神经网络层,那么在图像识别数据的初期训练阶段,我们称这个过程为:预训练
  • 微调(fine tuning): 在预训练后的模型上放入迁移学习的数据进行训练,这个过程称为:微调

why

  • 迁移学习的好处在于,以放射科图像检测的迁移学习为例 在预训练的过程中,我们学到了一些图像识别中低层次特征,很多结构信息,图像形状的信息,点,线,面的特征.-- 边缘检测(detecting edges),曲线检测(的tecting curves),阳性对象检测(detecting positive objects) 应用或迁移到放射科诊断上来.从非常大的图像识别数据库中习得的这些能力,会有助于你的学习算法在放射科诊断做的更好.

Another Example

  • 假设你已经训练出一个语音识别系统(speech recognition system),现在x是音频(audio)或者音频片段输入(audio snippets),y是听写文本(transcript). 我们要使用这个系统"迁移学习"建立一个"唤醒词"的系统.
  • 你可能需要去掉神经网络的最后一层,然后加入新的输出节点.但有时也可以不止加入一个新节点,或者甚至往你的神经网络加入几个新层.然后把唤醒词检测问题的标签"Y"喂进去训练.
  • 这取决于你的训练数据的多少,你可能只需要重新训练网络的新层,也许你需要重新训练网络中更多的层.

when Transfer learning makes sence

  • 迁移来源问题你有很多数据,但迁移目标问题你没有那么多数据.
  • 例如:假如在图像识别任务中你有100W样本,数据量相当多,你可以学习低层次特征,可以在神经网络的前几层学到如何识别很多有用的特征.
    • 但是对于"放射科任务",也许你只有100个样本,所以你可以将图像识别预测的知识迁移到"放射科识别任务"中,即使你的放射科数据很少.
  • 例如:在"语音识别"任务中,也许你已经有1W小时数据,训练过你的语言识别系统.所以你已经从这1W小时数据中学到了很多人类声音的特征.
    • 但是对于"触发字检测",也许你只有1小时数据,所以这数据太小,不能用来拟合很多参数.
    • 所以这种情况下,你需要预先学到很多人类声音的特征,人类语言的组成部分等等知识,可以帮你建立一个很好的唤醒字检测器(wake word detector).即使你的数据集相对较小.

summary

  1. 如果你想从任务A迁移一些知识到任务B,当任务A和任务B都有相同的输入X时,迁移学习是有意义的.
  • 例如在第一个例子中,输入X都是图片;在第二个例子中X都是声音音频.
  1. 当任务A的数据比数据B多得多时,迁移学习意义更大.
  • 所有这些假设的前提都是,你希望提高任务B的性能.
  • 因为任务B的每个数据更有价值,对于任务B来说.通常任务A的数据量必须大得多,才有帮助.
  1. 如果你觉得任务A的低层次特征,可以帮助任务B的学习,那迁移学习更有意义一些.

2.8 多任务学习 Multi-task learning

  • 在迁移学习中,你的步骤是串行的,你从任务A里学到知识然后迁移到任务B中.在多任务学习中,你是同时开始学习的,试图让单个神经网络同时做几件事情,然后希望这里的每个任务都能帮到其他所有任务.

    Simplified autonomous driving Example

  • 假设你正在研发无人驾驶车辆,那么你的无人驾驶车可能需要同时检测不同的物体.(行人,车辆,停车标志,交通灯...)

  • 需要识别的物体假设即为上述讨论的四个,则最后一层设置4个神经元,一个4维向量,分别表示对"行人,车辆,停车标志,交通灯"的预测.

其中多任务学习 Loss function 也有相应的变化.对于多任务学习:

\[Loss(\hat{y}^{(i)}_{(4, 1)})=\frac{1}{m}\sum_{i=1}^{m}\sum_{j=1}^{4}l(\hat{y}^{(i)}_{j},y^{(i)}_{j})\]

对于此处的loss函数l(交叉熵函数)的具体计算方式,详情请见:

交叉熵损失函数详解

神经网络基础

  • 其中与之前例子最大的不同在于需要对检测的多任务目标进行分别比较并相加\(\sum_{j=1}^{4}\) .
  • 这与softmax回归的主要区别在于,softmax回归将单个标签分配给单个样本,而这张图可以有很多不同的标签,所以不是说每张图都只是一张行人图片,汽车图片,停车标志图片,或者交通灯图片,多个物体可能同时出现在一张图里.
  • 你需要遍历所有的物体类型,检测那类物体有没有出现在图中.
  • 如果你训练了一个神经网络,需要最小化这个成本函数,你做的就是多任务学习

when multi-task learning makes sence

  • 你训练的一组任务可以共用低层次特征.例如对于无人驾驶车的例子,识别的物体都是道路上的标志.
  • 每个任务中学习的数据量很相近.
  • 假如你要识别100个任务,每个任务大概有1000个样本,所以如果你专注加强单个任务的性能,你只有1000个样本去训练这个任务,这是100项任务之一,但是通过其他99项任务的训练, 这些加起来一共有99000个样本,这可能大幅提升算法性能,可以提供很多知识来增强这个任务的性能
  • 如果你训练一个 足够大的神经网络,多任务神经网络和多个不同的单任务神经网络效果基本一致(即单独训练识别行人,单独识别交通标识牌...的神经网络).
  • 一般来说, 迁移学习比多任务学习运用更多 ,但是在 计算机视觉-物体检测 中有大量应用到多任务学习,并且比分别训练不同的神经网络检测物体效果更好.

[DeeplearningAI笔记]ML strategy_2_3迁移学习/多任务学习的更多相关文章

  1. [DeeplearningAI笔记]ML strategy_2_4端到端学习

    机器学习策略-端到端学习 End-to-end deeplearning 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.9 什么是端到端学习-What is End-to-end dee ...

  2. DLNg[结构化ML项目]第二周迁移学习+多任务学习

    1.迁移学习 比如要训练一个放射科图片识别系统,但是图片非常少,那么可以先在有大量其他图片的训练集上进行训练,比如猫狗植物等的图片,这样训练好模型之后就可以转移到放射科图片上,模型已经从其他图片中学习 ...

  3. [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.10 梯度消失和梯度爆炸 当训练神经网络,尤其是深度神经网络时,经常会出现的问题是梯度消失或者梯度爆炸,也就是说当你训练深度网络时,导数或坡 ...

  4. [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.9_归一化normalization

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.9 归一化Normaliation 训练神经网络,其中一个加速训练的方法就是归一化输入(normalize inputs). 假设我们有一个 ...

  5. [DeeplearningAI笔记]ML strategy_1_3可避免误差与改善模型方法

    机器学习策略 ML strategy 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.8 为什么是人的表现 今天,机器学习算法可以与人类水平的表现性能竞争,因为它们在很多应用程序中更有生产 ...

  6. [DeeplearningAI笔记]ML strategy_1_2开发测试集评价指标

    机器学习策略 ML strategy 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.4 满足和优化指标 Stisficing and optimizing metrics 有时候把你要考 ...

  7. [DeeplearningAI笔记]ML strategy_1_1正交化/单一数字评估指标

    机器学习策略 ML strategy 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.1 什么是ML策略 机器学习策略简介 情景模拟 假设你正在训练一个分类器,你的系统已经达到了90%准确 ...

  8. [DeeplearningAI笔记]ML strategy_2_2训练和开发/测试数据集不匹配问题

    机器学习策略-不匹配的训练和开发/测试数据 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.4在不同分布上训练和测试数据 在深度学习时代,越来越多的团队使用和开发集/测试集不同分布的数据来 ...

  9. [DeeplearningAI笔记]ML strategy_2_1误差分析

    机器学习策略-误差分析 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.1 误差分析 训练出来的模型往往没有达到人类水平的效果,为了得到人类水平的结果,我们对原因进行分析,这个过程称为误差 ...

随机推荐

  1. java 对象的序列化与反序列化

    一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存 ...

  2. 微信支付之h5方式(非微信内置浏览器中支付)

    这两天完成了公司网站手机和PC端的支付对接,就是支付宝和微信. 对接完后有所感触,我们来聊一聊,微信支付的坑,为什么这么说呢,因为我在对接完支付宝后是很愉快的,基本上在demo上稍加修改就ok了, 对 ...

  3. An Introduction to Variational Methods (5.1)

    在这篇文章中,我引用Bishop书中的一个例子,来简单介绍一下Variational Methods的应用.想要更详细地理解这个例子,可以参考Bishop的书Pattern Recongnition ...

  4. MySQL之增删改查

    前言:以下是MySQL最基本的增删改查语句,很多IT工作者都必须要会的命令,也是IT行业面试最常考的知识点,由于是入门级基础命令,所有所有操作都建立在单表上,未涉及多表操作. 前提:在进行" ...

  5. margin:0px auto和text-align:center区别

    (1)margin:0px auto :作用于块级元素,对块级元素进行居中 (2)text-align:center:作用于内联元素,必须放在要居中的内联元素所在的块级元素. 例: (1) <d ...

  6. 【框架学习与探究之宿主服务--Topshelf】

    前言 此文欢迎转载,原始链接地址:http://www.cnblogs.com/DjlNet/p/7603819.html 正文 原先也偶然见过这个关键词,当时只是有个大致了解貌似和WinServic ...

  7. Mysql 协议嗅探

    需求 监听通过网卡的所有mysql流量,进行解析,可在不影响现有业务情况下,进行入侵检测(IDS)或数据集成 协议要点 起初发现 用mysql-front访问数据库和mysql 的客户端访问时数据包格 ...

  8. ubuntu命令查询版本和内核版本

    1.查看ubuntu版本号: 方法一: cat  /etc/issue 返回结果: Ubuntu 6.06.2 LTS \n \l   方法二: sudo lsb_release -a  返回结果: ...

  9. iOS开发注意事项(一)

    1.OC的消息机制与C++等的函数(方法)有很大的不同,OC在运行时所执行的代码由运行环境来决定,而C++等则由编译器决定.如果调用的函数是多态的,C++在运行时要按照虚方法表来查出到底执行哪个函数, ...

  10. webpack 的使用2

    实际项目中的配置 要加__dirname 不然会报错 注意path  /dist 前不要加点 结果 将两个文件打包在一起 结果 传入对象 并且单独打包 name为key 加上本次打包的hash has ...