首页 > 人工智能 > 深度学习 > 迁移学习:该做的和不该做的事
https://www.toutiao.com/a6698288581208703501/
迁移学习的好处不用多说,那么,什么时候用,什么时候不该用,为什么有用?看看就知道。
如果你最近工作在深度学习领域,特别是图像识别,你可能看到过大量的博客,承诺教会你如何建立一个世界级的图像分类器,只需在一个GPU上用十几行或更少的代码跑上几分钟。令人震惊的不是这个承诺,而是在这些教程中,大多数最终都实现了。这怎么可能呢?对于那些接受过“传统”机器学习技术培训的人来说,为一个数据集开发的模型可以简单地应用于另一个数据集的想法听起来很荒谬。
答案当然是“迁移学习”,这是深度神经网络最吸引人的特性之一。在这篇文章中,我们将首先看看什么是迁移学习,什么时候可行,什么时候不可行,为什么在某些情况下行不通,最后总结一些关于迁移学习的最佳实践的建议。
可以将迁移学习想象成一个容器船,它从一个模型中获取权重,并将其部署到你的用例中。
Pan and Yang(2010)对迁移学习给出了一个优雅的数学定义(见第2.2小节)。然而,对于我们的目的,一个简单得多的定义就足够了:迁移学习 使用针对特定任务 (有时称为源任务)的所学知识 来解决另一个任务 (目标任务)。当然,假设源任务和目标任务非常相似。这种假设是转移学习的核心。因此,我们必须首先理解为什么转移学习是有效的。
你可能还记得,典型的当代神经网络—例如,多层卷积深度神经网络(cDNN)—由多层神经元组成,每层神经元根据训练结果计算出的网络权重和偏差将结果前馈。这一结构是根据人类大脑中与之相当相似的特定过程—Ventral Visual Stream——而设计的。
Ventral Visual Stream的轮廓。视神经(深紫色)将来自视网膜两侧的信息传输到视交叉(OX),视交叉的位置取决于它们来自视野的左侧还是右侧。外侧膝状核(LGN)分离输入类型。从LGN每边的投影进入对应的主视觉区域(V1)。 从那里 ,它穿越了Ventral Visual Stream,增加了复杂性和语义。
ventral stream开始于初级视觉皮质或V1,枕叶的一部分。V1从外侧膝状体核接收视觉信息,丘脑的一部分将光信息发送到枕叶而细分成两种类型的信息——这样的输入对于决定你看的是什么更有用而且对于你确定东西在哪里也更有用。它们都位于初级视觉皮层,但ventral visual stream由LGN的单细胞层的“是什么”信息提供:有关物体的缓慢但持续的详细信息,来自视网膜神经节细胞P细胞。
然后,P细胞的输出(有时称为投影)经过ventral visual stream(从V1到V2, V4,最终到颞下叶)时被处理。通过 激发实验 发现,V1中的细胞对相当简单的图案(主要是边缘、它们的方向、颜色和空间频率)有反应,而V2对更复杂的概念有反应,包括某些格式塔现象,如“主观轮廓”。最终,逐渐进入下颞叶,神经元对越来越复杂的模式做出反应。
CaffeNet的猫识别器,反向工程由DeconvNet实现。注意,随着层数的增加,语义的增加,从卷积层(CL) 1中的简单几何图形到上下文中的几何图形(CL 2)、复合几何图形(CL 3和4)到对物体类别有语义意义的特定滤波器(CL 5)。
我们看到这在深层神经网络中的重复。Zeiler-Fergus反卷积网络允许我们看到对于特定的层会对哪些模式有反应。也就是说,这些结构会引起这些特定的神经元的兴奋。随着层数的增加,形状的复杂性也随之增加。当我们在第一层看到简单的边缘甚至是颜色块时,后面的层会显示更复杂的图案,最后一层的激活通常可以被识别为目标类。它们也变得越来越语义化——线条的组合被加权在一起,就像一个能识别三角形的过滤器,三角形过滤器的组合能识别两只耳朵,再加上其它过滤器,它开始识别狗的脸与猫的脸是不同的。
迁移学习的概念是与生俱来的,因为神经网络是分层自包含的——也就是说,你可以在一个特定的层之后移除所有的层,将一个全连接的层与不同数量的神经元和随机权重连接起来,得到一个可以工作神经网络。这是迁移学习的基础。 在转移学习中,我们使用训练有素、构造良好的网络在大集合上所学到的知识,并将它们应用于在较小的 (通常是几个数量级!) 数据集 上提高检测器的性能。
从上面看来,一些关于迁移学习的作用(和负作用)的事实浮出水面。迁移学习的最大好处体现在目标数据集相对较小的时候。在许多这样的情况下,模型可能容易过拟合,而数据增强可能并不总是能解决整个问题。因此,迁移学习最适用于源任务的模型在比目标任务获得的训练集大得多的训练集上训练的情况。这可能是因为对一个特定实例的事情很难遇得到,或者标注过的样本很难获得(例如在诊断放射学,对图片做标记往往很难,尤其是罕见的条件)。
如果存在过拟合的风险,那么每个任务的数据量大致相同的模型 仍然可能受益于迁移学习,因为目标任务通常是高度领域特定的 。事实上,在训练大型特定领域的dCNN时可能会适得其反,因为它可能会过度适合特定领域。因此,有时建议在源任务和目标任务的训练集大小相同的情况下使用迁移学习。
在实践中,在计算机视觉中,使用标准网络是非常普遍的,它训练了大量的图像数据集——比如ImageNet的超过1000个类别的120万幅图像——作为起点,甚至可以完成特定领域的任务,比如评估胸片。许多机器学习框架,特别是像Caffe、fastai和keras这样的高级软件包,都自带了model zoo,可以方便地访问预先训练好的dCNN。因此,只需要删除最顶层,添加一个或多个新层并对模型进行再训练(finetuen)。新模型将不用再为了构建像ResNet50,NASNet或Inceptionv3这样的模型而进行的数周艰苦训练了。总的来说,如果使用得当, 迁移学习将给你带来三重好处:更高的起始精度、更快的收敛速度和更高的逼近精度 (训练收敛的精度水平)。最近,一些很有前途的网站出现了,它们列出了各种各样的预培训模型——我最喜欢的是ModelDepot和ModelZoo,后者有一个庞大的数据库,可以通过框架和解决方案进行过滤,包括许多预先训练的GANs。
英文原文:https://medium.com/starschema-blog/transfer-learning-the-dos-and-donts-165729d666253
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29829936/viewspace-2646819/ ,如需转载,请注明出处,否则将追究法律责任。