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

简介: 一文读懂迁移学习及其对深度学习发展的影响!

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

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

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

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

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

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

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

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

7360a685104b0e1b2c6a50467dbcb87558cdf46c

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

08de50db3d358e902b84f5010f815d763974e30e

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

622efa39c757570b00b5f1c74f77ee75c70d4f6b

这些模型可以作为黑盒对象从各种成熟的机器学习库中获得,并且只需要几行代码就可以训练出来。例如,可以使用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)

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

75bc37da9bd7fcc46e755a9e6ac0cd3a0bf3ca5b

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

考虑一个极其简单的卷积神经网络图像分类器,它在流行的深度学习库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)。这为我们提供了可能会产生不同结果的全新模型体系结构,而这种可能性是无限的。

深度学习尚未被充分理解

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

自动特征工程

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

你能做什么

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

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

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

什么是转移学习?

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

a6a0ec46b47a805ee439c386572fe3d89fb9ce09

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

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

72642191f0effbc7692dc434cf7b94b05ddf8f8e

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

 

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

074bc9165039bfa0fd434a03a7eced5fdc666993

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

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

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

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

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

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

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

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

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

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

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

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

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

833d7b3bcd5326431f820549649e73bddf9fc351

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

结论

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

本文由阿里云云栖社区组织翻译。

文章原标题《deep-learning-is-easy-an-introduction-to-transfer-learning.》

作者:Cloudera Fast Forward 译者:虎说八道,审校:。

文章为简译,更为详细的内容,请查看原文

相关文章
|
4月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习中的图像风格迁移
【9月更文挑战第26天】本文将探讨如何利用深度学习技术,实现图像风格的转换。我们将从基础的理论出发,然后逐步深入到具体的实现过程,最后通过代码实例来展示这一技术的实际应用。无论你是初学者还是有经验的开发者,都能在这篇文章中找到有价值的信息。让我们一起探索深度学习的奥秘吧!
|
2月前
|
机器学习/深度学习 数据采集 人工智能
AI赋能教育:深度学习在个性化学习系统中的应用
【10月更文挑战第26天】随着人工智能的发展,深度学习技术正逐步应用于教育领域,特别是个性化学习系统中。通过分析学生的学习数据,深度学习模型能够精准预测学生的学习表现,并为其推荐合适的学习资源和规划学习路径,从而提供更加高效、有趣和个性化的学习体验。
205 9
|
3月前
|
机器学习/深度学习 传感器 人工智能
深度学习之自主学习和任务规划
基于深度学习的自主学习和任务规划,是指通过深度学习算法使人工智能(AI)系统能够自主地从环境中学习,并根据特定的目标和任务,规划出有效的解决方案。
131 3
|
3月前
|
机器学习/深度学习 人工智能 TensorFlow
利用深度学习实现图像风格迁移
【8月更文挑战第73天】本文通过深入浅出的方式,介绍了一种使用深度学习技术进行图像风格迁移的方法。我们将探讨如何将一张普通照片转化为具有著名画作风格的艺术作品。文章不仅解释了背后的技术原理,还提供了一个实际的代码示例,帮助读者理解如何实现这一过程。
|
3月前
|
机器学习/深度学习 存储 自然语言处理
深度学习之少样本学习
少样本学习(Few-Shot Learning, FSL)是深度学习中的一个重要研究领域,其目标是在只有少量标注样本的情况下,训练出能够很好地泛化到新类别或新任务的模型。
68 2
|
3月前
|
机器学习/深度学习 自然语言处理 计算机视觉
深度学习中的迁移学习技术
【10月更文挑战第11天】 本文探讨了深度学习中的迁移学习技术,并深入分析了其原理、应用场景及实现方法。通过实例解析,展示了迁移学习如何有效提升模型性能和开发效率。同时,文章也讨论了迁移学习面临的挑战及其未来发展方向。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习之复杂推理与逻辑学习
基于深度学习的复杂推理与逻辑学习是当前人工智能领域中的一个前沿研究方向,旨在结合深度学习与传统逻辑推理的优势,使机器能够在处理复杂任务时具备更强的推理能力。
55 2
|
2月前
|
安全 搜索推荐 机器学习/深度学习
AI赋能教育:深度学习在个性化学习系统中的应用
【10月更文挑战第26天】在人工智能的推动下,个性化学习系统逐渐成为教育领域的重要趋势。深度学习作为AI的核心技术,在构建个性化学习系统中发挥关键作用。本文探讨了深度学习在个性化推荐系统、智能辅导系统和学习行为分析中的应用,并提供了代码示例,展示了如何使用Keras构建模型预测学生对课程的兴趣。尽管面临数据隐私和模型可解释性等挑战,深度学习仍有望为教育带来更个性化和高效的学习体验。
199 0
|
4月前
|
机器学习/深度学习 算法 自动驾驶
深度学习之分布式智能体学习
基于深度学习的分布式智能体学习是一种针对多智能体系统的机器学习方法,旨在通过多个智能体协作、分布式决策和学习来解决复杂任务。这种方法特别适用于具有大规模数据、分散计算资源、或需要智能体彼此交互的应用场景。
247 4
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习之生物启发的学习系统
基于深度学习的生物启发学习系统(Biologically Inspired Learning Systems)旨在借鉴生物大脑的结构和学习机制,设计出更高效、更灵活的人工智能系统。
45 0