[DeeplearningAI笔记]ML strategy_2_3迁移学习/多任务学习
机器学习策略-多任务学习
Learninig from multiple tasks
觉得有用的话,欢迎一起讨论相互学习~Follow Me
2.7 迁移学习 Transfer Learninig
- 神经网络可以从一个任务中习得知识,并将这些知识应用到另一个独立的任务中.例如:你已经训练好一个能够识别猫的系统,你利用这些知识或者这些知识的部分去完成更好的 阅读X射线扫描图.
- 这就是所谓的-- 迁移学习
how-to
- 假设你已经训练好一个图像识别神经网络,首先用一个神经网络,在(x,y)对上训练,其中x是图像,y是对象的标签.
- 现在把这个神经网络拿出来,将其适应(迁移)到不同任务中所学到的知识,比如放射科诊断.
- 把神经网络最后的输出层删除
- 进入到最后一层并将其权重删除
- 为最后一层重新赋予随机权重
- 然后将神经网络放在放射诊断数据上训练
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
- 如果你想从任务A迁移一些知识到任务B,当任务A和任务B都有相同的输入X时,迁移学习是有意义的.
- 例如在第一个例子中,输入X都是图片;在第二个例子中X都是声音音频.
- 当任务A的数据比数据B多得多时,迁移学习意义更大.
- 所有这些假设的前提都是,你希望提高任务B的性能.
- 因为任务B的每个数据更有价值,对于任务B来说.通常任务A的数据量必须大得多,才有帮助.
- 如果你觉得任务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迁移学习/多任务学习的更多相关文章
- [DeeplearningAI笔记]ML strategy_2_4端到端学习
机器学习策略-端到端学习 End-to-end deeplearning 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.9 什么是端到端学习-What is End-to-end dee ...
- DLNg[结构化ML项目]第二周迁移学习+多任务学习
1.迁移学习 比如要训练一个放射科图片识别系统,但是图片非常少,那么可以先在有大量其他图片的训练集上进行训练,比如猫狗植物等的图片,这样训练好模型之后就可以转移到放射科图片上,模型已经从其他图片中学习 ...
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化
觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.10 梯度消失和梯度爆炸 当训练神经网络,尤其是深度神经网络时,经常会出现的问题是梯度消失或者梯度爆炸,也就是说当你训练深度网络时,导数或坡 ...
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.9_归一化normalization
觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.9 归一化Normaliation 训练神经网络,其中一个加速训练的方法就是归一化输入(normalize inputs). 假设我们有一个 ...
- [DeeplearningAI笔记]ML strategy_1_3可避免误差与改善模型方法
机器学习策略 ML strategy 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.8 为什么是人的表现 今天,机器学习算法可以与人类水平的表现性能竞争,因为它们在很多应用程序中更有生产 ...
- [DeeplearningAI笔记]ML strategy_1_2开发测试集评价指标
机器学习策略 ML strategy 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.4 满足和优化指标 Stisficing and optimizing metrics 有时候把你要考 ...
- [DeeplearningAI笔记]ML strategy_1_1正交化/单一数字评估指标
机器学习策略 ML strategy 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.1 什么是ML策略 机器学习策略简介 情景模拟 假设你正在训练一个分类器,你的系统已经达到了90%准确 ...
- [DeeplearningAI笔记]ML strategy_2_2训练和开发/测试数据集不匹配问题
机器学习策略-不匹配的训练和开发/测试数据 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.4在不同分布上训练和测试数据 在深度学习时代,越来越多的团队使用和开发集/测试集不同分布的数据来 ...
- [DeeplearningAI笔记]ML strategy_2_1误差分析
机器学习策略-误差分析 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.1 误差分析 训练出来的模型往往没有达到人类水平的效果,为了得到人类水平的结果,我们对原因进行分析,这个过程称为误差 ...
随机推荐
- 九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <init> 严重: The ResourceConfig instance does not contain any root resource classes.
Tomcat启动错误:九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <i ...
- css之outline实现圆角效果
对,你没有看错,outline也可以实现圆角,不过请先读完自然会知道结果: ============================================================== ...
- 关于ios11 tableView和ScrollView受导航栏影响向下偏移的问题
看到网上说法ios11中automaticallyAdjustsScrollViewInsets属性被废弃,所以要设置tableView.contentInsetAdjustmentBehavior ...
- HDU2048 HDU2049 组合数系列 错排
HDU1465HDU2048HDU2049#include<cstdio> #include<cstdlib> #include<iostream> #includ ...
- HTML的有序列表
针对HTML的有序列表,由于平常使用的不是很多,刚开始使用的时候也是有遇到一些坑,有几个小问题: 1.li的宽度不能设置为100%,这样的话就没办法看到前面的序号 2.如果设置li的颜色字体大小,前面 ...
- IDL 结构体
1.创建结构体 (1) 命名结构体 创建具有两个成员变量A.B的命名为str1的结构体 IDL> struct1={str1,a:1,b:2} IDL> help,struct1,/str ...
- Echarts数据可视化series-graph关系图,开发全解+完美注释
全栈工程师开发手册 (作者:栾鹏) Echarts数据可视化开发代码注释全解 Echarts数据可视化开发参数配置全解 6大公共组件详解(点击进入): title详解. tooltip详解.toolb ...
- Linux上的文件搜索
locate 基础了解 在centos7上默认没有locate命令,需要先手动安装.安装步骤:http://www.cnblogs.com/feanmy/p/7676717.html locate命令 ...
- Scala基础之注解(annotation
在学习Scala的过程中,总会碰到一些注解: // Predef.scala @inline def implicitly[T](implicit e: T) = e @deprecated(&quo ...
- 在Visual Studio 2013 中使用C++单元测试
本文主要介绍在Visual Studio 2013中对代码进行单元测试的方法,包含了两方面的内容:对已有的Dll文件进行单元测试,以及对已有的源文件进行单元测试. 1. VS2013对DLL文件的单元 ...