DANN:Domain-Adversarial Training of Neural Networks
DANN原理理解
DANN中源域和目标域经过相同的映射来实现对齐。
DANN的目标函数分为两部分:
1. 源域分类损失项
2. 源域和目标域域分类损失项
1.源域分类损失项
对于一个m维的数据点X,通过一个隐含层Gf,数据点变为D维:
然后经过一个分类层Gy得到分类结果:
这个点的源域分类损失定义为:
于是源域的分类损失项定义为:
2.域分类误差
域分类时,源域的标签是0,目标域的标签是1,最大化域分类误差就是让域判别器分不清源域和目标域,如此这样源域和目标域在分布上就变得对齐了。
对于任意一个来自源域或者目标域的点,它通过域判别层后的结果是:
这个点的域分类误差定义为:
交叉熵函数: ,把负号提入对数函数内就是上式的形式。
域分类误差项定义为:
DANN目标函数
DANN目的是最小化源域分类误差项,最大化域分类误差项,但整体目标函数是最小化问题,所以在域分类误差项前加了负号,并且引入超参数λ作为权重平衡参数。
DANN的算法流程图如下:
算法步骤如下: