【论文笔记 ICML-2019】Learning what and where to transfer

原文链接:https://arxiv.org/pdf/1905.05901.pdf

摘要

随着深度学习面临着现实中标注训练数据量不足的问题时,迁移学习受到了广泛的关注。其能在这种小数据体制下提高网络的性能。然而,当现有的迁移学习方法应用在异构的网络间时,为了获得所需的性能,必须管理详细的结构配置以及详尽的调优。为了解决这个问题,我们提出了一种新的基于元学习的迁移学习方法,它可以自动学习到什么需要迁移以及迁移到哪里。在给定源域网络和目标域网络的情况下,我们提出了一种学习元网络的有效训练方案,它决定了(a)源网络和目标网络之间的哪些层应该匹配以进行知识迁移,(b)哪些特征以及每个特征中应该迁移多少知识。我们在各种数据集和网络架构上根据最近的迁移学习方法验证了我们的元迁移方法,在这些数据集和网络架构上,我们的自动化方案显著优于以手工方式查找“要迁移什么和在哪里迁移”的先前baseline。

简介

在缺乏训练标注数据的时,DNN很难取得很好表现。迁移学习一定程度上可以缓解这个问题。迁移学习中使用最多的方法是微调。即在一个较大数据集(如Imagenet)上训练得到一个网络,将这些权重作为目标网络的初始化,在根据目标域的样例调整这些权重。
微调不是万能药。当源域和目标域语义上相差很大时,这样方法可能是无益的。
本文的方法可以在异构的源域和目标域网络间实现知识迁移。考虑到源域一些信息是对于目标域很重要的,还有一些信息是与目标域不相关的甚至是有害的。但是,在网络异构的情况下,现有的方法无法自动的判断要迁移哪些层,又应该迁移到哪里,往往需要严格的人为控制。这种方法不是最优的。

贡献

1.提出元学习网络,自动的决定源域哪些特征图(通道)对于目标域任务是相关的、有帮助的。该迁移源域中的哪一层,又要迁移到目标域哪一层去。

2.提出一套有效的元学习方案来学习元学习网络中参数,这套方案加速了内部处理的过程。主要创新之处是,仅通过最小化迁移目标函数(作为一个内部目标),来评估一个目标模型的单步适配性能(元目标函数)。

3.提出的方法在数据集上取得了很好的结果。特别是目标域缺乏标签或是从多个源域进行迁移,该方法比baseline有着大幅提升。

方法

本文方法旨在当没有人为设定哪些层需要迁移的情况下,通过元学习方法来学习到源域中哪些知识需要被迁移,又需要迁移到目标域的哪些层。

加权特征匹配

需要最小化下式L2损失
∣ ∣ r θ ( T θ n ( x ) ) − S m ( x ) ∣ ∣ 2 2 ||r_\theta(T_\theta^n(x))-S^m(x)||_2^2 rθ(Tθn(x))Sm(x)22
其中 r θ r_\theta rθ 表示一个参数集合是 θ \theta θ 的线性变换(如逐点的卷积操作,笔者的理解是将源域和目标域的对应层的深度匹配上)。 T θ n ( x ) ) T_\theta^n(x)) Tθn(x)) 表示目标域网络第 n n n 层的输出, S m ( x ) S^m(x) Sm(x) 表示源域网络第 m m m 层的输出。参数集合 θ \theta θ 包含线性变换 r θ r_\theta rθ 和非线性网络 T θ n ( x ) ) T_\theta^n(x)) Tθn(x)) 。其中前者只在训练后者中是必须的,而在测试中是不需要的。我们将这样的操作称为特征匹配。

接下来就要考虑源域中什么需要被迁移,又需要迁移到目标域的哪里去

什么需要迁移: 在迁移的过程中,我们需要更加关注那些有用的通道,而不是一股脑地全部迁移到目标域去。这里类似于注意力机制,给对目标域有用的通道更大的权重

L w f m m , n ( θ ∣ x , w m , n ) = 1 H W ∑ c w c m , n ∑ i , j ( r θ ( T θ n ( x ) ) c , i , j − S m ( x ) c , i , j ) 2 L_{wfm}^{m,n}(\theta|x,w^{m,n}) = \frac{1}{HW}\sum_cw_c^{m,n}\sum_{i,j}(r_\theta(T_\theta^n(x))_{c,i,j}-S^m(x)_{c,i,j})^2 Lwfmm,n(θx,wm,n)=HW1cwcm,ni,j(rθ(Tθn(x))c,i,jSm(x)c,i,j)2

