迁移学习让深度学习更容易

深度学习在一些传统方法难以处理的领域有了很大的进展。这种成功是由于改变了传统机器学习的几个出发点,使其在应用于非结构化数据时性能很好。如今深度学习模型可以玩游戏,检测癌症,和人类交谈,自动驾驶。

深度学习变得强大的同时也需要很大的代价。进行深度学习需要大量的数据、昂贵的硬件、甚至更昂贵的精英工程人才。

在Cloudera Fast Forward实验室,我们对能解决这些问题的创新特别兴奋。我们最新的研究报告深入探讨了多任务学习,一种允许机器学习模型同时从多个任务中学习的方法。其中的一个好处就是可以减少训练数据需求。

在本文中,我们将讲述迁移学习,这是一种可以将知识从一项任务迁移到另一项任务的相关技术。迁移学习允许你从相关问题中转移知识而不是针对问题开发一个完全定制的解决方案,这能帮助你更轻松地解决特定问题。通过迁移这些知识,你可以减少很多开支,接下来看一下该方法如何有效地解决上述问题。

为什么深度学习不同于其他方法

迁移学习不是一种新技术,也不是专门针对深度学习的,但考虑到最近深度学习的进展,它是一种令人兴奋的新技术。首先,有必要说明深度学习与传统机器学习的不同之处。

深度学习是在较低的抽象层次上进行的

机器学习是机器自动学习函数权重的一种方式。

确定函数如何从提供的输入产生输出是比较困难的。如果对函数没有任何限制,那么可能性是无穷无尽的。为了简化这个任务,我们通常在功能上强加某种类型的结构——基于我们正在解决的问题的类型或者简单的尝试和误差。这种结构定义了一种机器学习模型。

理论上,结构是无限的,但在实践中,大多数机器学习用例都可以通过应用少数的结构来解决:线性模型、树的集合和支持向量机。数据科学家的工作就是从这一小部分可能的结构中选择正确的结构使用。

这些模型可以作为黑盒对象从各种成熟的机器学习库中获得,并且只需要几行代码就可以训练出来。例如,可以使用Python的scikit-learn来训练一个随机森林模型,如下所示: 

clf = RandomForestClassifier()
clf.fit(past_data, labels)
predictions = clf.predict(future_data)

或R中的线性回归模型: 

linearModel <- lm(y ~ X, data=pastData)
predictions <- predict(linearModel, futureData)

虽然深度学习是在较低的层次上进行的,但并不是在有限的模型结构中进行选择的,而是允许实践者加上自己设计的模型结构。构建块是可以认为是基本数据转换的模块。这意味着在应用深度学习时,我们需要打开黑盒子,而不是通过算法固定地实现。

这样以来就允许开发者构建更强大的模型,从另一个角度来看这也为模型构建添加了一个全新的维度。尽管大量的深度学习研究报告、实用指南被发表,但要有效地组织这些转变可能是一个困难的过程。

考虑一个极其简单的卷积神经网络图像分类器,它在流行的深度学习库PyTorch中定义:

class Net(nn.Module):def __init__(self):super(Net, self).__init__()self.conv1 = nn.Conv2d(1, 10, kernel_size=5)self.conv2 = nn.Conv2d(10, 20, kernel_size=5)self.conv2_drop = nn.Dropout2d()self.fc1 = nn.Linear(320, 50)self.fc2 = nn.Linear(50, 10)def forward(self, x):x = F.relu(F.max_pool2d(self.conv1(x), 2))x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))x = x.view(-1, 320)x = F.relu(self.fc1(x))x = F.dropout(x, training=self.training)x = self.fc2(x)return F.log_softmax(x, dim=1)

因为我们使用的是低级的构建块,所以我们可以更改模型的单个组件(例如F.relu,F.sigmoid)。这为我们提供了可能会产生不同结果的全新模型体系结构,而这种可能性是无限的。

深度学习尚未被充分理解

即使给定一个固定的神经网络架构,训练也是非常困难的。首先,深度学习损失函数不是一般的凸函数,这意味着训练不一定会产生最好的解决方案。其次,深度学习仍然是非常新的,它的许多组成部分还没有被很好地理解。例如,批处理归一化最近受到了关注,因为一些模型中它似乎对良好结果至关重要,但专家们无法就原因达成一致。研究员阿里·拉希米在最近的一次机器学习会议上把深度学习比作炼金术引起了一些争议。

自动特征工程

