DANN:Domain-Adversarial Training of Neural Networks

DANN原理理解

DANN中源域和目标域经过相同的映射来实现对齐。

 DANN的目标函数分为两部分:
 1. 源域分类损失项
 2. 源域和目标域域分类损失项
 

1.源域分类损失项

对于一个m维的数据点X,通过一个隐含层Gf,数据点变为D维:

            DANN:Domain-Adversarial Training of Neural Networks

然后经过一个分类层Gy得到分类结果:

          DANN:Domain-Adversarial Training of Neural Networks

这个点的源域分类损失定义为:

                  DANN:Domain-Adversarial Training of Neural Networks

于是源域的分类损失项定义为:

              DANN:Domain-Adversarial Training of Neural Networks

2.域分类误差

域分类时,源域的标签是0,目标域的标签是1,最大化域分类误差就是让域判别器分不清源域和目标域,如此这样源域和目标域在分布上就变得对齐了。

对于任意一个来自源域或者目标域的点,它通过域判别层后的结果是:

                     DANN:Domain-Adversarial Training of Neural Networks

这个点的域分类误差定义为:

                   DANN:Domain-Adversarial Training of Neural Networks

交叉熵函数:DANN:Domain-Adversarial Training of Neural Networks ,把负号提入对数函数内就是上式的形式。

域分类误差项定义为:

                DANN:Domain-Adversarial Training of Neural Networks

DANN目标函数

DANN目的是最小化源域分类误差项,最大化域分类误差项,但整体目标函数是最小化问题,所以在域分类误差项前加了负号,并且引入超参数λ作为权重平衡参数。

           DANN:Domain-Adversarial Training of Neural Networks

DANN的算法流程图如下:

DANN:Domain-Adversarial Training of Neural Networks

算法步骤如下:


DANN:Domain-Adversarial Training of Neural Networks