在前面介绍的模型中,一般咱们都会假定练习材料和测验材料契合相同的散布,这样模型才能够有较好的作用。而假如练习材料和测验材料是来自于不同的散布,这样就会让模型在测验集上的作用很差,这种问题称为Domain shift。那么关于这种两者散布不一致的状况,称练习的材料来自于Source Domain,测验的材料来自于Target Domain。
那么关于范畴改变的问题,具体的做法跟着咱们关于方针范畴的了解程度不同而不同,主要有以下几种状况:
- 咱们当前具有少数方针范畴的样本且含有标示:具体做法是取其间的一小部分去“微调”练习好的模型,但要注意不能够练习太多次迭代否则或许会对小部分的样本产生过拟合
- 咱们具有方针范畴的很多材料可是没有标示
- 咱们具有很少数的方针范畴的材料且没有标示
- 咱们依据关于方针范畴没有认识与了解
那咱们关注的主要是第二种状况,它是咱们现实生活中的常见状况。那么最根本的主意是咱们能不能练习一个特征提取器,它能够承受练习集和测验集的样本,然后输出是对这些样本的要害特征进行提取,例如下图的比如中便是去除掉颜色的影响,提取它作为数字最要害的特征。
Domain Adversarial Training
这个主意是依据上面说的根本主意之上,可是它没有专门地去练习一个特征提取器,它只是在本来的模型上,划分一部分为特征提取器,另一部分为标签猜测器,如下图:
那么在这个模型中,假如输入的是练习集的图片,咱们能够经过其输出成果与实在成果之间的穿插熵来进行练习,可是假如输入是测验集的图片,由于没有标签就无法来调整参数,但这时就要想到咱们的特征提取器。
经过特征提取器处理之后得到的向量,咱们是期望练习集得到的向量散布,和测验集得到的向量散布是没有差异的,如下图:
那么怎样让这两个散布之间越挨近越好呢?这时分就想到了对抗的思想,咱们能够参加一个范畴分辩器,它的输入便是特征提取器的这个输出向量,而输出便是该向量是来自于练习集仍是测验集,因此咱们能够将特征提取器看成是生成器,将范畴分辩器看成是辨认器,特征提取器是不断调整参数来骗过范畴分辩器,而范畴分辩器则不断学会来区分,如下图:
可是咱们要考虑到一个问题:有没有或许这样会使得特征提取器学习到不管我得到什么样的输入,我都输出如出一辙的向量(例如零向量)这样你必定无法分辩?或许会存在这个问题,可是假如真的只生成如出一辙的向量,那么后边的标签猜测器也就无法做出猜测了!因此咱们能够经过标签猜测器的输出来避免这种状况的产生!
假定特征提取器的参数为f\theta_f,标签猜测器的参数为p\theta_p,范畴辨别器的参数为d\theta_d,而L为标签猜测器猜测成果与实在成果之间穿插熵算出来的损失函数,LdL_d为范畴辨别器分辩的时分的损失函数,那么各自的练习方针为:
第三个公式标明特征提取器一方面是期望能够下降后边猜测的误差,另一方面是为了让范畴辨别器无法分辩,从而来使得两个散布愈加挨近。
Limitation
假定咱们当前样本的类别有两类,那么关于有标签的练习集咱们能够明显地划分为两类,那么关于没有标签的测验咱们期望它的散布能够和练习集的散布越挨近越好,如下图的右图:
那么在这个思路上进行拓展的话,关于咱们方才手写识别的比如,咱们输入一张图片得到的是一个向量,其间含有属于每一个分类的概率,那咱们期望的是这个测验集的样本离分界线越远越好,那就代表它得到的输出向量要愈加集中于某一类的概率,不能够各个分类的或许性都差不多,即:
那么上述主意的问题在于,有没有或许练习集和测验集的分类依据便是不同的呢?例如练习集中能够分为老虎和狮子两类,而测验集还有别的的狼呢?如下图:
那么这也是一个值得研讨的问题。
其他状况
除了上述介绍的状况,咱们关于测验集的了解程度还有其他的状况,例如咱们只具有很少数的测验集而且还没有标签,甚至于说咱们关于测验集什么都不知道。这些景象会愈加的杂乱,现在也仍然处于研讨之中