【论文解剖】CVPR2020 SDRC

【论文解剖】CVPR2020 Unsupervised domain adaptation via structurally regularized deep clustering

这篇文章是2020cvpr的文章,文章用到了聚类的方法来进行域适应,在常用数据集上效果是20年比较出众的。最近做的工作跟这个思路有相似的地方,来调研一下。

摘要

迁移学习解决的是源域和目标域分布不一致的问题。主流方法采用对齐不同域特征,这可能会破坏目标域内部结构。 文章为了解决这个问题,通过假设域的结构相似性来施加聚类约束来进行域适应。采用最小化网络的预测概率分布和附加分布的KL散度来进行共同网络训练 (joint network training)。

介绍

开头重申了一遍一般UDA的对齐特征的方法会破坏目标域的结构 (damaging the intrinsic structures of target data discrimination)。

文章于是提出了个假设:

  1. 每个域都存在簇。
  2. 两个域同类的簇会接近。

具体方法是通过用附加分布替代真实分布(onehot),能实现结构源域规整化?拗口得很。此外通过在网络中间的特征施加聚类约束增强目标域区分性,用软选择不离散的源域样本增强结构约束。

这段和摘要一样读完其实还是不知道文章用了啥方法,不过我们继续看。

相关工作

一般方法用的是域特征对齐用一个距离比如MMD或者对抗的方式。

作者提到很少UDA工作是在目标域聚类。有用到聚类也只是作为附加的loss (incremental technique)。

方法

这里值得一提的是,作者用了第三节来讨论文章的动机。具体题目是 (The strategies of transferring versus uncovering the intrinsic target discrimination) 迁移和目标域固有区分性的关系。

首先是对符号的定义,s是源域,t是目标域,x是样本,z是中间特征,y是标签,K是类别数。ϕ是特征提取器,f是分类器。关系是z = ϕ(x), y = f(z)。

文章提到对齐特征分布的方法会大大减弱目标域区分性,分类器对这种区分性不强的目标域特征不太有效,因为分类器会远远偏离使用ground truth label 训练的分类器 Oracle target classifier (**为啥叫Oracle有没有人能解释一下)。

作者还用了一张图来解释:
图1.png
并不能说明啥。

然后就是具体的方法。

目标域损失

首先作者定义了目标域的预测概率P,这个概率是用f得到的 (the network predicts, after softmax operation)。然后定义一个辅助概率Q。优化的loss为:
图片.png

第一项是让P对齐Q,第二项是对K(类别数)求和做负信息熵,其实就是为了避免Q变成one hot的概率分布。

定义Q为:
图片.png
这个约束很多无监督聚类的文章都会用,其实就是个起了缩放作用的概率分布,让本来大的qi更大,小的变小。这样就能起到聚类的作用。
Q是固定的,也就是不参与反向传播,这时KL散度就退化为交叉熵。

上面的约束是针对f的输出,作者还对中间特征z进行约束,这大概就是前面提到的joint training吧。

定义一个戴帽子的概率分布:
图片.png

这个是戴帽子的p是与类别中心的距离算出来的,就是一个t-distribution,就是聚类分类会用的的概率。

同样有:
图片.png

(4)的uk是怎么算出来的,我估计使用聚类,文章也没明说,只能看代码了。文章还提到uk是个可训练的参数,那优化(5)的时候就要参与反向传播了,这时候就可以随特征空间变化而变化了。但作者还提到在每个epoch前这个uk要重新初始化,聚类的文章比如IDEC是不用的,其实我之前做过类似的工作,这边的原因是z空间的特征变化太快了,如果uk靠loss来更新就不准确了,这个只有跑过实验的人才知道。

因此目标域样本的损失可以整合成:
图片.png

源域损失

首先是个有监督的交叉熵,没啥好说的:
图片.png

然后对z也做了相同的约束:
图片.png

总的就是:
图片.png

同时作者还给这两个loss加权,一般来说这种加权方式一般是加大那种迁移性较强的样本权重,用域判别器也行。这里作者是重新算了一个形心c,这个形心使用目标域样本zk算出来的,这倒也说得通。

图片.png
采用一个余弦相似度。

经过我这一分析,框架应该很清晰了,不过有个疑问最终的分类器是啥,用f还是用u,还是哪个好选哪个。

实验

作者在Office-31,ImageCLEF-DA,Office-Home 这常见三件套做了实验,效果还是很不错的。结果就不放出来了,然后分析实验也是八股文套路吧,没啥可说的,有个疑问是ablation study那图片.png

(w/o structural source regularization)很好奇第一项怎么做的,一个是没有源域分类损失,效果一般直接不行,而且文章的P肯定是混乱的因为f没有训练过。

文章就看完了,结尾再多说两句吧,上两个月投了CVPR2020,当时用的也用的聚类方法,临近投的时候才发现有这一篇文章,咋一看loss怎么有点像,心拔拔凉,效果又跟我的差不多,当时时间也比较急写的不是很好,估计要当炮灰了。现在UDA的数据集都做烂了,SOTA搞得贼高,这次想了个新idea,效果比这篇好一点,数据集多做了两个,创新性感觉也还不错,希望能冲击ICCV成功吧。

你可能感兴趣的:(神经网络机器学习论文)