(AAAI2020)Adversarial-Learned Loss for Domain Adaptation 论文笔记

Adversarial-Learned Loss for Domain Adaptation 论文笔记

本文同样是在传统的对抗领域自适应模型上进行修改。本文提出一个相比于最传统的判别器输出0/1表示领域,本文中的判别器输出为分类向量,并用分类向量构造出Confusion Matrix用于优化生成器,判别器和分类器。

模型结构

在这里插入图片描述

模型中和传统对抗领域自适应方法包含的模块相似,一个特征提取器 G G G,分类器 C C C和判别器 D D D C C C的输出经过softmax函数后,得到每个类比的概率 p p p y ^ = a r g m a x ( p ) \hat{y}=argmax(p) y^=argmax(p)后的one-hot向量。

GRL和传统模型中一样,为梯度翻转层。

判别器 D D D的输出为一个 K K K维度的向量,经过sigmoid函数后得到向量 ξ \xi ξ,通过 ξ \xi ξ生成Confusion Matrix,为 η \eta η

之后通过 y ^ ⋅ η \hat{y} \cdot\eta y^η得到 η \eta η 的某一列,为 c c c,再分为源域或者目标域计算损失函数。

损失函数

思想来源

首先说明本文中Confusion Matrix的想法来源。

我们常常使用的交叉熵损失函数为 L T ( x ) = ∑ k = 1 K − p ( y = k ∣ x ) l o g ( p ( y ^ = k ∣ x ) ) L_T(x)=\sum\limits_{k=1}^K -p(y=k|x)log(p(\hat{y}=k|x)) LT(x)=k=1Kp(y=kx)log(p(y^=kx))

其中 y y y为真实标签,而 y ^ \hat{y} y^为我们预测的标签, p ( y ^ = k ∣ x ) p(\hat{y}=k|x) p(y^=kx)就是分类器的输出经过softmax后的结果,而前面的 p ( y = k ∣ x ) p(y=k|x) p(y=kx)在源域中就是标签的ont-hot向量。

但在无监督领域自适应的问题中,目标域数据是没有标签的,也就是说 p ( y = k ∣ x ) p(y=k|x) p(y=kx)是不知道的。一些方法中会直接使用分类器的输出作为这个,也有些方法中会用别的方法。本文中对 L T ( x ) L_T(x) LT(x)再使用一次全概率公式,得到

L T ( x ) = ∑ k = 1 K − p ( y = k ∣ x ) l o g ( p ( y ^ = k ∣ x ) ) = ∑ k = 1 K ∑ l = 1 K − p ( y = k ∣ y ^ = l , x ) p ( y ^ = l ∣ x ) l o g ( p ( y ^ = k ∣ x ) ) L_T(x)=\sum\limits_{k=1}^K -p(y=k|x)log(p(\hat{y}=k|x))\\=\sum\limits_{k=1}^K\sum\limits_{l=1}^K-p(y=k|\hat{y}=l,x)p(\hat{y}=l|x)log(p(\hat{y}=k|x)) LT(x)=k=1Kp(y=kx)log(p(y^=kx))=k=1Kl=1Kp(y=ky^=l,x)p(y^=lx)log(p(y^=kx))

其中 p ( y ^ = l ∣ x ) l o g ( p ( y ^ = k ∣ x ) ) p(\hat{y}=l|x)log(p(\hat{y}=k|x)) p(y^=lx)log(p(y^=kx))这部分不再包含 y y y,就是单纯的一个交叉熵,我们将其写为 L ( p t , k ) L(p_t,k) L(pt,k) p t p_t pt为目标域样本 x t x_t xt的分类器输出。文中表示 L ( p t , k ) L(p_t,k) L(pt,k)不仅可以使交叉熵,也可以是MAE等其他的损失函数。

L T L_T LT中的 p ( y = k ∣ y ^ = l , x ) p(y=k|\hat{y}=l,x) p(y=ky^=l,x),我们将其命名成 η k l ( x t ) \eta_{kl}^{(x_t)} ηkl(xt),后续会提到其构造方式。

至此我们将原来的交叉熵损失函数修改为计算 p ( y = k ∣ y ^ = l , x ) p(y=k|\hat{y}=l,x) p(y=ky^=l,x)

Confusion Matrix的构造

我们没办法直接得到准确的 p ( y = k ∣ y ^ = l , x ) p(y=k|\hat{y}=l,x) p(y=ky^=l,x),所以本文通过构造的方式进行估计。

D D D的输出经过sigmoid得到 ξ ∈ R K \xi \in R^K ξRK,文中说 ξ \xi ξ向量表示的是伪标签=真实标签的概率,即 ξ k ( x ) = p ( y = k ∣ y ^ = k , x ) \xi_k^{(x)}=p(y=k|\hat{y}=k,x) ξk(x)=p(y=ky^=k,x)

构造 η \eta η矩阵为

