深度学习之迁移学习介绍与使用-阿里云开发者社区

开发者社区> 技术小能手> 正文

深度学习之迁移学习介绍与使用

简介:
+关注继续查看

迁移学习概述

在深度学习领域,通过预训练模型作为检查点开始训练生成神经网络模型实现对新任务的支持,这种方法通常被称为迁移学习,它的好处是不用再重头开始设计与训练一个全新的网络,而是基于已经训练好的网络模型,在其基础上进行参数与知识迁移,只需要很少量的计算资源开销与训练时间就可以实现对新任务的支持。

68fe1d156505dcd85d047f00aa908817485f2ec0

要理解迁移学习的整个过程就是要搞清楚下面三件事:

  1. 迁移学习迁移什么

  2. 迁移学习是怎么迁移的

  3. 迁移学习什么时候使用

迁移什么

在预训练模型中存在各种特征数据与权重信息、有些是与分类识别的对象本身关联比较紧密的特征数据与权重信息,有些是一些比较共性的特征数据与信息,是可以被不同的任务或者对象之间共享的,迁移学习就是要迁移那些共性特征数据与信息,从而避免再次学习这些知识,实现快速学习。简单点说迁移学习主要是实现卷积层共性特征迁移,

怎么迁移

迁移学习早期也被称为感应迁移(inductive transfer),为了搞清楚,迁移学习到底是怎么迁移的,大神Yoshua Bengio等人尝试定义了一个八层的神经网络,将ImageNet的数据集1000个种类分为A与B两个分类子集,数量均为500,然后继续分别训练生成forzen推断图、然后分别将网络模型A与B的前三层分别copy给没有训练之前网络B,并对B的余下5层随机初始化之后开始训练这两个全新的网络(B3B与A3B),他们想通过这个实验证明、如果B3B与A3B跟之前训练好的网络B有同样的识别准确率就说明自迁移网络B3B与迁移网络A3B的前三层网络特征是共性特征信息,可以用来迁移,如果网络性能下降则说明它们含有目标对象相关的个性特征无法用来迁移。

3bb0933c38b634937a9e97caf24972ba6709ae19

最终的实验结果表明,前面7层都是共性特征,只有网络的最后一层才是任务相关的个性特征数据,无法进行迁移,整个实验结果如下:

b84498ae0e9a798213458c858d2fb0342d3a1cb6

从上面可以看出单纯的迁移学习AnB的方式,随着层数的增加网络性能不断下降,但是通过迁移学习加fine-tuning的方式AnB+对前N层进行重新训练调整优化,迁移学习的效果居然比原来的还要好。充分说明迁移学习+fine-tuning是个训练卷积神经网络的好方法。

什么时候使用迁移

当我们有相似的任务需要完成的时候,我们可以使用预训练的相关模型,在此基础上进行迁移学习即可,这个方面caffe与tensorflow都提供大量的可以用于迁移学习的预训练模型库,在github上地址分别如下:

# Caffe模型
https://github.com/BVLC/caffe/wiki/Model-Zoo
# tensorflow模型
https://github.com/tensorflow/models

在实际使用中我们把预训练的网络称为base-network,把要迁移的前n层复制到一个到目标网络(target network),然后随机初始化目标网络的余下各层、开始训练进行反向传播、反向传播时候有两种方法可以使用:

  • 把前面n层冻结forzen、只对后面的层进行训练,这种方法适合少的样本数据,而且随着层冻结n数值增大、网络性能会下降,这种是单纯的迁移学习。

  • 不冻结前n层、全程参与训练不断调整它们的参数,实现更好的网络性能这种方法称为迁移学习+fine-tuning

迁移学习使用

在tensorflow中通过tensorflow object detection API框架使用迁移学习是对象检测与识别,只需要几步即可:下面是我自己实现的基于tensorflow object detection API使用SSD模型迁移学习实现了简单的手势识别看视频即可:




原文发布时间为:2018-09-28
本文作者:gloomyfish
本文来自云栖社区合作伙伴“OpenCV学堂”,了解相关信息可以关注“OpenCV学堂”。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《Greenplum5.0 最佳实践》 迁移数据使用Gptransfer
使用 gptransfer 完成 GPDB 集群间数据迁移任务
4588 0
阿里云城市服务商分享怎么使用DTS迁移PPAS数据
使用数据传输服务(DTS)将本地数据库迁移到 RDS for PPAS,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。迁移过程中,对本地的 Oracle 数据库没有影响。那么如何操作呢,湖北区域阿里云城市服务商捷讯技术告诉您怎么使用怎么使用DTS迁移PPAS数据
1463 0
Android基础_1 四大基本组件介绍与生命周期
    Android四大基本组件分别是Activity,Service(服务),Content Provider(内容提供者),BroadcastReceiver(广播接收器)。 一、四大基本组件 Activity :      应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。
905 0
Exceptionless 5.0.0本地Docker快速部署介绍
Exceptionless 是一个开源的实时的好用的日志收集框架,它将日志收集变得简单易用并且不需要了解太多的相关技术细节及配置。但是之前的版本将其Web和API绑定在了Windows平台通过IIS运行,对于已经步入云原生时代的我们显得有点格格不入。
1814 0
使用Keras进行深度学习:(三)使用text-CNN处理自然语言(下)
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习、深度学习的知识! 在上一篇文章中,已经介绍了Keras对文本数据进行预处理的一般步骤。
1771 0
runtime system学习笔记
经常听到runtime这个词,却不知是做什么的,最近在一本书上看到了它的一点相关知识,记录如下: 1、Object-C是一门动态编程语言,具有动态特性,所以,OC不仅需要编译环境,也需要运行时系统(runtime system)来执行编译好的代码。
642 0
SQLServer CDC数据迁移和数据抽取功能介绍
CDC介绍 cdc.png 为了满足数据迁移和数据抽取的业务需要,使得有机会在数据库层面上直接实现增量抽取功能,ORACLE综合性能和场景需要,在数据库引擎层面直接集成了CDC功能,由于提供了类似API的功能接口,变更数据捕获和更改跟踪均不要求在源中进行任何架构更改或使用触发器,所以比第三方工具具有一定的优势。
1605 0
RedisManager使用手册(六)-- 监控功能介绍
RedisManager Monitor功能和query功能介绍,Monitor模块对Redis 集群的重要指标进行监控,如平均内存占用、客户端连接数、cache命中率,节点内存碎片等,Monitor 模块中支持查看 Config、Info、Slowlog 和查询数据功能。
1879 0
SQLServer CDC数据迁移和数据抽取功能介绍 2
数据库环境: 1、SQLServer 2008R2 2、SQLServer 代理打开 一、新建一个数据库 创建数据库 Incremental_DB image.
966 0
机器学习之使用sklearn构造决策树模型
机器学习之使用sklearn构造决策树模型一、任务基础导入所需要的库 1234import matplotlib.pyplot as pltimport pandas as pd %matplotlib inline加载sklearn内置数据集 ,查看数据描述 123from sklearn.
719 0
+关注
技术小能手
云栖运营小编~
7208
文章
9
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载