Rozantsev, Artem, Mathieu Salzmann, and Pascal Fua. “Beyond sharing weights for deep domain adaptation.” IEEE transactions on pattern analysis and machine intelligence 41.4 (2018): 801-814. (Domain Adaptation 用于分类、人脸关键点检测)
Loss Function
主要是三部分: 分类损失(Eq. (2) Eq. (3)), Weight Regularizer (Eq. (4)), Maximum mean discrepancy (Eq. (5))。 λ w \lambda_w λw和 λ u \lambda_u λu都取为1。
网络结构
对于不同数据库似乎采用了不同网络结构,总体上是几个卷积层后面跟上全连接层
很多Domain Adaptation 工作将用于处理target domain和source domain两个域的CNN进行weight sharing (有个前提是这两个CNN的网络结构相同)。
文章对部分层进行weight sharing,另外对其余层加以限制:
实现方式—weight regularizer:
有L2 norm和指数形式两种实现方式:
也就是说: 对于两个网络间不进行weight sharing的各层,让它们的参数之间满足线性关系。
否则作为损失进行惩罚。因为虽然两个网络不进行weight sharing,但毕竟参数还是有所关联的。
文章称这种做法model the domain shift。
实现方式:
每一层的a初始化为1,b初始化为0。
同时a和b是可学习的参数。
我认为是在loss反向传播时,更新完各层参数后,再对每一层更新一次a和b。
通过后续实验,文章证明了这种部分参数共享、另一部分相关的网络结构优于以往一些全部参数共享的方案。
Maximum mean discrepancy:
上图中,
f
i
f_i
fi表示特征空间里的特征,
ϕ
(
f
i
)
\phi(f_i)
ϕ(fi)表示通过某种方式映射到 Reproducing Kernel Hilbert Space (RKHS)。这种映射方式为止,但是可以用核函数表示:
把Eq. (8)展开,并用核函数表
k
(
f
i
a
,
f
j
b
)
k(f_i^a,f_j^b)
k(fia,fjb)示两个
ϕ
(
f
i
a
)
ϕ
(
f
j
b
)
\phi(f_i^a)\phi(f_j^b)
ϕ(fia)ϕ(fjb)之间的乘积
k
(
u
,
v
)
=
e
−
∥
u
−
v
∥
2
/
σ
k(u,v)= e^{ -\| u-v \|^2 / \sigma}
k(u,v)=e−∥u−v∥2/σ
文章说 σ \sigma σ的取值对性能影响不大, σ \sigma σ取0.1。
根据Maximum Mean Discrepancy(MMD) 决定哪些层不共享:
试验了若干种组合,发现MMD值低的配置,在验证集上有较高的AP。
最后得出对于飞机数据集,前面几个层分开学习,后面几个层权值共享的方式效果较好。
但是对于office数据集,情况大大相反: 前面几个层共享,后面几个曾分开学习效果较好。
文章分析了其中的原因:
飞机数据集两个域之间低层信息有差异,导致最好需要分开学习底层。
office数据集里面的物体本来就有所不同,最好的方式是只让最后两层的权值不同。
一个比较重要的细节:
直接使用source domain (这儿指synthetic examples)和target domain的数据一起训练效果会下降。
另外如果去掉weight regularizer项,效果会变差,文章将这个现象解释为对target domain的数据过拟合。 (想象某些层的参数与用于处理source domain的网络里相应的层参数没有什么关系了,但实际上source domain和target domain又是有很强关系的,那么似乎可以说这样学出的参数不太合理)
剩余的一些细节:
在进行训练之前,网络都经过pretrained。
分类损失采用 logistic loss or the hinge loss。