【论文解剖】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)。
文章于是提出了个假设:
每个域都存在簇。 两个域同类的簇会接近。具体方法是通过用附加分布替代真实分布(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有没有人能解释一下)。
作者还用了一张图来解释:
并不能说明啥。
然后就是具体的方法。
目标域损失
首先作者定义了目标域的预测概率P,这个概率是用f得到的 (the network predicts, after softmax operation)。然后定义一个辅助概率Q。优化的loss为:
第一项是让P对齐Q,第二项是对K(类别数)求和做负信息熵,其实就是为了避免Q变成one hot的概率分布。
定义Q为:
这个约束很多无监督聚类的文章都会用,其实就是个起了缩放作用的概率分布,让本来大的qi更大,小的变小。这样就能起到聚类的作用。
Q是固定的,也就是不参与反向传播,这时KL散度就退化为交叉熵。
上面的约束是针对f的输出,作者还对中间特征z进行约束,这大概就是前面提到的joint training吧。
定义一个戴帽子的概率分布:
这个是戴帽子的p是与类别中心的距离算出来的,就是一个t-distribution,就是聚类分类会用的的概率。
同样有:
*(4)的uk是怎么算出来的,我估计使用聚类,文章也没明说,只能看代码了。文章还提到uk是个可训练的参数,那优化(5)的时候就要参与反向传播了,这时候就可以随特征空间变化而变化了。但作者还提到在每个epoch前这个uk要重新初始化,聚类的文章比如IDEC是不用的,其实我之前做过类似的工作,这边的原因是z空间的特征变化太快了,如果uk靠loss来更新就不准确了,这个只有跑过实验的人才知道。
因此目标域样本的损失可以整合成:
源域损失
首先是个有监督的交叉熵,没啥好说的:
然后对z也做了相同的约束:
总的就是:
同时作者用到还给这两个loss,一般来说这种加权方式一般是加大那种迁移性较强的样本权重,用域判别器也行。这里作者是重新算了一个形心c,这个形心使用目标域样本zk算出来的,这倒也说得通。
采用一个余弦相似度。
经过我这一分析,框架应该很清晰了,不过有个疑问最终的分类器是啥,用f还是用u,还是哪个好选哪个。
实验
作者在Office-31,ImageCLEF-DA,Office-Home 这常见三件套做了实验,效果还是很不错的。结果就不放出来了,然后分析实验也是八股文套路吧,没啥可说的,有个疑问是ablation study那
(w/o structural source regularization)很好奇第一项怎么做的,一个是没有源域分类损失,效果一般直接不行,而且文章的P肯定是混乱的因为f没有训练过。
文章就看完了,结尾再多说两句吧,上两个月投了CVPR2020,当时用的也用的聚类方法,临近投的时候才发现有这一篇文章,咋一看loss怎么有点像,心拔拔凉,效果又跟我的差不多,当时时间也比较急写的不是很好,估计要当炮灰了。现在UDA的数据集都做烂了,SOTA搞得贼高,这次想了个新idea,效果比这篇好一点,数据集多做了两个,创新性感觉也还不错,希望能冲击ICCV成功吧。
北极网友阿伟
代码注释是一种道歉,为未选择更清晰的名称或更合理的参数而道歉,为代码无法维护而道歉,为不使用知名...
北极网友阿伟
代码注释是一种道歉,为未选择更清晰的名称或更合理的参数而道歉,为代码无法维护而道歉,为不使用知名...
宣传栏
【论文解剖】CVPR2020 Unsupervised domain adaptation via structurally regularized deep clustering
这篇文章是2020cvpr的文章,文章用到了聚类的方法来进行域适应,在常用数据集上效果是20年比较出众的。最近做的工作跟这个思路有相似的地方,来调研一下。
摘要
迁移学习解决的是源域和目标域分布不一致的问题。主流方法采用对齐不同域特征,这可能会破坏目标域内部结构。 文章为了解决这个问题,通过假设域的结构相似性来施加聚类约束来进行域适应。采用最小化网络的预测概率分布和附加分布的KL散度来进行共同网络训练 (joint network training)。
介绍
开头重申了一遍一般UDA的对齐特征的方法会破坏目标域的结构 (damaging the intrinsic structures of target data discrimination)。
文章于是提出了个假设:
每个域都存在簇。 两个域同类的簇会接近。具体方法是通过用附加分布替代真实分布(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有没有人能解释一下)。
作者还用了一张图来解释:
并不能说明啥。
然后就是具体的方法。
目标域损失
首先作者定义了目标域的预测概率P,这个概率是用f得到的 (the network predicts, after softmax operation)。然后定义一个辅助概率Q。优化的loss为:
第一项是让P对齐Q,第二项是对K(类别数)求和做负信息熵,其实就是为了避免Q变成one hot的概率分布。
定义Q为:
这个约束很多无监督聚类的文章都会用,其实就是个起了缩放作用的概率分布,让本来大的qi更大,小的变小。这样就能起到聚类的作用。
Q是固定的,也就是不参与反向传播,这时KL散度就退化为交叉熵。
上面的约束是针对f的输出,作者还对中间特征z进行约束,这大概就是前面提到的joint training吧。
定义一个戴帽子的概率分布:
这个是戴帽子的p是与类别中心的距离算出来的,就是一个t-distribution,就是聚类分类会用的的概率。
同样有:
*(4)的uk是怎么算出来的,我估计使用聚类,文章也没明说,只能看代码了。文章还提到uk是个可训练的参数,那优化(5)的时候就要参与反向传播了,这时候就可以随特征空间变化而变化了。但作者还提到在每个epoch前这个uk要重新初始化,聚类的文章比如IDEC是不用的,其实我之前做过类似的工作,这边的原因是z空间的特征变化太快了,如果uk靠loss来更新就不准确了,这个只有跑过实验的人才知道。
因此目标域样本的损失可以整合成:
源域损失
首先是个有监督的交叉熵,没啥好说的:
然后对z也做了相同的约束:
总的就是:
同时作者用到还给这两个loss,一般来说这种加权方式一般是加大那种迁移性较强的样本权重,用域判别器也行。这里作者是重新算了一个形心c,这个形心使用目标域样本zk算出来的,这倒也说得通。
采用一个余弦相似度。
经过我这一分析,框架应该很清晰了,不过有个疑问最终的分类器是啥,用f还是用u,还是哪个好选哪个。
实验
作者在Office-31,ImageCLEF-DA,Office-Home 这常见三件套做了实验,效果还是很不错的。结果就不放出来了,然后分析实验也是八股文套路吧,没啥可说的,有个疑问是ablation study那
(w/o structural source regularization)很好奇第一项怎么做的,一个是没有源域分类损失,效果一般直接不行,而且文章的P肯定是混乱的因为f没有训练过。
文章就看完了,结尾再多说两句吧,上两个月投了CVPR2020,当时用的也用的聚类方法,临近投的时候才发现有这一篇文章,咋一看loss怎么有点像,心拔拔凉,效果又跟我的差不多,当时时间也比较急写的不是很好,估计要当炮灰了。现在UDA的数据集都做烂了,SOTA搞得贼高,这次想了个新idea,效果比这篇好一点,数据集多做了两个,创新性感觉也还不错,希望能冲击ICCV成功吧。