(CVPR2020)Model Adaptation: Unsupervised Domain Adaptation without Source Data总结

Model Adaptation: Unsupervised Domain Adaptation without Source Data

本文提出一个新的问题,没有源域数据的无监督领域自适应问题。

说是没有源域数据,其实指的是在Domain Adaptation的过程中不使用源域数据。以本文为例,它仍然使用了使用源域数据预训练出的分类模型。

模型结构

在这里插入图片描述

本文主要结构包括三个部分,生成器 G G G,特征提取器和分类器 C C C以及判别器 D D D

特征提取器和分类器 C C C首先使用使用源域数据进行预训练得到一个原始模型。

生成器 G G G使用的是类似 C G A N CGAN CGAN的条件生成网络,输入包括分类类别 y y y和噪声向量 z z z。( C G A N CGAN CGAN中,使用的噪声向量是从一个均值为0,方差为1的高斯分布中随机采样得到)

判别器 D D D与传统的 G A N GAN GAN中的相似,用来判别特征向量来自哪个域

损失函数

针对判别器 D D D的损失函数与传统的相同,即需要判别器可以区分出真实数据和生成数据

m a x θ D ( E x t ∼ D t [ l o g   D ( x t ) ] + E y , z [ l o g ( 1 − D ( G ( y , z ) ) ) ] max_{\theta_D}(E_{x_t \sim D_t}[log \ D(x_t)]+E_{y,z}[log(1-D(G(y,z)))] maxθD(ExtDt[log D(xt)]+Ey,z[log(1D(G(y,z)))]

生成器 G G G与判别器 D D D形成对抗

l a d v ( G ) = E y , z [ l o g ( 1 − D ( G ( y , z ) ) ) ] l_{adv}(G)=E_{y,z}[log(1-D(G(y,z)))] ladv(G)=Ey,z[log(1D(G(y,z)))]

(论文中这里写的是 l a d v ( G ) = E y , z [ l o g   D ( 1 − G ( y , z ) ) ] l_{adv}(G)=E_{y,z}[log \ D(1-G(y,z))] ladv(G)=Ey,z[log D(1G(y,z))],我感觉他这里写错了)

除此以外,本文还有个用于约束G的损失函数,目标是让生成器可以更好地生成第 y y y类的样本。方式是让生成的样本通过 C C C之后得到的分类结果中,第 y y y类的得分更高,使用交叉熵约束(类似于交叉熵分类损失)

l s e m ( G ) = E y , z [ − y ⋅ l o g ( p θ C ( G ( y , z ) ) ) ] l_{sem}(G)=E_{y,z}[-y \cdot log(p_{\theta_C}(G(y,z)))] lsem(G)=Ey,z[ylog(pθC(G(y,z)))]

对于生成器 G G G,总的损失函数为

m i n θ G ( l a d v + λ s l s e m ) min_{\theta_G}(l_{adv}+\lambda_s l_{sem}) minθG(ladv+λslsem)

对于分类器 C C C,我们同样需要使用损失函数对其进行约束

首先是需要将G生成的样本正确分类,所以同样需要使用约束 G G G的损失函数 l s e m l_{sem} lsem进行约束x`

同时文章还使用了两个损失函数来约束 C C C

首先为了使 C C C的参数相对于使用源域数据训练出的模型参数不要过大,使用损失函数 l w R e g l_{wReg} lwReg约束。使用该损失函数的理由是我们训练仍然要在源域数据的基础上,否则很容易让模型不收敛,毕竟我们目标域的数据不含有标签。

l w R e g = ∣ ∣ θ C − θ C s ∣ ∣ 2 l_{wReg}=||\theta_C-\theta_{C_s}||^2 lwReg=θCθCs2

第二个约束为,我们希望分类器对于数据有轻微扰动的时候,分类结果变化不大(这个我觉得挺新颖的)

就是对于一个输入 x t x_t xt,我们给它加上一个小于某个阈值的扰动 r r r,变成 x t + r x_t+r xt+r,其分类结果应该类似,用损失函数约束为

E x t ∼ D t [ m a x ∣ ∣ r ∣ ∣ ≤ ε ( K L ( p θ C ( x t ) ∣ ∣ p θ C ( x t + r ) ) ) ] E_{x_t \sim D_t}[max_{||r|| \leq \varepsilon}(KL(p_{\theta_C}(x_t)||p_{\theta_C}(x_t+r)))] ExtDt[maxrε(KL(pθC(xt)pθC(xt+r)))]

本文使用的是KL散度来约束分类结果的相似度

这里我没有弄懂的点在于这个扰动应该如何去求解,让后面KL散度的值最大,先挖个坑。

之后同样使用了熵约束的方式,让分类器对于 x t x_t xt的分类结果尽量集中在某一个类上,即让分类的结果的某一个类别得分较高,而其他的都较低。(这个就是无标签数据分类的常用约束函数,与分类约束类似,只是因为目标域没有标签信息,无法使用交叉熵约束,只能使用这种约束)

E x t ∼ D t [ − p θ C ( x t ) l o g ( p θ C ( x t ) ) ] E_{x_t \sim D_t}[-p_{\theta_C}(x_t)log(p_{\theta_C}(x_t))] ExtDt[pθC(xt)log(pθC(xt))]

最后的损失函数为

l c l u R e g = E x t ∼ D t [ − p θ C ( x t ) l o g ( p θ C ( x t ) ) ] + E x t ∼ D t [ K L ( p θ C ( x t ) ∣ ∣ p θ C ( x t + r ~ ) ) ] l_{cluReg}=E_{x_t \sim D_t}[-p_{\theta_C}(x_t)log(p_{\theta_C}(x_t))]+E_{x_t \sim D_t}[KL(p_{\theta_C}(x_t)||p_{\theta_C}(x_t+\tilde{r}))] lcluReg=ExtDt[pθC(xt)log(pθC(xt))]+ExtDt[KL(pθC(xt)pθC(xt+r~))]

r ~ \tilde{r} r~为求解出来的最佳的扰动(这里就是上面没弄懂的咋求出的),猜测是梯度下降求解得到,但这会使整个模型的收敛速度变慢很多

最终对于 C C C的损失函数为

m i n θ C λ g l g e n + λ w l w R e g λ c l u l c l u R e n min_{\theta_C}\lambda_gl_{gen}+\lambda_wl_{wReg}\lambda_{clu}l_{cluRen} minθCλglgen+λwlwRegλclulcluRen

伪代码
在这里插入图片描述

说实话,在伪代码中,我仍然没看懂这个扰动 r r r到底怎么求出来的…

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
CVPR 2019中发表了一篇题为“迁移学习:无监督领域自适应的对比适应网络(Contrastive Adaptation Network for Unsupervised Domain Adaptation)”的论文。这篇论文主要介绍了一种用于无监督领域自适应的对比适应网络。 迁移学习是指将从一个源领域学到的知识应用到一个目标领域的任务中。在无监督领域自适应中,源领域和目标领域的标签信息是不可用的,因此算法需要通过从源领域到目标领域的无监督样本对齐来实现知识迁移。 该论文提出的对比适应网络(Contrastive Adaptation Network,CAN)的目标是通过优化源领域上的特征表示,使其能够适应目标领域的特征分布。CAN的关键思想是通过对比损失来对源领域和目标领域的特征进行匹配。 具体地说,CAN首先通过一个共享的特征提取器来提取源领域和目标领域的特征表示。然后,通过对比损失函数来测量源领域和目标领域的特征之间的差异。对比损失函数的目标是使源领域和目标领域的特征在特定的度量空间中更加接近。最后,CAN通过最小化对比损失来优化特征提取器,以使源领域的特征能够适应目标领域。 该论文还对CAN进行了实验验证。实验结果表明,与其他无监督领域自适应方法相比,CAN在多个图像分类任务上取得了更好的性能,证明了其有效性和优越性。 综上所述,这篇CVPR 2019论文介绍了一种用于无监督领域自适应的对比适应网络,通过对源领域和目标领域的特征进行对比学习,使得源领域的特征能够适应目标领域。该方法在实验中展现了较好的性能,有望在无监督领域自适应任务中发挥重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值