Contrastive Adaptation Network for Unsupervised Domain Adaptation
思想:类间差异最大化,类内差异最小化
主要贡献:
- 提出新的差异度量方法 Contrastive Domain Discrepancy来进行无监督领域自适应的类感知对齐
- 提出Contrastive Adaptation Network进行CDD的端到端训练
- 在Office-31,VisDA-2017数据集取得了优异效果
方法
最大均值差异(MMD, Maximun Mean Discreoancy)
最大均值差异(maximum mean discrepancy, MMD)提出时候是用来双样本检测,也就直观的判断两个数据的分布。可以表达为下式:
f ( X ( S ) , X ( T ) ) = ∥ 1 n ∑ i = 1 n ϕ ( x i s ) − 1 m ∑ i = 1 m ϕ ( x i t ) ∥ f\left(X_{(S)}, X_{(T)}\right)=\left\|\frac{1}{n} \sum_{i=1}^{n} \phi\left(x_{i}^{s}\right)-\frac{1}{m} \sum_{i=1}^{m} \phi\left(x_{i}^{t}\right)\right\| f(X(S),X(T))=∥∥∥∥∥n1i=1∑nϕ(xis)−m1i=1∑mϕ(xit)∥∥∥∥∥
亦可记作:
D
H
(
P
,
Q
)
≜
sup
f
∼
H
(
E
X
s
[
f
(
X
s
)
]
−
E
X
t
[
f
(
X
t
)
]
)
H
(1)
\mathcal{D}_{\mathcal{H}}(P, Q) \triangleq \sup _{f \sim \mathcal{H}}\left(\mathbb{E}_{\boldsymbol{X}^{s}}\left[f\left(\boldsymbol{X}^{s}\right)\right]-\mathbb{E}_{\boldsymbol{X}^{t}}\left[f\left(\boldsymbol{X}^{t}\right)\right]\right)_{\mathcal{H}}\tag{1}
DH(P,Q)≜f∼Hsup(EXs[f(Xs)]−EXt[f(Xt)])H(1)
其中 H \mathcal{H} H为一类函数。
实际上,对于一层 l l l,MMD的平方值可以用经验核平均嵌入估计:
D ^ l m m d = 1 n s 2 ∑ i = 1 n s ∑ j = 1 n s k l ( ϕ l ( x i s ) , ϕ l ( x j s ) ) + 1 n t 2 ∑ i = 1 n t ∑ j = 1 n t k l ( ϕ l ( x i t ) , ϕ l ( x j t ) ) − 2 n s n t ∑ i = 1 n s ∑ j = 1 n t k l ( ϕ l ( x i s ) , ϕ l ( x j t ) ) (2) \begin{aligned}\hat{\mathcal{D}}_{l}^{m m d} &=\frac{1}{n_{s}^{2}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{s}} k_{l}\left(\phi_{l}\left(\boldsymbol{x}_{i}^{s}\right), \phi_{l}\left(\boldsymbol{x}_{j}^{s}\right)\right) \\&+\frac{1}{n_{t}^{2}} \sum_{i=1}^{n_{t}} \sum_{j=1}^{n_{t}} k_{l}\left(\phi_{l}\left(\boldsymbol{x}_{i}^{t}\right), \phi_{l}\left(\boldsymbol{x}_{j}^{t}\right)\right) \\&-\frac{2}{n_{s} n_{t}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{t}} k_{l}\left(\phi_{l}\left(\boldsymbol{x}_{i}^{s}\right), \phi_{l}\left(\boldsymbol{x}_{j}^{t}\right)\right)\end{aligned} \tag{2} D^lmmd=ns21i=1∑nsj=1∑nskl(ϕl(xis),ϕl(xjs))+nt21i=1∑ntj=1∑ntkl(ϕl(xit),ϕl(xjt))−nsnt2i=1∑nsj=1∑ntkl(ϕl(xis),ϕl(xjt))(2)
k l k_l kl 表示从深度神经网络的 l l l层中选择出来的核kernel
对比域差异(Contrastive Domain Discrepancy)
目的在于利用类信息,并度量跨域的类内和类间差异。
最小化类内域差异,使得类内样本点的特征表示更紧凑。
最大化类间与差异,以促使不同类的特征表示远离决策边界。
将上述两个联合就能提升自适应性能。
提出的对比域差异(CDD)是建立在条件数据跨域分布差异的基础上的。在对数据分布类型没有约束时(如边缘或条件),MMD能很好的度量 P ( ϕ ( X s ) ∣ Y s ) P(\phi(X^s)|Y^s) P(ϕ(Xs)∣Ys)与 Q ( ϕ ( X t ) ∣ Y t ) Q(\phi(X^t)|Y^t) Q(ϕ(Xt)∣Yt)之间的差异,即写作 D H ( P , Q ) ≜ s u p f ∼ H ( E X s [ f ( ϕ ( X s ) ∣ Y s ) ] − E X t [ f ( ϕ ( X t ) ∣ Y t ) ] ) H D_\mathcal{H}(P,Q)\triangleq sup_{f\sim\mathcal{H}}(\mathbb{E}_{\boldsymbol{X}^{s}}\left[f\left(\phi\left(\boldsymbol{X}^{s}\right) \mid Y^{s}\right)\right]-\mathbb{E}_{\boldsymbol{X}^{t}}\left[f\left(\phi\left(\boldsymbol{X}^{t}\right) \mid Y^{t}\right)\right])_{\mathcal{H}} DH(P,Q)≜supf∼H(EXs[f(ϕ(Xs)∣Ys)]−EXt[f(ϕ(Xt)∣Yt)])H。
对于两个类 c 1 , c 2 c_1,c_2 c1,c2(此两类可为同一类也可为不同类),令 μ c c ′ ( y , y ′ ) = { 1 if y = c , y ′ = c ′ 0 otherwise \mu_{c c^{\prime}}\left(y, y^{\prime}\right)=\left\{\begin{array}{ll}1 & \text { if } y=c, y^{\prime}=c^{\prime} \\0 & \text { otherwise }\end{array}\right. μcc′(y,y′)={10 if y=c,y′=c′ otherwise D H ( P , Q ) D_\mathcal{H}(P,Q) DH(P,Q)平方的核平均嵌入估计如下:
D ^ c 1 c 2 ( y ^ 1 t , y ^ 2 t , ⋯ , y ^ n t t , ϕ ) = e 1 + e 2 − 2 e 3 (3) \hat{\mathcal{D}}^{c_{1} c_{2}}\left(\hat{y}_{1}^{t}, \hat{y}_{2}^{t}, \cdots, \hat{y}_{n_{t}}^{t}, \phi\right)=e_{1}+e_{2}-2 e_{3}\tag{3} D^c1c2(y^1t,y^2t,⋯,y^ntt,ϕ)=e1+e2−2e3(3)
其中
e 1 = ∑ i = 1 n s ∑ j = 1 n s μ c 1 c 1 ( y i s , y j s ) k ( ϕ ( x i s ) , ϕ ( x j s ) ) ∑ i = 1 n s ∑ j = 1 n s μ c 1 c 1 ( y i s , y j s ) e 2 = ∑ i = 1 n t ∑ j = 1 n t μ c 2 c 2 ( y ^ i t , y ^ j t ) k ( ϕ ( x i t ) , ϕ ( x j t ) ) ∑ i = 1 n t ∑ j = 1 n t μ c 2 c 2 ( y ^ i t , y ^ j t ) e 3 = ∑ i = 1 n s ∑ j = 1 n t μ c 1 c 2 ( y i s , y ^ j t ) k ( ϕ ( x i s ) , ϕ ( x j t ) ) ∑ i = 1 n s ∑ j = 1 n t μ c 1 c 2 ( y i s , y ^ j t ) (4) \begin{aligned}e_{1} &=\sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{s}} \frac{\mu_{c_{1} c_{1}}\left(y_{i}^{s}, y_{j}^{s}\right) k\left(\phi\left(\boldsymbol{x}_{i}^{s}\right), \phi\left(\boldsymbol{x}_{j}^{s}\right)\right)}{\sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{s}} \mu_{c_{1} c_{1}}\left(y_{i}^{s}, y_{j}^{s}\right)} \\e_{2} &=\sum_{i=1}^{n_{t}} \sum_{j=1}^{n_{t}} \frac{\mu_{c_{2} c_{2}}\left(\hat{y}_{i}^{t}, \hat{y}_{j}^{t}\right) k\left(\phi\left(\boldsymbol{x}_{i}^{t}\right), \phi\left(\boldsymbol{x}_{j}^{t}\right)\right)}{\sum_{i=1}^{n_{t}} \sum_{j=1}^{n_{t}} \mu_{c_{2} c_{2}}\left(\hat{y}_{i}^{t}, \hat{y}_{j}^{t}\right)} \\e_{3} &=\sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{t}} \frac{\mu_{c_{1} c_{2}}\left(y_{i}^{s}, \hat{y}_{j}^{t}\right) k\left(\phi\left(\boldsymbol{x}_{i}^{s}\right), \phi\left(\boldsymbol{x}_{j}^{t}\right)\right)}{\sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{t}} \mu_{c_{1} c_{2}}\left(y_{i}^{s}, \hat{y}_{j}^{t}\right)}\end{aligned}\tag{4} e1e2e3=i=1∑nsj=1∑ns∑i=1ns∑j=1nsμc1c1(yis,yjs)μc1c1(yis,yjs)k(ϕ(xis),ϕ(xjs))=i=1∑ntj=1∑nt∑i=1nt∑j=1ntμc2c2(y^it,y^jt)μc2c2(y^it,y^jt)k(ϕ(xit),ϕ(xjt))=i=1∑nsj=1∑nt∑i=1ns∑j=1ntμc1c2(yis,y^jt)μc1c2(yis,y^jt)k(ϕ(xis),ϕ(xjt))(4)
(个人理解,就是在y的条件下,求其MMD)
将 y ^ 1 t , y ^ 2 t , ⋯ , y ^ n t t \hat{y}_{1}^{t}, \hat{y}_{2}^{t}, \cdots, \hat{y}_{n_{t}}^{t} y^1t,y^2t,⋯,y^ntt 写作 y ^ 1 : n t t \hat{y}_{1:n_{t}}^{t} y^1:ntt,则基于上述推导,得到CDD:
D ^ c d d = 1 M ∑ c = 1 M D ^ c c ( y ^ 1 : n t t , ϕ ) ⏟ intra − 1 M ( M − 1 ) ∑ c = 1 M ∑ c ′ = 1 c ′ ≠ c M D ^ c c ′ ( y ^ 1 : n t t , ϕ ) ⏟ inter , (5) \begin{aligned}\hat{\mathcal{D}}^{c d d} &=\underbrace{\frac{1}{M} \sum_{c=1}^{M} \hat{\mathcal{D}}^{c c}\left(\hat{y}_{1: n_{t}}^{t}, \phi\right)}_{\text {intra }} \\&-\underbrace{\frac{1}{M(M-1)} \sum_{c=1}^{M} \sum_{c^{\prime}=1 \atop c^{\prime} \neq c}^{M} \hat{\mathcal{D}}^{c c^{\prime}}\left(\hat{y}_{1: n_{t}}^{t}, \phi\right)}_{\text {inter }},\end{aligned} \tag{5} D^cdd=intra M1c=1∑MD^cc(y^1:ntt,ϕ)−inter M(M−1)1c=1∑Mc′=cc′=1∑MD^cc′(y^1:ntt,ϕ),(5)
(即可分为属于同一类和不同类,同一类让其分布差异尽可能小,不同类则分布差异尽可能大)
对比自适应网络(Contrastive Adaptation Network)
提取一般特征的卷积层具有更强的可转移性,而表现抽象和特定领域特征的全连接层则需要适应。
本文从ImageNet预训练网络(如ResNet)出发,将最后一个FC层替换为任务特定的FC层(即全连接层)。论文遵循一般方式,最小化最后的FC层的域差异,并通过反向传播对卷积层进行微调。于是,尚文提出的CDD可以很容易地作为FC层激活的适应模块纳入目标,作者命名为Contrastive Adaptation Network (CAN)。
总体目标。在deep CNN中,最小化多个FC层上的CDD,即最小化
D ^ L c d d = ∑ l = 1 L D ^ l c d d (6) \hat{\mathcal{D}}_{\mathcal{L}}^{c d d}=\sum_{l=1}^{L} \hat{\mathcal{D}}_{l}^{c d d} \tag{6} D^Lcdd=l=1∑LD^lcdd(6)
此外,通过有标签源域数据的最小化交叉熵来训练网络
ℓ
c
e
=
−
1
n
′
s
∑
i
′
=
1
n
′
s
log
P
θ
(
y
i
′
s
∣
x
i
′
s
)
(7)
\ell^{c e}=-\frac{1}{n^{\prime}{ }_{s}} \sum_{i^{\prime}=1}^{n^{\prime}{ }_{s}} \log P_{\theta}\left(y_{i^{\prime}}^{s} \mid \boldsymbol{x}_{i^{\prime}}^{s}\right) \tag{7}
ℓce=−n′s1i′=1∑n′slogPθ(yi′s∣xi′s)(7)
其中, y s ∈ { 0 , − 1 , . . . , M − 1 } y^s \in\{0,-1,...,M-1\} ys∈{0,−1,...,M−1}为 x s x^s xs 的真实标签。 P θ ( y ∣ x ) P_{\theta}\left(y \mid \boldsymbol{x}\right) Pθ(y∣x)表示在给定输入 x x x的情况下,以 θ θ θ 参数化网络时,标记为 y y y 的预测概率。
因此,总的目标函数如下:
min
θ
ℓ
=
ℓ
c
e
+
β
D
^
L
c
d
d
(8)
\min _{\theta} \ell=\ell^{c e}+\beta \hat{\mathcal{D}}_{\mathcal{L}}^{c d d}\tag{8}
θminℓ=ℓce+βD^Lcdd(8)
β \beta β是差异惩罚项的权重。
CAN优化
此部分讨论在CAN中优化CDD。框架图如下
上图为CAN的训练过程。为了最小化CDD,论文在通过聚类更新目标标签假设和通过反向传播自适应特征表示之间进行交替优化。在聚类中,根据目标样本当前的特征表示,对其采用球面Kmeans聚类。集群的数量等于底层类的数量,每个类集群的初始中心设置为同一类内源数据的中心。然后丢弃模糊数据(即远离附属聚类中心的数据)和模糊类(即在附属聚类中心周围包含少量目标样本的数据)。在特征自适应方面,将聚类阶段提供的标记目标样本与标记源样本一起通过网络实现其多层特征表示。采用域特有的FC层特征估计CDD (Eq.(5))。此外,对独立采样的源数据应用交叉熵损失。反向传播以最小化CDD和交叉熵损失(Eq.(8))适应特征并提供类感知对齐。
Alternative optimization (AO)
如式(5)所示,需要联合优化目标域标签假设 y 1 : n t t ^ \hat{y_{1:n_t}^t} y1:ntt^ 和特征表示 ϕ 1 : L \phi_{1:L} ϕ1:L。论文进行交替优化,即在每一个循环中,对于当前的特征表示,固定 θ \theta θ , 通过聚类更新目标域标签 y ^ t \hat{y}^t y^t。然后,基于更新后的目标域标签 y ^ t \hat{y}^t y^t ,最小化CDD,通过后向传播优化 θ \theta θ。
作者使用第一任务特定层的输入激活 ϕ 1 ( ⋅ ) \phi_1(·) ϕ1(⋅)来代表一个样本。例如,在ResNet中,每个样本都可以表示为全局平均池化层的输出,这也是下一个任务特定层的输入。
然后采用球面K-means对目标样本进行聚类,并贴上相应的标签,聚类数域潜在的类别数均为M。对于每个类,目标域的聚类中心
O
t
c
O^{tc}
Otc 初始化为源域的聚类中心
O
s
c
,
i
.
e
.
O
t
c
←
O
s
c
,
w
h
e
r
e
O
s
c
=
∑
i
=
1
N
s
1
y
i
s
=
c
=
ϕ
1
(
x
i
s
)
∣
∣
ϕ
1
(
x
i
s
)
∣
∣
,
1
y
i
s
=
c
{
1
if
y
i
s
=
c
0
otherwise
O^{sc},i.e.\ O^{tc}\leftarrow O^{sc},where\ O^{sc} = \sum^{N_s}_{i=1}\mathbf{1}_{y_{i}^{s}=c}=\frac{\phi_1 (x_i^s)}{||\phi_1 (x_i^s)||},\mathbf{1}_{y_{i}^{s}=c}\left\{\begin{array}{ll}1 & \text { if } y_{i}^{s}=c \\0 & \text { otherwise }\end{array}\right.
Osc,i.e. Otc←Osc,where Osc=∑i=1Ns1yis=c=∣∣ϕ1(xis)∣∣ϕ1(xis),1yis=c{10 if yis=c otherwise
作者应用了余弦不相似性度量征空间中点a和点b之间的距离,
i
.
e
.
d
i
s
t
(
a
,
b
)
=
1
2
(
1
−
<
a
,
b
>
∣
∣
a
∣
∣
∣
∣
b
∣
∣
)
i.e. \ dist(a,b)=\frac{1}{2}(1-\frac{<a,b>}{||a||\ ||b||})
i.e. dist(a,b)=21(1−∣∣a∣∣ ∣∣b∣∣<a,b>)。
于是聚类过程迭代如下:
- 给目标域打伪标签: y ^ i t ← arg min c d i s t ( ϕ i ( x i t ) , O t c ) \hat{y}_i^t\leftarrow\argmin_c dist(\phi_i(x_i^t),O^{tc}) y^it←cargmindist(ϕi(xit),Otc)
- 更新聚类中心: O t c ← ∑ i = 1 N t 1 y i t = c = ϕ 1 ( x i t ) ∣ ∣ ϕ 1 ( x i t ) ∣ ∣ O^{tc}\leftarrow \sum_{i=1}^{N_t}\mathbf{1}_{y_{i}^{t}=c}=\frac{\phi_1 (x_i^t)}{||\phi_1 (x_i^t)||} Otc←∑i=1Nt1yit=c=∣∣ϕ1(xit)∣∣ϕ1(xit)
- 直到收敛或达到设置的最大聚类步数
聚类后,每个目标域都有一个对应的伪标签。但对于一些距离相应的聚类中心距离较远的伪标签,选择抛弃。作者选择一个子集
T
~
=
{
(
x
t
,
y
^
t
)
∣
dist
(
ϕ
1
(
x
t
)
,
O
t
(
y
^
t
)
)
<
D
0
,
x
t
∈
T
}
\tilde{\mathcal{T}}=\left\{\left(\boldsymbol{x}^{t}, \hat{y}^{t}\right) \mid \operatorname{dist}\left(\phi_{1}\left(\boldsymbol{x}^{t}\right), O^{t\left(\hat{y}^{t}\right)}\right)<D_{0}, \boldsymbol{x}^{t} \in \mathcal{T}\right\}
T~={(xt,y^t)∣dist(ϕ1(xt),Ot(y^t))<D0,xt∈T},其中,
D
0
∈
[
0
,
1
]
D_0 \in[0,1]
D0∈[0,1]为一个常数。
同时,每个子集都应该有一个最小的样本数,
C
T
e
=
{
c
∣
∑
i
∣
T
~
∣
1
y
^
i
t
=
c
>
N
0
,
c
∈
{
0
,
1
,
.
.
.
,
M
−
1
}
}
,
N
0
\mathcal{C}_{T_{e}}=\left\{c \mid \sum_{i}^{|\tilde{\mathcal{T}}|} \mathbf{1}_{\hat{y}_{i}^{t}=c}>N_{0}, c \in\{0,1,...,M-1\}\right\},N_0
CTe={c∣∑i∣T~∣1y^it=c>N0,c∈{0,1,...,M−1}},N0为常数,不满足此条件则此类不进行此迭代。
在训练开始时,由于领域漂移,它有可能排除部分类。然而,随着训练的进行,越来越多的课程被包括在内。其原因有两个方面:1)随着训练的进行,模型变得更加准确;2)得益于CDD惩罚,类内域差异变小,类间域差异变大,从而能够考虑到难(即模糊)的类。
Class-aware Sampling(CAS)
在传统的深度神经网络训练中,每次迭代通常只对一小批数据进行采样,而不进行类的区分。然而,对于计算CDD来说,它的效率会较低。例如,对于类C,在迷你批处理中可能只存在来自一个域(源或目标)的样本,因此无法估计类内差异。
作者采用CAS策略来实现CDD对网络的有效更新。从类 C T e C_{T_e} CTe随机选择子集 C T e ′ C_{T_e}^{'} CTe′,然后对于 C T e ′ C_{T_e}^{'} CTe′中的每个类进行在源域和目标域上的采样。