(AAAI2020)Discriminative Adversarial Domain论文笔记

本文探讨了一种针对领域自适应问题的新型对抗学习方法,将分类器和域判别器整合为同一网络。通过设计特定的损失函数,优化模型以提升源域和目标域之间的分类性能。此外,还引入了额外的损失项来处理部分领域自适应问题,以适应目标域类别子集的情况。该方法旨在通过调整不同类别的权重来改善目标域的分类效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Discriminative Adversarial Domain Adaptation论文笔记

论文链接
代码链接

本文是针对领域自适应问题的对抗学习方法。

相比于传统的对抗学习方法,本文创新性地将分类器和域判别器合并成同一个网络。提出一种新的损失函数用于优化合并后的网络。

网络模型

在这里插入图片描述

源域图片和目标域图片首先输入特征提取器 G G G,得到特征向量,之后特征向量输入分类器(判别器和分类器的合并) F F F,输出一个 K + 1 K+1 K+1维的向量。前 K K K维代表分类的结构,最后一维代表域判别的结果。通过这个结果计算损失函数优化模型。

损失函数

首先对于源域数据,本文构造的损失函数为

L s ( G , F ) = − 1 n s ∑ i = 1 n s [ ( 1 − p K + 1 ( x i s ) ) l o g ( p y i s ( x i s ) ) + p K + 1 ( x i s ) l o g ( 1 − p y i s ( x i s ) ) ] L^s(G,F)=-\frac{1}{n_s}\sum\limits_{i=1}^{n_s}[(1-p_{K+1}(x_i^s))log(p_{y_i^s}(x_i^s))+p_{K+1}(x_i^s)log(1-p_{y_i^s}(x_i^s))] Ls(G,F)=ns1i=1ns[(1pK+1(xis))log(pyis(xis))+pK+1(xis)log(1pyis(xis))]

其中 p p p向量是分类器输出的 K + 1 K+1 K+1维的向量后接softmax函数的结果。

这里softmax针对的是 K + 1 K+1 K+1维向量。传统方法中,一般是针对类别的分类结果计算softmax,即前 K K K维的向量,输出结果表示每一类的概率。这里带上了域判别结果一起算softmax,后面计算梯度会体现它的作用。

考虑当我们希望损失函数 L s L^s Ls变小的时候, p y s s p_{y^s}^s pyss p K + 1 s p_{K+1}^s pK+1s分别会怎么变化

▽ p y s s = ∂ L s ∂ p y s s = p y s s p K + 1 s − ( 1 − p y s s ) ( 1 − p K + 1 s ) p y s s ( 1 − p y s s ) \bigtriangledown_{p_{y^s}^s}=\frac{\partial L^s}{\partial p^s_{y^s}}=\frac{p_{y^s}^sp_{K+1}^s-(1-p_{y^s}^s)(1-p_{K+1}^s)}{p_{y^s}^s(1-p_{y^s}^s)} pyss=pyssLs=pyss(1pyss)pysspK+1s(1pyss)(1pK+1s)

▽ p K + 1 s = ∂ L s ∂ p K + 1 s = l o g p y s s 1 − p y s s \bigtriangledown_{p_{K+1}^s}=\frac{\partial L^s}{\partial p^s_{K+1}}=log\frac{p_{y^s}^s}{1-p_{y^s}^s} pK+1s=pK+1sLs=log1pysspyss

由于 p p psoftmax函数的输出,所以有 p y s s + p K + 1 s ≤ 1 p_{y^s}^s+p_{K+1}^s \leq 1 pyss+pK+1s1

由此可知

p y s s p K + 1 s − ( 1 − p y s s ) ( 1 − p K + 1 s ) ≤ p y s s ( 1 − p y s s ) − ( 1 − p y s s ) ( 1 − p K + 1 s ) = ( 1 − p y s s ) ( p K + 1 s + p K + 1 s − 1 ) ≤ 0 \begin{aligned} &p_{y^s}^sp_{K+1}^s-(1-p_{y^s}^s)(1-p_{K+1}^s) \\ &\leq p_{y^s}^s(1-p_{y^s}^s) - (1-p_{y^s}^s)(1-p_{K+1}^s) \\&= (1-p_{y^s}^s)(p_{K+1}^s+p_{K+1}^s-1) \\ &\leq 0 \end{aligned} pysspK+1s(1pyss)(1pK+1s)pyss(1pyss)(1pyss)(1pK+1s)=(1pyss)(pK+1s+pK+1s1)0