H × W H\times W H×W S m ( x ) S^m(x) Sm(x) r θ ( T θ n ( x ) r_\theta(T_\theta^n(x) rθ(Tθn(x) 的特征图大小。 w c m , n w_c^{m,n} wcm,n 是每个通道c的权重,是非负的。 ∑ w c m , n = 1 \sum w_c^{m,n}=1 wcm,n=1

由于需要迁移的重要的通道往往随着不同的输入有着较大的变化,因此我们将通道的权重设为一个函数。将源域的特征作为输入,通过一个小的元学习网络的带的输出作为通道的权重。

需要迁移到哪里: 以前的方法以人为的方法决定哪些层配对会达到比较好的迁移效果。但是,当源域目标域网络异构时(比如从RenNet迁移到VGG),要找到最优解很困难,常常需要小心的调优。因此引入了一个可学习的参数 λ m , n \lambda^{m,n} λm,n 。针对每一个迁移层对(源域层m,和目标域层n构成一个迁移层对),学习出一个参数来表示需要迁移的量。同上一部分相似,我们设计了一个元学习网络来学习对于目标域模型重要的迁移层对。

在得到每个通道的权重w后,所有迁移层对的损失如下
L w f m ( θ ∣ x , ϕ ) = ∑ ( m , n ) ∈ C λ m , m L w f m m , n ( θ ∣ x , w m , n ) L_{wfm}(\theta|x,\phi) = \sum_{(m,n) \in C}\lambda^{m,m}L_{wfm}^{m,n}(\theta|x,w^{m,n}) Lwfm(θx,ϕ)=(m,n)Cλm,mLwfmm,n(θx,wm,n)

在解决了什么需要迁移和需要迁移到哪里的两大问题后,总的损失函数如下。

L t o t a l ( θ ∣ x , y , ϕ ) = L o r g ( θ ∣ x , y ) + β L w f m ( θ ∣ x , ϕ ) L_{total}(\theta|x,y,\phi)=L_{org}(\theta|x,y)+\beta L_{wfm}(\theta|x,\phi) Ltotal(θx,y,ϕ)=Lorg(θx,y)+βLwfm(θx,ϕ)

其中 L o r g L_{org} Lorg 为交叉熵损失。整体的网络结构如下图所示:
在这里插入图片描述

训练的方法

为了训练本文提出的方法,采用上下两层的训练方法。

1.更新 θ \theta θ 来最小化 L t o t a l ( θ ∣ x , y , ϕ ) L_{total}(\theta|x,y,\phi) Ltotal(θx,y,ϕ) ,重复T次。

2.更新 ϕ \phi ϕ 来最小化交叉熵损失 L o r g L_{org} Lorg

上述训练过程中。 L o r g L_{org} Lorg 作为一个元学习的目标函数来衡量 L t o t a l L_{total} Ltotal 学习到的目标模型的有效性。而 L t o t a l L_{total} Ltotal 只是在内循环中用来学习目标模型。

但是,仅仅通过正则化项 L w f m L_{wfm} Lwfm ,我们的元学习网络对于目标模型的学习影响很小。除非使用一个很大的内循环学习步数T(但由此带来新的问题,通过 L o r g L_{org} Lorg 的梯度更新 ϕ \phi ϕ 很困难)。由此提出了以下替代的训练方法:

1.更新 θ \theta θ 来最小化 L w f m ( θ ∣ x , ϕ ) L_{wfm}(\theta|x,\phi) Lwfm(θx,ϕ) ,重复T次。

2.更新 θ \theta θ 来最小化 L o r g ( θ ∣ x , y ) L_{org}(\theta|x,y) Lorg(θx,y) ,重复1次。

3.更新 ϕ \phi ϕ 来最小化交叉熵损失 L o r g L_{org} Lorg

第一步实现特征匹配,第二步更新目标模型参数实现目标域分类误差最小化,第三步更新元学习网络中参数使得目标模型更好。

整个算法流程如下图所示:
在这里插入图片描述

实验

针对不同分辨率的图像(32 × \times × 32,224 × \times × 224)进行不同的实验设置。

32 × \times × 32:从32层ResNet迁移到9层VGG

224 × \times × 224:从32层ResNet迁移到18层ResNet

实验根据迁移层数的不同分为:

1.single:源域最后一层迁移到有着相同特征图大小的目标域层
在这里插入图片描述
2.one-to-one:所有下采样前的层迁移到有着对应特征图大小的目标域层
在这里插入图片描述
3.all-to-all:下采样前每一层迁移到目标域所有的下采样前的层
在这里插入图片描述
实验结果表明本文方法较以往方法有着很大提升,其中all-to-all的结构可以达到最好的结果。

在目标域有一定标签的情况下,本文方法的分类精度也有着显著的提升。

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值