[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 误差分析 训练出来的模型往往没有达到人类水平的效果,为了得到人类水平的结果,我们对原因进行分析,这个过程称为误差 ...
随机推荐
- Hbase 技术细节笔记(上)
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张秀云 前言 最近在跟进Hbase的相关工作,由于之前对Hbase并不怎么了解,因此系统地学习了下Hbase,为了加深对Hbase的 ...
- Sum It Up 广搜
Sum It Up Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- 设置Intel网卡以抓取报文的vlan tag
一.实验环境 1.ThinkPad T450 Notebook 2.Notebook网卡Intel I218-V 二.设置步骤 1."设备管理器" -> "Inte ...
- C#无限分级实现,前端WEB页面接收,后台提供层级Json数据
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Te ...
- springboot scheduled并发配置
本文介绍如何使用springboot的sheduled实现任务的定时调度,并将调度的任务实现为并发的方式. 1.定时调度配置scheduled 1)注册定时任务 package com.xiaoju. ...
- Android基础知识05—活动的生命周期
------ 活动的生命周期 ------ Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合.每当启动一个活动 ,他就会在返回栈中入栈,并处于栈顶位置.而每当我们按 ...
- mysql多实例-主从复制安装
安装环境:Centos6.5 mysql版本:mysql-5.5.32.tar.gz 一:安装前准备: 1.安装一些依赖库 yum install cmake gcc gcc-c++ ncurses- ...
- JFinal快速上手及注意事项
官方手册虽然写的很详细但是忽略的很多小的细节方面,不看源码,网络资料又少,很多新手找不到解决办法.所以养成出了问题,多看源码的习惯 部署helloJFinal 项目结构 - 相关代码 `package ...
- 系统讲解CSS,前端开发最神奇的技术,新手的你一定不能错过
前面小编带领大家重温了前端开发中最基本的HTML语言.如果你已经掌握了这门语言,那么恭喜你,可以去深入了解CSS技术了.CSS技术最主要的功能就是弥补HTML标记对在页面中显示外观的不足,对这些标记对 ...
- js 关于性能的数据存储
1.JavaScript中四种基本数据存取位置:字面量,本地变量,数组元素,对象成员.(四个都是存在于内存中) 一般来说:[字面量,局部变量]运行速度>[数组,对象成员] 2.内部属性包含了一个 ...