$ \left{ \begin{aligned} &\eta_{kl}{(x_t)}=\xi_k{(x_t)} &k=l \ &\eta_{kl}{(x_t)}=\frac{1-\xi_l{(x_t)}}{K-1} &k\neq l \end{aligned} \right. $

损失函数计算

通过 η \eta η y ^ \hat{y} y^我们可以得到 c c c向量。之后对于源域数据,我们构造 y s y_s ys为真实标签的ont-hot向量,而对于目标域数据,我们根据 y ^ t \hat{y}_t y^t构造 u k ( y ^ t ) = { 0 k = y ^ t 1 K − 1 k ≠ y ^ t u^{(\hat{y}_t)}_k=\left\{ \begin{aligned} &0 &k=\hat{y}_t \\ &\frac{1}{K-1} &k\neq \hat{y}_t \end{aligned} \right. uk(y^t)=0K11k=y^tk=y^t

这么构造 u ( y ^ t ) u^{(\hat{y}_t)} u(y^t)是因为我们希望判别器区分出源域的特征和目标域的特征,则损失函数为

源域: L a d v ( x s , y s ) = L B C E ( c ( x s ) , y s ) = ∑ k − y s k l o g ( c k ( x s ) ) − ( 1 − y s k ) l o g ( 1 − c k ( x s ) ) L_{adv}(x_s,y_s)=L_{BCE}(c^{(x_s)},y_s)=\sum_k -y_{sk}log(c_k^{(x_s)})-(1-y_{sk})log(1-c_k^{(x_s)}) Ladv(xs,ys)=LBCE(c(xs),ys)=kysklog(ck(xs))(1ysk)log(1ck(xs))

目标域: L a d v ( x t ) = L B C E ( c ( x t ) , u ( y ^ t ) ) = ∑ k − u k ( y ^ t ) l o g ( c k ( x t ) ) − ( 1 − u ( y ^ t ) ) l o g ( 1 − c k ( x t ) ) L_{adv}(x_t)=L_{BCE}(c^{(x_t)},u^{(\hat{y}_t)})=\sum_k -u^{(\hat{y}_t)}_klog(c_k^{(x_t)})-(1-u^{(\hat{y}_t)})log(1-c_k^{(x_t)}) Ladv(xt)=LBCE(c(xt),u(y^t))=kuk(y^t)log(ck(xt))(1u(y^t))log(1ck(xt))

合并一下, L a d v ( x s , y s , x t ) = L a d v ( x s , y s ) + L a d v ( x t ) L_{adv}(x_s,y_s,x_t)=L_{adv}(x_s,y_s)+L_{adv}(x_t) Ladv(xs,ys,xt)=Ladv(xs,ys)+Ladv(xt)

这部分损失函数是用于让判别器 D D D可以区分出源域的特征和目标域的特征。判别器对于源域样本的输出是希望伪标签的类别上的结果变大,而对于目标域的输出是将其他类别增大。

同时文中加入了一个 L R e g = L C E ( p D ( x s ) , y s ) L_{Reg}=L_{CE}(p_D^{(x_s)},y_s) LReg=LCE(pD(xs),ys),其中 p D ( x s ) = s o f t m a x ( D ( G ( x ) ) ) p_D^{(xs)}=softmax(D(G(x))) pD(xs)=softmax(D(G(x)))

这部分是希望这个判别器还兼具分类功能。

注意前面判别部分的输入是经过sigmoid的输出,而分类的损失函数是softmax的输出。

在梯度传递过程中,sigmoid中我们增大其中一个,对其他的没啥影响,而softmax中增大其中某个,其他的就要相应减小。

话说这个用于分类的损失函数是不是和源域的 L a d v L_{adv} Ladv功能很像,理解地不是很透彻。

最后用于优化判别器 D D D的损失函数为

m i n D E ( x s , y s ) , x t ( L a d v ( x s , y s , x t ) + L R e g ( x s , y s ) ) min_D E_{(x_s,y_s),x_t}(L_{adv}(x_s,y_s,x_t)+L_{Reg}(x_s,y_s)) minDE(xs,ys),xt(Ladv(xs,ys,xt)+LReg(xs,ys))

之后用于优化分类器 C C C的损失函数包含对于源域的分类损失和对于目标域的分类损失

源域的分类损失为交叉熵损失 L C E ( p s , y s ) L_{CE}(p_s,y_s) LCE(ps,ys)

对于目标域,我们利用Confusion Matrix计算得到的 c c c向量计算目标域的分类损失

L T ( x t , L u n h ) = ∑ k , l η k l ( x t ) p ( y ^ t = l ∣ x t ) L u n h ( p t , k ) = ∑ k c k ( x t ) L u n h ( p t , k ) L_T(x_t,L_{unh})=\sum\limits_{k,l}\eta_{kl}^{(x_t)}p(\hat{y}_t=l|x_t)L_{unh}(p_t,k)\\=\sum_kc_k^{(x_t)}L_{unh}(p_t,k) LT(xt,Lunh)=k,lηkl(xt)p(y^t=lxt)Lunh(pt,k)=kck(xt)Lunh(pt,k)

其中 L u n h ( p t , k ) = 1 − p t k L_{unh}(p_t,k)=1-p_{tk} Lunh(pt,k)=1ptk

个人感觉这里的 L u n h L_{unh} Lunh也可以换成交叉熵之类的

最后对于分类器的损失函数为

m i n C E ( x s , y s ) , x t ( L C E ( p s , y s ) + λ L T ( x t , L u n h ) ) min_CE_{(x_s,y_s),x_t}(L_{CE}(p_s,y_s)+\lambda L_T(x_t,L_{unh})) minCE(xs,ys),xt(LCE(ps,ys)+λLT(xt,Lunh))

对于特征提取器 G G G的损失函数就是分类的损失函数与判别器的损失函数结合,注意要将判别器的损失函数梯度翻转

m i n G E ( x s , y s ) , x t ( L C E ( p s , y s ) + λ L T ( x t , L u n h ) − λ L a d v ( x s , y s , x t ) ) min_GE_{(x_s,y_s),x_t}(L_{CE}(p_s,y_s)+\lambda L_T(x_t,L_{unh})-\lambda L_{adv}(x_s,y_s,x_t)) minGE(xs,ys),xt(LCE(ps,ys)+λLT(xt,Lunh)λLadv(xs,ys,xt))

结果

在这里插入图片描述
在这里插入图片描述

就结果而言看起来不错,但他似乎没有公开代码,这么多损失函数,还是对抗方法,感觉并不是很容易收敛。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值