深度学习中增加的复杂性使一种称为表示学习的技术得以实现,这就是为什么神经网络经常被称为“自动特征工程”。总之,我们以这样一种方式构建模型而不需要从数据集中人工设计有用的特征,这样它们就可以学习任何必要的、对手头任务有用的特征。将特征工程放到模型上是非常强大的,但是需要大量数据和大量计算能力的模型成本。

你能做什么

与其他机器学习方法相比,深度学习显得很复杂,以至于它似乎难以融入你的业务。对于资源有限的组织来说,这种感觉更加强烈。

对于真正需要投入大量资源进行开发的组织,可能确实需要雇佣专家并购买专门的硬件。但在很多情况下,这是不必要的。有很多方法可以在不进行巨额投资的情况下有效地应用它,这就是迁移学习的由来。

转移学习是使知识从一种机器学习模式迁移到另一种机器学习模式的技术。这些模型可能是多年来对模型结构的研究、对庞大数据集的训练以及多年的计算时间进行优化的结果。通过迁移学习,你可以不用付出任何代价就能从这项工作中获得好处。

什么是转移学习?

大多数机器学习任务从零知识开始,这意味着模型的结构和参数开始是随机猜测的。

例如:检测猫模型是通过猜测开始训练的,它通过聚集它所见过的许多不同的猫的共同模式,逐渐了解猫是什么。

在这种情况下,模型学到的所有东西都来自所给出的数据。但这是解决问题的唯一方法吗?在某些情况下,好像是。

检测猫的模型在不相关的应用程序中可能是无用的,比如诈骗检测。它只知道如何理解猫的图片,而不是信用卡交易。

但在其他情况下,两个系统之间好像能够在任务之间共享信息。

猫检测器在相关任务中很有用,比如猫的面部定位。检测器应该已经知道如何检测猫的胡须、鼻子和眼睛——所有这些东西在定位猫的脸时都很有用。

这就是转移学习的本质:采用一个已经学会如何很好地完成一项任务的模型,并将部分知识迁移到相关任务。

当我们检查自己的学习经验时,也证明着迁移学习的正确性;我们定期会迁移过去学到的技能,以便更快地学习新的技能。例如,一个已经学会扔棒球的人不需要完全重新学习扔球的技巧来学习如何扔足球。这些事情是内在相关的,做好其中一件事的能力自然会转化为做好另一件事的能力。

在机器学习领域,没有比过去五年的计算机视觉领域更好的例子了。一开始训练模型是很少见的。相反,我们从一个预先训练好的模型开始,这个模型已经知道如何分类简单的物体,比如猫、狗和雨伞。学习对图像进行分类的模型首先要学习检测一般图像特征,如边缘、形状、文本和面孔。

预训练模型具有这些基本技能。通过在新数据集上添加层或重新训练,可以稍微修改预先训练的分类模型,将这些昂贵的基本技能迁移到新的专门化中,这就是迁移学习。

迁移学习需要更少的训练数据

当你在一个新的与猫相关的任务中再次用你的猫检测模型时,你的模型已经有了“认识一百万只猫的智慧”,这意味着你不需要使用几乎同样多的图片来训练新的任务。

通过迁移学习的模型泛化能力更好

迁移学习提高了泛化能力,或者提高了模型在未经训练的数据上表现良好的能力。这是因为预先训练的模型是有目的地训练任务,这些任务迫使模型学习在相关上下文中有用的通用特性。当模型迁移到一个新的任务时,很难对新的训练数据进行过度拟合,因为模型只能从一个非常一般的知识库中增量地学习。建立一个泛化能力好的模型是机器学习中最困难也是最重要的部分之一。

迁移学习训练过程并不那么脆弱

从一个预先训练好的模型开始有助于克服训练一个复杂模型的、令人沮丧的、脆弱的和混乱的过程。迁移学习将可训练参数的数量减少了100%,使训练更稳定,更容易调试。

转移学习使深度学习更容易

最后,迁移学习使深度学习更容易进行,因为不需要自己成为专家来获得专家级别的结果。比如流行的图像分类模型Resnet-50。

这个特定的架构是如何选择的?这是多年来各种深度学习专家的研究和实验的结果。在这个复杂的结构中有2500万个权重,如果没有对模型的每个组件的广泛了解,从头优化这些权重几乎是不可能的。幸运的是,通过迁移学习,可以重用复杂的结构和优化的权重,大大降低了深入学习的门槛。

