(CoRL2020)DIRL: Domain-Invariant Representation Learning Approach for Sim-to-Real Transfer 论文笔记

(CoRL2020)DIRL: Domain-Invariant Representation Learning Approach for Sim-to-Real Transfer 论文笔记

paper
code

本文针对的问题是无监督领域自适应和半监督领域自适应问题。

与传统的对抗领域自适应方法对比,其创新性在于

  1. 在对齐边缘概率分布的同时也对齐条件概率分布(虽然感觉现在大家都在对齐条件概率分布,应该不能算新颖了)
  2. 使用triplet distribution loss来增大类间方差同时缩小雷内方差

本文上来先阐述对齐条件分布的好处(我又又又被数学杀了,似懂非懂先跳过了)。之后阐述方法和损失函数。

模型结构

在这里插入图片描述

和传统的对抗神经网络区别不大,源域数据和目标域数据经过同一个特征提取器 g g g,得到特征空间的特征 z z z z z z输入给域判别器 D D D判断特征来自源域还是目标域。

本文加入了一个类别判别器 C C C用来判断在某个类别下,该样本是属于源域还是目标域,这个目的是对齐条件概率分布。

损失函数

首先是域判别损失,用于优化 D D D的损失函数

m i n D   L m a ( g ( x s , x t ) , D ( x s , x t ) ) = − E x s ∼ X s [ l o g ( D ( g ( x s ) ) ) ] − E x t ∼ X t [ l o g ( 1 − D ( g ( x t ) ) ) ] min_D \ L_{ma}(g(x_s,x_t),D(x_s,x_t))=-E_{x_s\sim X_s}[log(D(g(x_s)))]-E_{x_t\sim X_t}[log(1-D(g(x_t)))] minD Lma(g(xs,xt),D(xs,xt))=ExsXs[log(D(g(xs)))]ExtXt[log(1D(g(xt)))]

用于优化 g g g的损失函数

m i n g   L m a ( g ( x t ) , D ( x s , x t ) ) = − E x t ∼ X t [ l o g ( D ( g ( x t ) ) ) ] min_g \ L_{ma}(g(x_t),D(x_s,x_t))=-E_{x_t \sim X_t[log(D(g(x_t)))]} ming Lma(g(xt),D(xs,xt))=ExtXt[log(D(g(xt)))]

分类损失(源域的分类损失+目标域的分类损失)

L c a _ s c ( f ∘ g ( x s , y s , x t , y t ) ) = E x s , y s ∼ ( X s , Y s ) [ − y s l o g ( f ( g ( x s ) ) ) ] + E x t , y t ∼ ( X t , Y t ) [ − y t l o g ( f ( g ( x t ) ) ) ] L_{ca\_sc}(f\circ g(x_s,y_s,x_t,y_t))=E_{x_s,y_s \sim (X_s,Y_s)}[-y_slog(f(g(x_s)))]+E_{x_t,y_t \sim (X_t,Y_t)}[-y_tlog(f(g(x_t)))] Lca_sc(fg(xs,ys,xt,yt))=Exs,ys(Xs,Ys)[yslog(f(g(xs)))]+Ext,yt(Xt,Yt)[ytlog(f(g(xt)))]

普通的交叉熵损失

对于类别判别器,与与判别器的优化方法类似,不同的就是对于每个类的样本都要计算损失函数

用于优化类别判别器 C C C的损失函数

m i n C   L c a k ( g ( x s k , x t k ) , C ( x s k , x t k ) ) = − E x s k ∼ X s [ l o g ( C ( g ( x s k ) ) ) ] − E x t k ∼ X t [ l o g ( 1 − C ( g ( x t k ) ) ) ] min_C \ L_{ca_k}(g(x_s^k,x_t^k),C(x_s^k,x_t^k))=-E_{x_s^k\sim X_s}[log(C(g(x_s^k)))]-E_{x_t^k\sim X_t}[log(1-C(g(x_t^k)))] minC Lcak(g(xsk,xtk),C(xsk,xtk))=ExskXs[log(C(g(xsk)))]ExtkXt[log(1C(g(xtk)))]

此处的 k k k表示第 k k k类样本

用于优化特征提取器 g g g的损失函数

m i n g   L c a k ( g ( x s k , x t k ) , C ( x s k , x t k ) ) = − E x t k ∼ X t [ l o g ( C ( g ( x t k ) ) ) ] min_g \ L_{ca_k}(g(x_s^k,x_t^k),C(x_s^k,x_t^k))=-E_{x_t^k\sim X_t}[log(C(g(x_t^k)))] ming Lcak(g(xsk,xtk),C(xsk,xtk))=ExtkXt[log(C(g(xtk)))]

类别判别器作用是对齐源域和目标域的条件概率分布



Triplet Distribution Loss:

传统的Triplet Loss的训练过程是

先从训练集中选择一个样本,命名为Anchor,简记为 a a a

之后选择一个和该类样本同类的样本,命名为Positive,简记为 p p p

在选择一个和该类样本不同类的样本,命名为Negative,简记为 n n n

