Borrowing Treasures from the Wealthy: Deep Transfer Learning through SJFT

https://arxiv.org/abs/1702.08690
https://github.com/ZYYSzj/ Selective-Joint-Fine-tuning

摘要

  在有监督学习的过程中,深度神经网络需要大量的有标签的训练数据。然而,收集和标记如此多的数据在许多情况下可能是不可行的。在本文中,我们引入了一个深度迁移学习方案,称为选择性联合微调,以提高训练数据不足的情况下深度学习任务的性能。在该方案中,一个训练数据不足的目标学习任务与另一个训练数据充足的源学习任务同时进行。然而,源学习任务并不使用所有现有的训练数据。我们的核心思想是识别和使用与目标学习任务相似的原始源学习任务中低层特征的训练图像子集,并共同微调两个任务的共享卷积层。具体来说,我们从两个任务的训练图像上的线性或非线性滤波器库响应计算描述符,并使用这些描述符为源学习任务搜索所需的训练样本子集。
  实验表明,在深度学习训练数据不足的情况下,我们的深度迁移学习方案在多个视觉分类任务上取得了最先进的性能。这些任务包括 Caltech 256,MIT Indoor 67,以及精细分类问题((Oxford Flowers 102 和 Stanford Dogs 120)。与无源域微调相比,该方法使用单一模型的分类精度提高了2% - 10%。

1 引言

  卷积神经网络(CNNs)的规模越来越大,在分类和识别任务上的表现也越来越好[22,18,40,12,46]。回顾计算机视觉中深度学习的成功,我们发现在深度神经网络的训练中,大量的训练或预训练数据是必不可少的。大规模数据集,如ImageNet ILSVRC 数据集[36], Places [50]和 MS COCO[23],导致了视觉识别的一系列突破,包括图像分类[24],目标检测[10],语义分割[25]。许多其他相关的视觉任务也从这些突破中受益。
  然而,当使用深度卷积神经网络来执行没有足够训练数据的视觉任务时,研究人员面临着一个困境。在数据不足的情况下训练一个深度网络,甚至可能会导致性能低下,与传统分类器相比,手工制作的特征。细粒度的分类问题,如Oxford Flowers 102[29]和Stanford Dogs 120[19]就是这样的例子。这些数据集中的训练样本数量远远不能满足大规模深度神经网络的训练,网络很快就会过度拟合。
  解决深度卷积神经网络在训练数据不足的情况下对学习任务的过拟合问题是[39]的一大挑战。将从一个任务中学习到的知识转移到其他相关任务中已被证明是很有帮助的。在深度学习中,微调在ImageNet或Places数据集上预先训练好的深度网络是学习特定任务深度特征的常见策略。这种策略被认为是一种用于深度学习的简单迁移学习技术。但是,由于可学习参数个数与训练样本个数的比值不变,在迭代次数相对较少的情况下,需要终止微调;否则,仍然会发生过拟合。
  在本文中,我们试图解决训练深度神经网络来完成学习任务训练数据不足的问题。我们采用源-目标联合训练方法[45]微调深度神经网络。没有足够训练数据的原始学习任务称为目标学习任务 T t T_t Tt。为了提高目标学习任务的性能,将目标学习任务与另一个训练数据丰富的学习任务组合在一起。后者称为源学习任务 T s T_s Ts。假设源学习任务有一个大规模的训练集 D s D_s Ds,而目标学习任务有一个小规模的训练集 D t D_t Dt。由于目标学习任务可能是一个专门的任务,我们设想图像信号在它的数据集中具有某些独特的低层次特征(例如,在Stanford Dogs 120[19]中的皮毛纹理),而在深度网络的卷积层中学习的内核需要掌握这些特征,才能生成具有高度辨别性的特征。因此,提供足够的具有相似低水平特征的训练图像成为源学习任务的最重要任务。我们的核心思想是,从 D s D_s Ds训练图像子集中找出一个与 D t D_t Dt相似的低层次特征,然后共同微调源和目标学习任务的卷积层共享集。仅使用选定的训练图像对源学习任务进行微调。因此,这个过程被称为选择性的联合微调。这样做的原因是 D t D_t Dt图像的独特的低层次特征可能会 D s D_s Ds被用于源学习任务的训练样本所淹没。
  我们如何从 D s D_s Ds中选择与 D t D_t Dt具有相似低层特征的图像?由于深卷积神经网络(CNN)中伴随非线性激活的核实际上是非线性空间滤波器,为了找到足够的数据来训练高质量的核,我们使用现有线性或非线性滤波器组的响应来定义低级特征的相似性。Gabor滤波器[28]构成线性滤波器组的一个例子,而来自预训练CNN的某些层的完整核集构成非线性滤波器组的一个例子。我们使用滤波器组响应的直方图作为图像描述符来搜索具有类似低级特征的图像。
  根据图像的低级特征选择图像的动机有两个方面。首先,利用深网络低卷积层的核提取低层特征。这些较低的卷积层形成了整个网络的基础,并且由这些层提取的特征的质量决定了在更深网络的更高层次上的特征质量。足够多的低层特征相似的训练图像可以增强这些层中的核。其次,具有相似低级特征的图像可能具有非常不同的高级语义内容。因此,与使用高级语义内容相比,使用低级特征搜索图像具有较少的限制,并且可以返回更多的训练图像。
  上述源-目标选择性联合微调方案有望在两种不同的方式上有利于目标学习任务。首先,由于两个学习任务之间共享卷积层,为源学习任务选择的训练样本可防止深层网络快速过拟合。其次,由于源学习任务的训练样本与目标学习任务的训练样本具有相似的低层特征,可以对其共享卷积层中的核进行更有力的训练,以生成目标学习任务的高分辨特征。
  提出的源目标选择性联合微调方案易于实现。实验结果表明,在多个视觉分类任务中,训练样本比最近的深度学习架构要求的要少得多,表现出最先进的性能。这些视觉分类任务包括
Stanford Dogs120[19]和Oxford Flowers102[29]的细粒度分类、Caltech 256[11]的图像分类和
MIT Indoor 67[33]的场景分类。
  综上所述,本文有以下贡献:

  • 我们引入了一种新的深度迁移学习方案,称为选择性联合微调,用于在训练数据不足的情况下提高深度学习任务的表现。在广泛采用的预训练深度神经网络微调策略中,这是重要的一步。
  • 我们开发了一个新的流程来实施这种深度迁移学习方案。具体来说,我们从两个任务的训练图像上的线性或非线性滤波器库响应计算描述符,并使用这些描述符为源学习任务搜索所需的训练样本子集。
  • 实验表明,在深度学习训练数据不足的情况下,我们的深度迁移学习方案在多个视觉分类任务上取得了最先进的性能。

2 相关工作

多任务学习。 多任务学习(Multi-task learning,MTL)获得相关任务的共享特征表示或分类器[3]。与独立学习单个任务相比,用MTL学习的特征和分类器往往具有更好的泛化能力。在深度学习中,faster RCNN[34]使用共享卷积层联合学习对象位置和标签,但这两个任务的损失函数不同。在[7]中,同样的多尺度卷积结构被用来预测深度、表面法线和语义标签。这表明卷积神经网络可以很容易地适应不同的任务。虽然先前的工作[8,34]试图找到一个共享的特征空间,有利于多个学习任务,但本文提出的联合训练方案侧重于学习一个共享的特征空间,它只提高目标学习任务的性能。
特征提取和微调。 现成的CNN功能[37,5]已经被证明在各种计算机视觉问题上非常强大。在ImageNet[36]或Places[50]上训练卷积神经网络已经成为其他视觉问题的标准实践。然而,在预先训练的模型中学习的特征并不是为目标学习任务量身定做的。微调预先训练的模型[10]已成为学习特定任务特性的常用方法。文献[48]研究了不同卷积层在CNNs中的传输能力。但是,对于没有足够训练数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
When the user of the software specifies action 2, your program must add a new user to the library. To add a new user, your program needs to ask the user three things: the role of user (an integer read using readPosInt: the integer 1 represents lender, the integer 2 represents borrower, any other integer must result in an error message "Unknown user role!" being printed and the software going immediately back to the main menu), the name of the user (a string read using readLine), and the initial number of books that the user lends (for a lender) or borrows (for a borrower). You program must then create the correct user, add it to the library, and print an information message. The program then goes back to the menu. For example (where 2, 3, 2, 1, Anna, 5, 2, 2, Bob, and 10 are inputs from the user): Type an action (total:1 add:2 get:3 more:4 less:5 quit:6): 2 Type the user role (lender:1 borrower:2): 3 Unknown user role! Type an action (total:1 add:2 get:3 more:4 less:5 quit:6): 2 Type the user role (lender:1 borrower:2): 1 Enter the name of the user: Anna Enter the initial number of borrowed books: 5 Lender "Anna" lending 5 book(s) has been added. Type an action (total:1 add:2 get:3 more:4 less:5 quit:6): 2 Type the user role (lender:1 borrower:2): 2 Enter the name of the user: Bob Enter the initial number of borrowed books: 10 Borrower "Bob" borrowing 10 book(s) has been added. Type an action (total:1 add:2 get:3 more:4 less:5 quit:6): Note that the readPosInt method prevents the initial number of books from being negative, so the constructor for the Borrower class will never throw a NotALenderException when you create a borrower object. Nevertheless the code of the main method of your CLI class must handle this exception by printing the error message "BUG! This must never happen!" and immediately terminating the program using System.exit(1);
05-24

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值