在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。
地址:https://www.zhihu.com/people/zyf-98-4
01
Domain Adaptation Foundations
传统ML:训练集数据集独立同分布,作为transfer-learning的子问题,最好先了解一下transfer-learning。 https://zhuanlan.zhihu.com/p/270593259 在domain Adaptation 的问题中,常见的setting如下,目标域与源域分布不同,域上执行的任务相同(比如都是分类任务),而且目标域没有或者只有少量的标签,这也就造成了unsupervised或者semi-supervised的问题。这里的主要内容是关于同质的,也就是target和source的数据类型一致。 02
Domain Adaptation Methods Overview
我们的target只有少量或者根本没有标签,因此分类器(或其他model)一般是在source domain上进行训练的,而我们的目标是target domain得到的特征也能输入该分类器,并得到很好的效果,那么自然而然我们需要让两个domain的特征尽可能接近。但是由于domain shift,传统model提取的target和source domain的特征差距很大,因此这里的解决方案是将两个不同的feature space投影到同一个。
2.1: Discrepancy-based methods 使用预定义的统计量,计算taget/source domain的距离,希望在统计上的距离尽可能的接近。这一部分的改进通常是找各种不同的统计量和不同的计算方法。 2.1.1 Deep Domain Confusion [1](MMD)-2014 两个loss,分类与domain loss,重点在于MMD这个东西,减小两个DNN学到的feature之间的距离,同时保证source domian分类器本身的性能。 2.1.2 Deep Adaptation Networks [2] (DAN)-2015 相比于上一篇MMD,DAN在多个层上计算MMD距离 2.1.3 CORAL, CMD CORAL: 使用second-order moment计算距离(DDM是一个均值的概念,即first-order), CMD:更加延伸,使用了k-order moment计算距离 2.2: Adversarial-based methods* 通常有一个domain的分类器,如果分类器很强,特征仍然能够混淆它,说明我们学到的特征基本在同一个特征空间了。 2.2.1 Simultaneous Deep Transfer Across Domains and Tasks [3] Maximum Domain Confusion:使用域分类器使得提取的target/source特征尽可能接近。做法就是交替优化两个矛盾的目标: 固定住特征提取器,使得domain分类器得到的结果尽可能接近真实值。 固定住domain分类器,优化特征提取器,使得分类器不能分辨图片来自哪个domain。 Transfer Label Correlation:对于拥有相同标签的源域/目标域数据,希望他们输出的label的分布尽可能相同(交叉熵)。具体来说 将source domain中所有属于C类的图片的输出分布求和得到该类的输出分布 , Target Domain中有C标签的数据可以得到输出分布 ,希望这两个分布越接近越好。 最终的损失函数就是分类损失+domain confusion loss+soft label correlation loss, 2.2.2 Domain Adversarial Training of NN(DANN) https://zhuanlan.zhihu.com/p/270593259 与2.2.1的联系:使用了gradient reversal layer避免了上面分步训练的情况,不需要fix一个去训练另一个。 sample source,进行图片分类与域分类。 2.2.3 PixelIDA setting:unsupervised,从model的功能来看,他可以分为三个部分 一个生成器,输入噪声与原图像,生成该图像在目标域的图像。 分类器,不同domain的图片输入进来需要得到同一个分类结果。 那为什么是“pixel”呢?上图中不同domain差距非常大,直接长得都不一样了,但是通常长相还是比较类似的(high-level的结构还是比较像的),主要是图像光照,颜色不太一样(low-level的特征),这才是这篇文章关注的点。 2.3: Reconstruction-based methods 这里的问题是,我们如何知道我们提取的特征包含了足够的信息:使用重构损失,如果能重构的很好,说明信息很充分。(?重构不也包含了domain shift吗) Deep Separation Networks--NIPS 2016 亮点:disentanglement, shared/exclusive features 私有的encoder抽取domain-specific的特征,共享的encoder抽取的特征则是domain-invariant的。 他的训练过程还是蛮有意思的,首先为了disentanglement,我们需要private/shared encoder提取出来的特征相似度尽可能小,所谓的相似度其实就是向量内积。所以这里对两个 的特征矩阵求向量内积再求F范数之和。 类似的我们最大化encoder抽取的source/target domain之间的距离(上面的MMD距离就可以)。最后,我们求出来的feature必须包含足够的信息(可以重构回原有的图像),因此我们会给一个重构损失(source和target都需要计算重构损失),然后source domain再额外计算一个分类损失即可。 03
DA Applications
3.1 Image to Image Translation 类似于cycle-GAN的形式,https://zhuanlan.zhihu.com/p/52583263 3.2 Semantic Segmentation 3.2.1 AdaptSegNet 有标签的仿真数据(游戏街景)与无标签的真实数据(真实街景),结构非常简单,就是网络共享参数,source domain的分割结果可以直接计算分割损失,source+target图像的分割结果通过分类器计算判别损失,希望两个domain的分解结果分布尽可能近。
3.2.2 CBST 提出了pseudo label的概念,迭代训练,终于摆脱了之前固化的框架。自步学习分为以下两个步骤 先使用source domain的数据训练一个比较好的分割器,使用分割器对target domain的img进行分割(打标签),挑选我认为可信的label在target上进行监督训练。 首先我们每个pixel都会输出它属于哪一类的概率,我们将softmax之后概率最大的那个类别拿出来,放入一个数组中。 将所有pixel最大预测概率组成的数组进行排序,根据超参数 选前 的label作为可信的label。 L1正则化:避免pseudo label全部都是0. 但是这里会有一些问题,对于一些很难分辨的类,我们的pseudo label总是指向其他类或者概率很低,那么我们永远没有机会对这些类进行优化。作者提出了class-balanced 的训练方法,即每个类维护一个array:
除此之外,作者还引入了一个比较强的先验:即很多类他们出现在图中的特定位置,比如天空,地面等,因此如果我们分类分到地面,而且位置在图像下侧左右,显然他的置信度比出现在图上方高,因此通过先验对pseudo label进一步精调。 https://www.cnblogs.com/zi-wang/p/13070322.html 3.3 Person Re-id--SPGAN https://zhuanlan.zhihu.com/p/115061674 两个不同的域 duke 与 market1501。只有源域拥有标签。comptuer:SPGAN两个不同的域 duke 与 market1501。只有源域拥有标签。 目的是将源域的风格transfer到目标域的风格来进行训练、 因为要保持图片ID,在CycleGAN中引入了孪生网络。在训练过程中Cycle-GAN学习两个域的映射函数,孪生网络约束映射函数的空间。对于CycleGAN而言,有三个损失 Adversarial loss:从源域 转到目标域 , 与目标域风格尽可能接近,或者相反,反正这里是提升分类器 识别自己domain图像的能力。 Cycle Loss:从源域 转到目标域 再转回源域 , 尽可能像。 Target Domain Identity Constraint: 源域的图像 丢进 仍然是 。
SiaNet: contrastive loss,转过去之后同一个id的图像要尽可能像,不同id的图像则要保持比较远。 其中 是一对输入,d是两个输入的embeddings的欧式距离,i表示是否是positive pairs。输入向量的选择:对positive pairs,选择 与 迫使网络把两个图片拉近;对negative pairs,选择 与 。 04
Common Trick
Adversarial Training:学习域无关特征 最小化target/source之间的域差异:共享隐变量空间 https://www.youtube.com/watch?v=-DQBMAULXX8&ab_channel=Hung-yiLee 05
Theory Analysis[4]
https://zhuanlan.zhihu.com/p/50710267 https://blog.csdn.net/a358463121/article/details/86627290 https://zhuanlan.zhihu.com/p/50710267 我们用如下的数学形式刻画在二分类任务上的Domain Adaptation问题。首先,我们将输入集记为 ,标注空间是一个概率空间,因为是二分类问题,我们的标注集就是 区间。在 上,我们定义一个domain是由 所构成的一个对。其中, 是一个分布函数,刻画输入集XX上每个样本的出现概率,而 是一个标签函数, ,表示从输入集到标注集的一个映射,其中, ,可以是 区间内的任意实数值,表示样本 的标签为1的概率。一般而言,我们用字母 区分源域(Source Domain)和目标域(Target Domain),而两个域的数学表示分别记为 和 . 给定两个域之后,我们希望学习一个函数 预测输入所对应的标签,我们把model学到的函数 称之为一个假设(hypothesis),将 的差距记作 在源域上我们记作 ,但是通常我们的样本数目是有限的,因此我们对上式进行估计得到 ,同样也可以得到 。接着就需要设计一个度量准则,度量通过 映射到特征空间的特征分布 、 之间的距离。这个距离必须满足的条件是:能通过有限个样本数据计算。 其中花体 是波莱尔集, 是其一个子集。意思就是取遍所有 的子集,找出在 、 上的概率差的最大值。 两个高斯分布分别代表源域和目标域的特征分布。由于要取上确界,所以找到的集合 为 。 , , XOR operator(直观理解一下就是,同一个 同一个 ,两个概率分布预测值的最大差距) 其中,函数集合 只要取的比 集合 复杂即可,这个很容易达到,我们只需把神经网络设计的复杂一些就行。 从最后的式子来看,如果我们能一个在复杂度足够(能够实现比异或更复杂的操作)的函数类 中,找到一个函数 ,使得 将来自于 的特征 都判为1,将来自于 的特征 都判为0的概率最大,那么我们就能得到 的上界。 好了,有了度量准则,那么下面就要介绍最重要的一个定理了。 Theorem: Let R be a fixed representation function from to , is a binary function class, for every : 这个定理说的是,我们训练得到的分类函数 在目标域数据上的错误率,被三个项所限定。第一项是 在源域上的错误率。第二项是通过 将源域、目标域数据都映射到特征空间后,两者特征分布的距离, 即 距离。第三项作为常数项,表示假设空间的合理程度(当假设空间 一旦给定, 就是一个常数项,因此无需过多关注)。那么,有没有办法让域之间的距离变得尽可能小呢?一个很自然的想法是通过特征空间过渡,如果我们设计两个映射,第一个映射将源域与目标域都映射到一个特征空间,在这个特征空间上,源域与目标域无法区分。然后我们再在特征空间上构造分类器,这样就能有效解决域适应问题。 可以看出,要降低 ,表示函数 (即 )承担两项任务,需要降低 在源域上的错误率,还需要减小 距离。而 (即 )承担一项任务目标,就是降低在源域上的错误率。 对于 (即 ),要做的就是尽量能取到 中的上确界,让自己尽量能代表这个距离。其实,我个人想法,这边严格来说并不存在对抗, 并不是一个坏蛋想要增大我们的错误率,它只是在默默的做自己本职的工作,想取到上确界,让自己能代表这个 距离。而 也不是去妨碍 去取上确界,而且想减小上确界本身。 到此,三个网络为什么这么设计应该就很清楚了叭!(至少我觉得讲清楚了233333,当然,最重要的定理的证明我省略了,有兴趣看下面参考的论文。) 如果引入VC维那一套关于泛化误差的理论,可以得到如下结论: 可以通过给定数据计算。 表示源域和目标域数据个数。 Theorem: Let R be a fixed representation function from to , is a binary function class, for every : 令 表示特征空间 中被 判为类别1的那些特征的集合。 这里的 是亦或,也就是 意见不一致的特征组成的集合,即: 所以为什么不等式(1)成立?因为第一项 是 的错误率,包含 意见一致时的判断错误的情况,第二项是意见不一致时的概率,包含 意见不一致时 判断错误的概率。所以 所有判断错误的概率,都包含在后面两项中! 这一步就没什么好说的了,就是一个数的绝对值大于等于其本身。 不等式(2)的第二项 是在源域上, 意见不一致的概率。一旦意见不一致,那么必然有一方是错的,所以这项必然小于 和 的错误率之和: 参考
[1] https://arxiv.org/abs/1412.3474
[2] http://proceedings.mlr.press/v37/long15
[3] https://zhuanlan.zhihu.com/p/30621691
[4] http://www.fenghz.xyz/Domain-Adaptation-A-Survey/
本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。
“综述专栏”历史文章
更多综述专栏文章, 请点击文章底部“阅读原文 ”查看
分享、点赞、在看,给个三连击呗!