所以 ▽ p y s s ≤ 0 \bigtriangledown_{p_{y^s}^s} \leq 0 pyss0

故当最小化 L s L^s Ls的时候,希望 p y s s p_{y^s}^s pyss变大。

同理我们可以推得,当最小化 L s L^s Ls的时候, p K + 1 s p^s_{K+1} pK+1s的变化方式为

  1. p y s s < 0.5 p^s_{y^s}<0.5 pyss<0.5的时候, ▽ p K + 1 s < 0 \bigtriangledown_{p_{K+1}^s}<0 pK+1s<0,说明最小化 L s L^s Ls是希望 p K + 1 s p^s_{K+1} pK+1s变大
  2. p y s s > 0.5 p^s_{y^s}>0.5 pyss>0.5的时候, ▽ p K + 1 s > 0 \bigtriangledown_{p_{K+1}^s}>0 pK+1s>0,说明最小化 L s L^s Ls是希望 p K + 1 s p^s_{K+1} pK+1s变小

同理分析最大化 L s L^s Ls的时候 p y s s p_{y^s}^s pyss p K + 1 s p_{K+1}^s pK+1s的变化方式

在这里插入图片描述

文中通过交叉熵的方式进行预训练,先将源域的数据都调整到 p y s s > 0.5 p^s_{y^s}>0.5 pyss>0.5,这样的话,分类器 F F F的目标就是提升分类效果并且区分源域和目标域,而 G G G的目标是混淆源域和目标域。

上述部分是在对齐边缘概率分布,而为了对齐联合概率分布,本文又提出了两个损失函数

L F t ( G , F ) = − 1 n t ∑ j = 1 n t ∑ k = 1 K p ˉ k ( x j t ) l o g ( p ^ K + 1 k ( x j t ) ) L_F^t(G,F)=-\frac{1}{n_t}\sum\limits_{j=1}^{n_t}\sum\limits_{k=1}^K\bar{p}_k(x_j^t)log(\hat{p}_{K+1}^k(x_j^t)) LFt(G,F)=nt1j=1ntk=1Kpˉk(xjt)log(p^K+1k(xjt))

L G t ( G , F ) = 1 n t ∑ j = 1 n t ∑ k = 1 K p ˉ k ( x j t ) l o g ( 1 − p ^ K + 1 k ( x j t ) ) L_G^t(G,F)=\frac{1}{n_t}\sum\limits_{j=1}^{n_t}\sum\limits_{k=1}^K\bar{p}_k(x_j^t)log(1-\hat{p}_{K+1}^k(x_j^t)) LGt(G,F)=nt1j=1ntk=1Kpˉk(xjt)log(1p^K+1k(xjt))

其中

p ^ K + 1 k ( x ) = p K + 1 ( x ) p k ( x ) + p K + 1 ( x ) \hat{p}_{K+1}^k(x) = \frac{p_{K+1}(x)}{p_k(x)+p_{K+1}(x)} p^K+1k(x)=pk(x)+pK+1(x)pK+1(x)

p ˉ k ( x j t ) \bar{p}_k(x_j^t) pˉk(xjt)表示的是分类器 F F F的输出的前 K K Ksoftmax的结果,意义是该样本是第 k k k类的概率

p k ( x ) p_k(x) pk(x)表示的是分类器 F F F的输出的前 K + 1 K+1 K+1softmax的结果

按照论文说中的说法,这个损失函数是为了减小mode collapse。方法是让目标域样本与多个相关的类对齐。损失函数中的 p ˉ k ( x j t ) \bar{p}_k(x_j^t) pˉk(xjt)可以看做这个权值,而 l o g log log里面的可以看做是熵。