结论

迁移学习是一种知识(权重)共享技术,它减少了构建深度学习模型所需的训练数据、计算能力和工程人才的数量。而且,由于深度学习能够比传统机器学习提供显著的改进,因此迁移学习是一个必不可少的工具。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java多线程系列:通过对战游戏学习CyclicBarrier

CyclicBarrier是java.util.concurrent包下面的一个工具类&#xff0c;字面意思是可循环使用&#xff08;Cyclic&#xff09;的屏障&#xff08;Barrier&#xff09;&#xff0c;通过它可以实现让一组线程到达一个屏障&#xff08;也可以叫同步点&#xff09;时被阻塞&#xff0…

Wi-Fi 6到底有什么特别?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 甜草莓责编 | 阿秃▋ 什么是Wi-Fi 6 &#xff1f;Wi-Fi 6&#xff0c;是Wi-Fi联盟给IEEE Std. P802.11ax起的别名。众所周知&#xff0c;以前我们的Wi-Fi都是叫作802.11a/b/n/g/ac/ax之类的名字。这种命名方式实在容易让人…

matlab直流电机pid调速仿真,直流电机双闭环PID调速系统仿真设计

目录直流电机双闭环PID调速系统仿真1 转速、电流双闭环直流调速系统的组成及工作原理2 双闭环调速系统的动态数学模型3 调节器的设计3.1 电流调节器的设计3.2 转速调节器的设计4 搭建模型5 参数计算5.1 参数的直接计算5仿真具体参数6 仿真结果7 结束语8 参考文献摘要在工程的应…

【小技巧】桌面图标出现蓝色问号的怎么办?

【背景】 今天因为要联调前端所以用SVN更新了一下前端的代码&#xff0c;结果没想到桌面图标全部变成了带着蓝色问号的&#xff0c;吓了自己一跳。查了一下之后顺利解决了&#xff0c;不过以防万一记录一下解决方法。 【内容】 解决步骤&#xff1a;首先确定是SVN的问题导致了…

恒强制版系统980_速来围观 | 恒强制版小图高级功能讲解

点击蓝字关注我们 Spring comes小图是用自定义的动作来定义使用者色码(120-183)。小图的主要构成如下图&#xff1a;1. 模块色数属性模块色数有如下规则&#xff1a;(1) 小于100(一般填1)的小图为普通小图【980修改】&#xff1b;(2) 小于200大于100(一般填101)的小图为提花小图…

读懂这篇文章,你的阿里技术面就可以过关了 | Apache RocketMQ 101

在美国的大学课程中&#xff0c;101是所有课程中的第一门&#xff0c;是新生入学后的必修课程。阿里巴巴中间件技术专家刘振东在上周的Apache RocketMQ开发者沙龙北京站的活动上&#xff0c;进行了主题为《ApacheRocketMQ 101》的分享&#xff0c;帮助开发者从0开始学习 Apache…

Nacos 计划发布v0.2版本,进一步融合Dubbo和SpringCloud生态

在近期的Aliware Open Source 成都站的活动上&#xff0c;阿里巴巴高级工程师邢学超&#xff08;于怀&#xff09;分享了Nacos v0.2的规划和进度&#xff0c;并对Nacos v0.3的控制台进行了预览。Nacos v0.2将进一步融入Duboo和Spring Cloud生态&#xff0c;帮助开发者更好的在微…

你还在疯狂加班打码?兄dei,不如跟我学做超融合吧!

纵观过去十年&#xff0c;媒体、娱乐、交通、银行、保险、医疗、旅游、物流等行业&#xff0c;无一不打上了数字化的烙印。据统计&#xff0c;一百多年前&#xff0c;公司的平均寿命是67年&#xff1b;而在当今的数字化时代&#xff0c;则锐减至15年。 除此之外&#xff0c;更有…

你只差这两步 | 将Sentinel 控制台应用于生产环境

这是围绕 Sentinel 的使用场景、技术对比和实现、开发者实践等维度推出的系列文章的第四篇。 第一篇回顾&#xff1a; Dubbo 的流量防卫兵 | Sentinel如何通过限流实现服务的高可用性 - 传送门 第二篇回顾&#xff1a; RocketMQ 的保险丝| Sentinel 如何通过匀速请求和冷启动…

eclipse分级,分级列表显示 - bieshixuan的个人博客 - OSCHINA - 中文开源技术交流社区...

这是个效果图设计思想是&#xff0c;使用左右两个tableview分别展示NSArray * _allArr;NSMutableArray * _rightArr;UITableView * _leftTableView;UITableView * _rightTableView;初始化_arr [{"全部":[ "棉花", "小麦", "水稻", &q…

分布式消息规范 OpenMessaging 1.0.0-preview 发布

OpenMessaging 是由阿里巴巴牵头发起&#xff0c;由 Yahoo、滴滴、Streamlio、微众银行、Datapipeline 等公司共同发起创建的分布式消息规范&#xff0c;其目标在于打造厂商中立&#xff0c;面向 Cloud Native &#xff0c;同时对流计算以及大数据生态友好的下一代分布式消息标…

腾讯云重磅发布系列自研产品,自研服务器星星海为云而生

今日在腾讯全球数字生态大会成都峰会上&#xff0c;腾讯云重磅发布系列自研产品&#xff0c;包括腾讯自研第四代数据中心T-block产品家族、第一款真正为云而生的自研服务器“星星海”等基础产品&#xff0c;结合现场发布的弹性容器服务、无服务器等自研产品&#xff0c;腾讯云正…

wsimport将wsdl生成java 调用时碰到的一个问题Could not initialize Service

在一个采用了XFire作为WebService框架Web项目中&#xff0c;添加由JDK1.6 wsimport命令生成的一个WebService客户端调用&#xff0c;在客户端调用时出现了如下问题 log4j:WARN No appenders could be found for logger (org.codehaus.xfire.jaxws.Provider). log4j:WARN Pleas…

服务化改造实践(二)| Dubbo + Kubernetes

“没有最好的技术&#xff0c;只有最合适的技术。”我想这句话也同样适用于微服务领域&#xff0c;没有最好的服务框架&#xff0c;只有最适合自己的服务改造。在Dubbo的未来规划中&#xff0c;除了保持自身技术上的领先性&#xff0c;关注性能&#xff0c;大流量&#xff0c;大…

电子技术基础数字部分第六版_大部分数字图书馆技术特点与应用分析

数字图书馆是一个开放式的硬件和软件的集成平台&#xff0c;通过对技术和产品的集成&#xff0c;把当前大量的各种文献载体数字化&#xff0c;将它们组织起来在网上服务。从理论上讲&#xff0c;数字图书馆是一种引入管理和应用数字化技术的方法&#xff0c;它的主要特点有&…

腾讯云与智慧产业总裁汤道生:产业互联网是一场“持久战”

“产业互联网是一场‘持久战’&#xff0c;腾讯希望和合作伙伴一起参与转型&#xff0c;让每一个产业都变身为智慧产业&#xff0c;实现数字化、网络化和智能化。”10月29日&#xff0c;在腾讯全球数字生态大会成都峰会上&#xff0c;腾讯公司高级执行副总裁、云与智慧产业事业…

NLP领域中更有效的迁移学习方法

在深度学习领域&#xff0c;迁移学习&#xff08;transfer learning&#xff09;是应用比较广的方法之一。该方法允许我们构建模型时候不光能够借鉴一些其它科研人员的设计的模型&#xff0c;还可以借用类似结构的模型参数&#xff0c;有些类似于站在巨人的肩膀上进行深入开发。…

使用wsimport将wsdl生成java

使用管理员打开cmd wsimport -encoding utf-8 -keep -s D:\temp -p com.lamcy.webService -verbose http://服务地址?wsdl -encoding : 指定编码格式 -keep&#xff1a;是否生成java源文件 -d&#xff1a;指定.class文件的输出目录 -s&#xff1a;指定.java文件的输出目录…

使用python创建自己的第一个神经网络模型吧!

神经网络&#xff08;NN&#xff09;&#xff0c;也被称为人工神经网络&#xff08;ANN&#xff09;&#xff0c;是机器学习领域中学习算法的子集&#xff0c;大体上借鉴了生物神经网络的概念。目前&#xff0c;神经网络在计算机视觉、自然语言处理等领域应用广泛。德国资深机器…

百度现场面试:JVM+算法+Redis+数据库!(三面)| CSDN博文精选

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 中琦2513转自 &#xff5c; CSDN博客责编 | 阿秃百度一面&#xff08;现场&#xff09;自我介绍Java中的多态为什么要同时重写hashcode和equalsHashmap的原理Hashmap如何变线程安全&#xff0c;每种方式的优缺点垃圾回收机制…