目的是减小AnchorPositive 的距离,同时增大AnchorNegative的距离

损失函数triplet loss写成

L = m a x ( d ( a , p ) − d ( a , n ) + m a r g i n , 0 ) L=max(d(a,p)-d(a,n)+margin,0) L=max(d(a,p)d(a,n)+margin,0)

此处的 d d d使用欧氏距离度量样本在特征空间中的距离

这篇文章中,使用类似triplet loss的方法,不同点在于使用分布来计算损失函数

首先取出一个mini-batch的数据,随机从中取一个样本,为Anchor,记作 x a x_a xa

x a x_a xa同类的样本,为Positive,记作 x p x_p xp

x a x_a xa不同类的样本,为Negative,记作 x n x_n xn

这样做 M M M次,得到最终的损失函数

L t l = ∑ a = 1 M [ 1 M p − 1 ∑ p = 1 p ≠ a M p K L (   N ( g ˉ ( x a ) , σ 2 )   ∣ ∣   N ( g ˉ ( x p ) , σ 2 )   ) − 1 M n ∑ n = 1 M n K L (   N ( g ˉ ( x a ) , σ 2 )   ∣ ∣   N ( g ˉ ( x n ) , σ 2 )   ) + α t l ] + L_{tl}=\sum_{a=1}^M[\frac{1}{M_p-1}\sum\limits_{p=1 \\ p \neq a}^{M_p}KL( \ N(\bar{g}(x_a),\sigma^2)\ ||\ N(\bar{g}(x_p),\sigma^2)\ )-\frac{1}{M_n}\sum\limits_{n=1}^{M_n}KL( \ N(\bar{g}(x_a),\sigma^2)\ ||\ N(\bar{g}(x_n),\sigma^2)\ )+\alpha_{tl}]_+ Ltl=a=1M[Mp11p=1p=aMpKL( N(gˉ(xa),σ2)  N(gˉ(xp),σ2) )Mn1n=1MnKL( N(gˉ(xa),σ2)  N(gˉ(xn),σ2) )+αtl]+

上述公式中, M M M代表我们随机选了 M M MAnchor

M p M_p Mp M n M_n Mn分别代表与 x a x_a xa类别相同的样本数目和类别不同的样本数目

g ˉ ( x ) \bar{g}(x) gˉ(x)表示对 g ( x ) g(x) g(x)的输出归一化后的结果

K L KL KL K L KL KL散度

α t l \alpha_{tl} αtl σ \sigma σ为超参数

下标 + + + H i n g e L o s s Hinge Loss HingeLoss,作用与Triplet Loss中和 0 0 0比较取较大类似

N ( g ˉ ( x a ) , σ 2 ) N(\bar{g}(x_a),\sigma^2) N(gˉ(xa),σ2)为构造的一个集合(看做一个分布,用于计算 K L KL KL散度),其余两个 N ( g ˉ ( x n ) , σ 2 ) N(\bar{g}(x_n),\sigma^2) N(gˉ(xn),σ2) N ( g ˉ ( x p ) , σ 2 ) N(\bar{g}(x_p),\sigma^2) N(gˉ(xp),σ2)同理,集合为

N ( g ˉ ( x a ) , σ 2 ) = { N ( g ˉ ( x i ) ; g ˉ ( x a ) , σ 2 ) = e x p ( − 1 σ 2 ∣ ∣ g ˉ ( x i ) − g ˉ ( x a ) ∣ ∣ 2 2 ) ∑ j = 1 K e x p ( − 1 σ 2 ∣ ∣ g ˉ ( x j ) − g ˉ ( x a ) ∣ ∣ 2 2 ) } i = 1 K N(\bar{g}(x_a),\sigma^2) =\lbrace N(\bar{g}(x_i);\bar{g}(x_a),\sigma^2)=\frac{exp(-\frac{1}{\sigma^2}||\bar{g}(x_i)-\bar{g}(x_a)||^2_2)}{\sum_{j=1}^Kexp(-\frac{1}{\sigma^2}||\bar{g}(x_j)-\bar{g}(x_a)||^2_2)} \rbrace_{i=1}^K N(gˉ(xa),σ2)={N(gˉ(xi);gˉ(xa),σ2)=j=1Kexp(σ21gˉ(xj)gˉ(xa)22)exp(σ21gˉ(xi)gˉ(xa)22)}i=1K

后面那个式子有点像加权的 s o f t m a x softmax softmax

文中没有写这个 K K K是什么,我觉得应该指的是mini-batch的大小

这个集合的意思是,对于一个样本 x a x_a xa,我们计算mini-batch中所有样本与该样本在特征空间中的距离,求个softmax。如果某两个样本对应的集合分布接近,就认为这两个样本在特征空间中的接近,否则认为不接近。

优化的目标是增大类间方差同时缩小类内方差。

总结

本文主要贡献是提出一种损失函数计算方式,增强域不变特征的提取能力。

个人感觉该方法需要目标域数据的标签,主要在半监督领域自适应中会好用些,无监督的话目标域数据没有标签需要伪标签,那么伪标签的正确率可能会导致算法的效果不好。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值