(CoRL2020)DIRL: Domain-Invariant Representation Learning Approach for Sim-to-Real Transfer 论文笔记
本文针对的问题是无监督领域自适应和半监督领域自适应问题。
与传统的对抗领域自适应方法对比,其创新性在于
- 在对齐边缘概率分布的同时也对齐条件概率分布(虽然感觉现在大家都在对齐条件概率分布,应该不能算新颖了)
- 使用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))=−Exs∼Xs[log(D(g(xs)))]−Ext∼Xt[log(1−D(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))=−Ext∼Xt[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(f∘g(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))=−Exsk∼Xs[log(C(g(xsk)))]−Extk∼Xt[log(1−C(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))=−Extk∼Xt[log(C(g(xtk)))]
类别判别器作用是对齐源域和目标域的条件概率分布
Triplet Distribution Loss:
传统的Triplet Loss的训练过程是
先从训练集中选择一个样本,命名为Anchor,简记为 a a a
之后选择一个和该类样本同类的样本,命名为Positive,简记为 p p p
在选择一个和该类样本不同类的样本,命名为Negative,简记为 n n n
目的是减小Anchor和Positive 的距离,同时增大Anchor和Negative的距离
损失函数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次,得到最终的损失函数
KaTeX parse error: Expected group after '_' at position 40: …c{1}{M_p-1}\sum_̲\limits{p=1 \\ …
上述公式中, M M M代表我们随机选了 M M M次Anchor
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(−σ21∣∣gˉ(xj)−gˉ(xa)∣∣22)exp(−σ21∣∣gˉ(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。如果某两个样本对应的集合分布接近,就认为这两个样本在特征空间中的接近,否则认为不接近。
优化的目标是增大类间方差同时缩小类内方差。
总结
本文主要贡献是提出一种损失函数计算方式,增强域不变特征的提取能力。
个人感觉该方法需要目标域数据的标签,主要在半监督领域自适应中会好用些,无监督的话目标域数据没有标签需要伪标签,那么伪标签的正确率可能会导致算法的效果不好。