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

简介:

迁移学习概述

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

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学堂”。
相关文章
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习中的图像风格迁移
【9月更文挑战第26天】本文将探讨如何利用深度学习技术,实现图像风格的转换。我们将从基础的理论出发,然后逐步深入到具体的实现过程,最后通过代码实例来展示这一技术的实际应用。无论你是初学者还是有经验的开发者,都能在这篇文章中找到有价值的信息。让我们一起探索深度学习的奥秘吧!
|
机器学习/深度学习 数据采集 人工智能
AI赋能教育:深度学习在个性化学习系统中的应用
【10月更文挑战第26天】随着人工智能的发展,深度学习技术正逐步应用于教育领域,特别是个性化学习系统中。通过分析学生的学习数据,深度学习模型能够精准预测学生的学习表现,并为其推荐合适的学习资源和规划学习路径,从而提供更加高效、有趣和个性化的学习体验。
652 9
|
机器学习/深度学习 传感器 人工智能
深度学习之自主学习和任务规划
基于深度学习的自主学习和任务规划,是指通过深度学习算法使人工智能(AI)系统能够自主地从环境中学习,并根据特定的目标和任务,规划出有效的解决方案。
506 3
|
机器学习/深度学习 人工智能 TensorFlow
利用深度学习实现图像风格迁移
【8月更文挑战第73天】本文通过深入浅出的方式,介绍了一种使用深度学习技术进行图像风格迁移的方法。我们将探讨如何将一张普通照片转化为具有著名画作风格的艺术作品。文章不仅解释了背后的技术原理,还提供了一个实际的代码示例,帮助读者理解如何实现这一过程。
|
机器学习/深度学习 存储 自然语言处理
深度学习之少样本学习
少样本学习(Few-Shot Learning, FSL)是深度学习中的一个重要研究领域,其目标是在只有少量标注样本的情况下,训练出能够很好地泛化到新类别或新任务的模型。
400 2
|
机器学习/深度学习 自然语言处理 计算机视觉
深度学习中的迁移学习技术
【10月更文挑战第11天】 本文探讨了深度学习中的迁移学习技术,并深入分析了其原理、应用场景及实现方法。通过实例解析,展示了迁移学习如何有效提升模型性能和开发效率。同时,文章也讨论了迁移学习面临的挑战及其未来发展方向。
|
机器学习/深度学习 人工智能 自然语言处理
深度学习之复杂推理与逻辑学习
基于深度学习的复杂推理与逻辑学习是当前人工智能领域中的一个前沿研究方向,旨在结合深度学习与传统逻辑推理的优势,使机器能够在处理复杂任务时具备更强的推理能力。
286 2
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的迁移学习技术
本文探讨了深度学习中的迁移学习技术,分析了其在提高模型训练效率和效果方面的优势。通过对迁移学习的定义、原理和应用案例的详细阐述,展示了如何有效利用预训练模型解决实际问题。
338 6
|
机器学习/深度学习 算法 自动驾驶
深度学习之分布式智能体学习
基于深度学习的分布式智能体学习是一种针对多智能体系统的机器学习方法,旨在通过多个智能体协作、分布式决策和学习来解决复杂任务。这种方法特别适用于具有大规模数据、分散计算资源、或需要智能体彼此交互的应用场景。
768 4
|
机器学习/深度学习 算法 搜索推荐
利用深度学习实现图像风格迁移
【9月更文挑战第21天】本文将介绍一种使用深度学习技术,特别是卷积神经网络(CNN)和生成对抗网络(GAN)来实现图像风格迁移的方法。我们将探索如何将这些技术应用于艺术创作,以及它们如何影响现代视觉艺术的发展。

热门文章

最新文章