Unsupervised Domain Adaptation with Residual Transfer Networks(2017)
introduction
- 作者认为,domain adaption(域适应)方法旨在通过学习domain-invariant feature(域不变特征)来桥接source domain和target domain,从而能够在target domain没有标签的情况下,利用source domain所学到的分类器对target domain进行预测。
- 现在已经可以将domain adaption嵌入到deep feature学习的过程(该过程希望学得domain-invariant feature)当中了。
- 先前的deep domain adaption(深度域适应)方法假定source domain上的分类器可以被直接通过学习得到的domain-invariant feature转换到target domain上来,但是作者认为这个假设在实际中太过于严格,因为检查source domain和target domain上的分类器是否可以共享通常是不可行的。
- 因此,作者在更加一般的的情况下对domain adaption进行研究,其中,source classifier(source domain上的分类器)和target classifier(target domain上的分类器)之间的差异是一个小的perturbation function(扰动函数)。
- 本文的目的是通过将分类器和特征的adaptation过程嵌入到一个统一的深层网络架构中,从有标记的source domain和未标记的target domain中学习得到adaptive classifiers(自适应分类器)和transferable feature(可转移特征)。
- 作者从2015年的deep resudual learning中得到启发(可以去这篇博客看一下),并提出了一个叫做Residual Transfer Network(RTN)的新的框架,并假设source classifier和target classifier在一个很小的resdual function(残差函数,就是博客中的F(x))。
- 作者通过将几层网络插入到深层网络当中来实现classifier adaptation(分类器适应),通过参考target classifier(?为什么参考它)来明确的学习resdual function。
- 作者通过计算神经网络中几个层的feature的张量积,并且将它们嵌入到reproducing kernel Hilbert spaces(再生核希尔伯特空间)当中来匹配feature的适应(adaptation)(就是后面提到的MMD)
Relative Work
近期的进展表明,深度网络所学习到的抽象特征只能减少域和域之间的差异,但是并不能够移除这种差异。
-
深度学习和域适应的结合:
- 在CNN中添加一个或者几个层,使这些层学习到的特征的分布相近
- 或者添加一个full-connected的子网络来建立一个domain discriminator(域分类器),并且使网络所学习到的特征可以使domain discriminator混淆。
- 但是以上这些方法都建立在“source classifier可以通过网络学习得到的domain-invariant feature 来直接地转换得到target classifier”这样一个假设当中。
- 但是这个假设在source classifier和target classifier不能共享参数的时候不成立。当理想联合假设的组合误差(?the combined error of the ideal joint hypothesis)很大的时候,并不存在一个单一的分类器可以同时在source domain和target domain上有很好的表现。
- residual network 相关:
- 这个网络是一个拥有上百层的非常深的网络,学习了一个被称为
ΔF(X) 的residual function(残差函数),最终结果是这个残差函数加上输入本身( identity mappings)的relu 。
- 这个网络是一个拥有上百层的非常深的网络,学习了一个被称为
- 作者希望在一个深度网络框架当中,通过residual function
ΔF(X) 来桥接source classifierfS(x) 和target classifierfT(x) - 作者将target classifier的输出直接给residual function作为输入,可以更有效率地获得source classifier和target classifier之间的联系。
Residual Transfer Networks
-
source domain:
-
DS={(xSi,ySi)}nSi=1 - 有
nS 个labeled data - 服从的分布为
p - 希望学习到的分类器为
y=fS(x)
-
-
target domain:
-
DT={xTj}nTj=1 - 有
nT 个unlabeled data - 服从的分布为
q ,其中q≠p - 希望学习到的分类器为
y=fT(x)
-
因为分布
p(x,y)≠q(x,y) ,且分类器fS(x)≠fT(x) ,这些mismatches(不相匹配)可以通过共通的adaptation来修复,使得domain adaptation更加有效。-
分类器:source domain上的empirical error(经验误差):
minfS1nS∑i=1nSL(fS(XSi),ySi))
其中L(,) 表示交叉熵损失函数。 因为卷积层能够学习到一个可以在两个域中转换的普适的特征,所以作者决定对预先训练的卷积层所学到的特征fine-tune(微调)而不是直接adapt。
Feature Adaptation
网络架构:
首先,CNNs之后加一个bottleneck layer(我查了一下,这个瓶颈层是为了减少feature的维度而被创建出来的。。。)
fcb 来减少feature的维度。-
之后使用multiple layers
L={fbc,fcc} 的feature,在source domain上微调(fine-tune) CNNs。目的是为了让source domain和target domain更加相似。- 为了使mutiple layers
L 的adaptation进行得更加有效,作者建议使用mutiple layersL 之间的张量积来做一个 lossless multi-layer feature fusion(无损多层特征融合)。 - 定义:
zSi=Δ⨂l∈Lxsli - 定义:
zTi=Δ⨂l∈Lxtli - 我查了一下,这里的张量积大概是矩阵的张量积也就是克罗内克积,百度百科一下就可以知道。
- 之后,作者之后利用最小化source domain和target domain之间Maximum Mean Discrepancy(MMD,最大平均差异)来做adaptation(域适应)(使用了kernel trick):
minfS,fTDL(DS,DT)=∑i=1ns∑j=1nsk(zsi,zsj)n2s+∑i=1nt∑j=1ntk(zti,ztj)n2t−2∑i=1ns∑j=1ntk(zsi,ztj)nsnt
其中,特征核函数k(z,z′)=e−∥vec(z)−vec(z′)∥2/b 是一个带宽为b的高斯核函数
- 为了使mutiple layers
- 与DAN不同,作者使用了多层特征的MMD惩罚。作者认为他的优势这样可以获取到multilayer之间充分的互动(?can capture full interactions across multilayer features)并且能够更好地选择模型
Classifier Adaptation
- 因为feature adaptation并不能够消除分类模型中的mismatch(不匹配),所以作者认为还需要学习分类器的adaptation来使得domain adaptation更加有效。
- 作者假设classifier
fs(x) 和ft(x) 之间仅仅相差一个微小的perturbation function(扰动函数)Δf(x) - 其中
ft(x)=fs(x)+Δf(x) -
Δf(x) 是一个仅由input featurex 决定的函数。 - 然而,这些方法需要target domain上的标签来学习这个perturbation function,无法在这个非监督域适应任务中使用。所以换成学习
fs(x)=ft(x)+Δf(x) 这个函数。 - 作者假设在target domain和source domain被合理地连接在一起后,perturbation function
Δf(x) 可以从source domain中标记的数据和target domain中不被标记的数据中共同学习得到。 - 采取学习residual function
ΔF(x)=ΔF(x)−x (最终希望学习的函数是ΔF(x)+F(x) )而不知直接学习的原因是,二者学习的难度是不一样的。 作者认为虽然identity mappings(就是之前提到的x直接作为学习到的函数本身)不太可能是最优的,但是依据这个identity mappings找到一个 perturbation function远比直接学习一个全新的函数要容易的多。residual learning(残差学习?)是成功训练一个非常深的网络的关键所在。
作者基于上述的观察,在网络中加入了residual block(如网络架构图最右侧所示)
- 推导运算:
-
fS(x) 为source classifier中fcc 层的输出,fT(x) 为target classifier中fcc 层的输出 - 但是
fS(x) (大写)被定义为:fS(x)=fT(x)+Δf(x) 因为target domain没有标签所以如果选择fT(x) 会导致back propagation无法工作 - 最终的输出都经过softmax **处理:
fs(x)=Δσ(fS(x)) ,ft(x)=Δσ(fT(x)) ,其中σ() 为softmax,为了保证最终的输出为“可能性”。 - Residual layer
fc1−fc2 作为全连接层,并保证ft(x) 不会偏离fs(x) 太远。 - 但是即便如此,仍然不能够保证
ft(x) 能够很好的切合target domain,因此作者利用entropy minimization principle(熵最小化原理)来优化参数,通过最小化各个类的条件分布ftj(xti)=p(ytj=j|xti;ft) 的熵来鼓励target domain上类之间的low-density separation(低密度分离?我的理解是输出更加趋向一个one-hot vector,因为one-hot vector的熵是最低的)minft1nt∑i=1ntH(ft(xti))
这就是entropy penalty(熵惩罚)。其中条件信息熵H(ft(xti))=−∑cj=1ftj(xtj)log(ftj(xtj)) ,c 为类(label)的数目,j 就是label,ftj(xtj)=p(ytj=j|xti;ft) 为给定数据时标签是j 的概率,也就是类的后验概率。不了解信息熵可以看一看这里:信息熵,条件熵。
-
Residual Transfer Network
- 分类器
fS 最终的学习公式(整合):fS=minft+Δf1ns∑i=1nsL(fs(xsi),ysi)+γnt∑i=1ntH(ft(xti))+λDL(Ds,Dt)
其中,λ 和γ 是一对tradeoff parameters,用来前面权衡张量MMD惩罚和entropy惩罚的比重。
Experiments
- 作者提到说他使用的是动量为0.9的mini-batch SGD,其中在RevGrad(Reverse Gradient)实现的学习率退火策略:
- 因为计算成本太高,不去搜索合适的学习率
- 随着SGD的进行网络的学习率会进行自适应调整:
ηp=η0(1+αp)β ,其中p 随着训练的进行,线性地从0变为1,α=10,β=0.75,η=0.01 。 - 性能: