Maximum Classifier Discrepancy for Unsupervised Domain Adaptation
左边是之前的分布匹配方法:
用到一个域分类器,一个task-specific分类器。这个task-specific分类器用于把从特征提取器提取的特征进行分类。
欺骗域分类器,域分类器分辨不出来哪些是原域样本,哪些是目标域样本时,原域和目标域的分布对齐完成。
概括来说,之前的方法是特征提取器(这里叫特征生成器)和与判别器之间进行对抗。
右边是本文的分布匹配方法:
用两个task-specific分类器来把原域中的两个类分开,然后把目标域里的样本分别对应到相应的类里。
概括来说,本文的方法是特征生成器和两个task-specific分类器之间进行对抗。
这两个分类器有两个作用:一是把原域样本正确分类,二是用于发现那些类别不明的目标域样本。
二者之间如何形成对抗的?
特征生成器努力为目标域样本生成具有辨别力的特征,以方便分类器把目标域的类别判别出来;
而分类器则努力去揪出那些类别不明的目标域样本,即文中提到的target samples outside the support of the source。
论文主体
F1和F2是分类器,文中假定它们能把原域样本正确分类。对F1和F2进行不同的初始化,以保证二者是不同的分类器。
Figure 2中画黑线的棕色区域是Discrepancy Region,分类器F1把该区域中的目标域样本分到类B里,分类器F2则把该区域中的目标域样本分到类A里。这些画黑线的棕色区域里的样本,就是文中说的target samples outside the support of the source.
由图2可知,target samples outside the support of the source被分类器F1和F2分出的结果是不一样的,分类器的作用之一就是努力找出这些样本。换句话说,就是努力最大化图2中的Discrepancy Region。
损失函数
如何把最大化图2中的Discrepancy Region用损失函数来表示出来呢?
用p1(y|x)表示分类器F1对输入x的K维概率输出,用p2(y|x)表示分类器F2对输入x的K维概率输出。
用d(p1(y|xt),p2(y|xt))来表示分类器F1和F2对目标域样本的不同分类结果之间的差异,即Discrepancy Region的数学化表示,文中称它为discrepancy。
无论何时,原域带标签的样本总是会用得到的,文中用这些样本来训练G,F1,F2。
训练过程
文中把训练过程划分成3个阶段: 即Step A,B,C
Step A是上面提到的用原域带标签的样本训练G,F1,F2。
Step B,C如下图:
特征生成器G和分类器F1,F2的对抗具体体现在对discrepancy的不同操作上,F1和F2努力让discrepancy最大,而G则努力让discrepancy最小。
Step B损失函数具体表示如下:作者说不加分类损失效果很差,于是加上了分类损失。
Step C损失函数具体表示如下