笔记:Beyond sharing weights for deep domain adaptation

Based on deep learning, instead of sharing weights across source and target domains, this work proposed a two-stream architecture where different streams operate on different domains, with an additional loss function to imply the relationships across domains.
与以往在不同域上共享权重的方式不同,这篇文章提出在不同域上使用不同的权重系数,一个用于源域,一个用于目标域,同时提出一种方式来保持这两个域上的网络系数的相关性。
摘要:不同域上的数据往往有不同的特点,因此它们特征提取往往需要不同的参数。本文基于这种考虑,在domain adaptation的应用上,提出一种两个分流的网络结构,一个用于源域,一个用于特征域,区别于以往在不同域上共享权重(share weights)的结构,这对应了在不同域上采用不同但相关的参数结构。整个结构在文中用下图表示:
architecture
其中上面的一列对应源域上的网络,下面的列对应目标域上的网络结构。为了保证两者之间的相关性,添加了layer-to-layer的损失函数 。
在预训练阶段,首先用源域上的数据对源域的网络结构进行训练,然后用训练的结构对网络的两个分流进行初始化;在训练阶段,由于网络每条分支上有不同的损失,传回来的梯度也就不同,从而对网络每层的权重进行差异化的更新,同时目标函数中layerwise的损失保证了两个结构中权重不会有太大区别。下面是整个网络的损失函数构成:
loss
其中的L(s),L(t)分别对应源域和目标域上标准的分类损失,如果是无监督的domain adaptation,L(t)为0;L(w)衡量网络中两个分流中参数差异带来的损失。其中r(w)是本文提出衡量网络权重不同带来损失的一种方法,下面会具体介绍。基于在分类器之前的一层学到domain invariant的特征表示,文章基于MMD添加了损失函数L(MMD),这个损失用于最小化两个分布之间的距离。需要注意的地方是,对于第一个分类损失L(s,t)以及第三个分布损失L(MMD),第一个损失是基于分类器的结果,第三个是作用在网络最后的特征。对于第二个两个分流每层之间权重的损失,它的位置对不同数据集是不定的,也就是在某些层两个分流实际还是之前的方法一样使用shared权重,这种损失只存在不share权重的层之间。文章作者通过交叉验证的方式确定第二个损失作用在哪些层。下面从不同损失的角度来介绍本文的内容。
这篇文章与之前方法最大的不同就是它的假设是不同域上,网络的权重不能share,但是related。这种关系本文通过设计下面的三个损失来表示:
1. L(s,t):它是一个标准的分类器损失形式,对于无监督的情况,这个损失由源域上的标签信息决定,就是L(s);
2. L(w):衡量两个分流上每层权重差异所带来的损失:由于本文的框架基于这样的假设:两个分流上每层权重是不同的,但是它们也是相关的。所以这个损失应该一方面可以对两个矩阵(对应层上的权重)的细微差别insensitive,另一方面也能较好的对大的差异进行约束。矩阵之间常用的正则化项是L2 norm,但这种正则项对于较小的差异也很敏感。于是本文提出在L2 normal上进行一个指数变换,它比岭回归而言对小的损失更加平滑。为了很好的刻画两个分流的不同,基于指数变化,本文进一步引入一个线性变化,线性变化的参数通过训练阶段学习获得。最终设计的正则项如下:
weightloss
值得一提的是文章还试过用复杂的变换来替换这里的线性变换,但是效果相比于简单的线性变换并没有提高。同时对两个参数损失的方案进行了对比:一个采用标准的矩阵L2范数定义损失;另一个用上面的r(w)定义,得到的对比结果如下:
compare
3. L(MMD):由于本文是使用的shared classifier结构,需要保证最后两个网络上特征具有domain invariant的特点,作者在分类器的特征分布前加上了基于MMD的损失来衡量连个特征分布的区别。
训练阶段,首先用源域上的数据对标准的分类网络(one stream)进行预训练,用得到的参数对两个分流进行初始化,然后反向传播根据上面的代价函数进行网络参数调整。由于针对每个数据集的网络结构是不同的,也就是shared层是不一样的。因此需要交叉验证来选择网络结构。
文章最后给出了在数据集office和mnist-usps上的最优网络结构(office是基于alexnet,mnist-usps是4层的网络结构),分别如下:
stra
strb
可以看出,本文提出的第二种损失对于不同数据集的效果是不一样的,一般而言,对于源域和目标域区别比较大的时候,这种损失能取得较好的效果。
分析:
1) 文章通过two-stream CNN结构来解决domain adaptation问题,与之前的方法相比,它在不同域上使用了不同的网络参数,然后通过L(w)来保证它们之间的关系。
2) 从网络结构看,基于不变特征的损失项应该和domain classifier的作用相同,而对源域和目标域使用not shared but related参数和之前residual net的结构比较类似。它应该对应一个deep residual net版本。这里面的模型参数基于一个线性变换来计算,这个应该与域之间的关系有联系。
3) 本文方法需要通过交叉验证来确定在two stream中哪些层的参数是shared,哪些层的需要使用not shared but related参数。在使用交叉验证的方法选择网络参数时比较麻烦。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页