为什么迁移学习的前景这么大?为什么PyTorch这么火?
Posted 雷克世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么迁移学习的前景这么大?为什么PyTorch这么火?相关的知识,希望对你有一定的参考价值。
图:pixabay
机器学习的未来是非常光明的,为什么这么讲?因为导致机器学习大发展的激励因素几乎是一致的——大厂商们热切地开源各种工具,开始在更快的硬件领域投资,改变他们原先基于广告的商业模式。那些疯狂的科学家们(tinkerers)发明出了以前闻所未闻的应用程序。私人、公共、科学、闲置和不可利用的数据,可互换性越来越高。那么我们讨论一些实际的事情吧:我们到底怎样利用最近机器学习上的提升——那些可用的、预先训练的机器学习模型呢?
与迁移学习相关的任务需要一小部分潜在的能力,来区分不可见的数据。例如,无论你弹吉他还是钢琴,你都会比没有玩过这些乐器的人更好地选择和弦。从机器学习的角度来说,这意味着你可以复制别人的训练工作,并将其快速应用到分类照片。
吴恩达曾在2016年的神经信息处理系统大会(NIPS2016)上,总结概括了机器学习的高速发展。
特别需要说明的是,迁移学习在决定机器学习技术的所有方面都有所改进。
人力效率:如果你想要输出最后的信号,使模型可解释,易处理,并具有鲁棒性,你需要专家。得益于学术研究,各种架构在相关任务中不断进行测试,爆炸式增长。
计算效率:目前,以最先进的论文而言,在2到8个GPU的群集上进行训练通常大约需要两周。但是,通过迁移学习,你可以节省很多调整内部参数的过程。
数据效率:如果对大数据集进行训练,在大多数情况下,需要更少域的特定数据。
迁移学习被广泛用于区分具体的图像类别。普渡大学的Alfredo Canziani和Eugenio Culurciello曾在2016年5月发表过一篇名为《深度神经网络模型实际应用分析》的论文,该论文比较了在imagenet数据集上计算时,主要架构的计算效率。
具体来说,根据你的设备限制,你可以进一步将计算成本分为训练时间、推理时间和内存需求。我们需要深入挖掘,给出非常具体的约束。
首先,新的数据经常出现;其次,这些图像也具有潜在的专有性。因此,再训练过程必须在本地的中层GPU上进行,以保证可靠性。从用户的角度来看,如果在一致的时间内给出一致的结果,再训练就是可靠的。因此,基线基准测试将使用一个简单的优化方法,有利于收敛的数据效率。再其次,每个预测需要几乎实时地发生,因此我们还要关注推理时间。最后,我们关注图像(或图像的一部分)的确切类别作为决策的输入。这样,我们将top-1 accuracy考虑在内。
现在,为了降低专家的成本,随着不断发展的数据集,将计算时间与硬性约束相适应,让我们研究一下最令人垂涎的工具之一——PyTorch。
为什么PyTorch这么火爆呢?
框架合理完整、简洁、完全在代码中定义,并易于调试。只需要添加一行代码,就可以从torchvision软件包加载6种框架:AlexNet、DenseNets、Inception、SqueezeNet和VGG。
图表中的模型仅在最终层(浅),整个参数集(深)或从其初始化状态(从零开始)进行了再训练。在所有运行中,双K80 GPU大约运行在75%。
数据显示,SqueezeNet 1.1是高效的计算架构。因为想分成再训练和静态层次比较难,所以只是基于浅层再训练模型的结论太随意了。例如,VGG13的最终分类器具有8194个参数,而ResNet34的最终层比较窄,具有1026个参数。因此,只有对学习策略的超参数搜索才能使给定目标的比较真正有效。
需要注意的是,在相同训练时间下,与浅层再训练相比,深层再训练时间的精确度要低得多。在其他任务中,其他模型也遇到了相似的事情。从前一个局部最优化的角度来看,更深层次的卷积平均(小误差梯度)发生缓慢,并且在比随机初始化的情况下更不平滑。因此,参数可能最终在过渡阶段并列。如果未知的特征与原始数据不同,这种间歇性混乱应该是特别真实的,下图就是一个例子:有时候有蚂蚁靠近,有时你观察到整个蚁群。
因此,事实上,你可能会建议提高深层再训练的学习率,或者在某种程度上使用规模不变网络(scale invariant networks)。
为了评估由推理和再训练时间组成的计算效率,这是一个很好的开始。如果你想进一步提高再训练效率,你可以忽略数据增强,从未训练层中提取结果。当然,结论将会随着类别数、前面提到的其他因素,以及其他具体的限制而不同。
编译自:towards datascience
文章做了不改变原意的修改
欢迎加入
雷克大会官方预热视频
关注“机器人圈”后不要忘记置顶哟
↓↓↓点击阅读原文查看更多好内容
以上是关于为什么迁移学习的前景这么大?为什么PyTorch这么火?的主要内容,如果未能解决你的问题,请参考以下文章
什么是迁移学习 (Transfer Learning)?这个领域历史发展前景如何?
PyTorch 迁移学习 (Transfer Learning) 代码详解