(但是,我没分析出来这个损失函数为什么可以达到这个效果,求偏导没看出来。。。)

最后还有个熵损失,表示的是目标域数据的分类效果好不好。

L e m t ( G , F ) = 1 n t ∑ j = 1 n t H ( p ˉ ( x j t ) ) L_{em}^t(G,F)=\frac{1}{n_t}\sum\limits_{j=1}{n_t}H(\bar{p}(x_j^t)) Lemt(G,F)=nt1j=1ntH(pˉ(xjt))

最后优化 F F F G G G的损失函数为

min ⁡ F L F = λ ( L s + L F t ) − L e m t \min\limits_FL_F=\lambda(L^s+L_F^t)-L_{em}^t FminLF=λ(Ls+LFt)Lemt

max ⁡ G L G = λ ( L s + L G t ) − L e m t \max\limits_GL_G=\lambda(L^s+L_G^t)-L_{em}^t GmaxLG=λ(Ls+LGt)Lemt

论文里这个地方两个式子都是 − L e m t -L_{em}^t Lemt,解释中是说第一个是为了防止平凡解(即预测中将所有样本预测到同一个类别),第二个是为了目标域数据可以分类地更好。(怀疑这里论文写错了,后面解释。)

部分领域自适应(Partial Domain Adaptation)

Partial Domain Adaptation表示目标域数据的类别空间是源域的子集。

方法是对每个类别加权,希望达到的是目标域有的类别的权重较大,而目标域没有的类别权重较小

c ˉ = 1 n t ∑ j = 1 n t p ˉ ( x j t ) \bar{c}=\frac{1}{n_t}\sum\limits_{j=1}^{n_t}\bar{p}(x_j^t) cˉ=nt1j=1ntpˉ(xjt)

c = λ c ˉ max ⁡ ( c ˉ ) + ( 1 − λ ) 1 c=\lambda\frac{\bar{c}}{\max(\bar{c})}+(1-\lambda)1 c=λmax(cˉ)cˉ+(1λ)1

之后在计算 L s L_s Ls的时候我们对不同类进行加权,修改后的损失函数为

L s ( G , F ) = − 1 n s ∑ i = 1 n s c y i s [ ( 1 − p K + 1 ( x i s ) ) l o g ( p y i s ( x i s ) ) + p K + 1 ( x i s ) l o g ( 1 − p y i s ( x i s ) ) ] L^s(G,F)=-\frac{1}{n_s}\sum\limits_{i=1}^{n_s}c_{y_i}^s[(1-p_{K+1}(x_i^s))log(p_{y_i^s}(x_i^s))+p_{K+1}(x_i^s)log(1-p_{y_i^s}(x_i^s))] Ls(G,F)=ns1i=1nscyis[(1pK+1(xis))log(pyis(xis))+pK+1(xis)log(1pyis(xis))]

最后的优化函数为

min ⁡ F L F = λ ( L s + L F t ) + L e m t \min\limits_FL_F=\lambda(L^s+L_F^t)+L_{em}^t FminLF=λ(Ls+LFt)+Lemt

max ⁡ G L G = λ ( L s + L G t ) − L e m t \max\limits_GL_G=\lambda(L^s+L_G^t)-L_{em}^t GmaxLG=λ(Ls+LGt)Lemt

这就是我怀疑他上面写错了,这里的 L e m t L_{em}^t Lemt变成了上面的是加号,下面的是减号。代码中也是按这样写的,上面的是加号,下面的是减号。

个人感受

这篇文章没有设计很复杂的网络,甚至将原来的分类器和类判别器合并成一个网络进行优化,非常精妙。另外,我很喜欢 L s ( G , F ) L^s(G,F) Ls(G,F)这个损失函数的设计,使得其可以优化我们合并的新的网络。

但我感觉 L F t ( G , F ) L_F^t(G,F) LFt(G,F) L G t ( G , F ) L_G^t(G,F) LGt(G,F)的设计可能有点问题,直观上没有感受到其作用(我又被数学杀掉了。。。),以后看懂了再补一补。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值