(Paper Reading) Future Research Directions on Domain Generalization

最近在研究领域泛化,想找个方向做点东西,于是整理了最近看的一篇综述Domain Generalization in Vision: A Survey[1],希望能从中有所收获。

发展方向

作者从三个方面进行了总结:模型结构学习方法评价基准(Benchmark)

模型结构

动态结构(Dynamic Architectures)

在源域训练好后,神经网络的参数通常就固定了下来,充当一个特征提取器,直接应用在目标域中。但是目标域的数据分布可能会和源域差异很大,参数固定的特征提取器可能提取不到有效的特征。针对这个问题,一种可能的解决思路是构建动态神经网络(Dynamical Neural Networks),让网络的结构和权重与输入数据挂钩。

这是我很感兴趣的一个方向,让动态变化的网络结构处理动态变化的数据分布。在领域泛化问题中,就是处理领域的变化, Domain Shift,更进一步,甚至可以用于处理持续领域泛化(Continuous Domain Generalization)问题。但难点在于:1. 选用怎样的动态网络结构?2. 如何处理领域泛化目标域中的无标记数据?3. 如何利用无标记数据动态改变网络结构?4. 是网络结构整体动态变化还是部分动态变化?

自适应归一化层(Adaptive Normalization Layers)

自适应归一化层动态改变网络权重(准确地说,是CNN中BN层的权重),不改变网络结构。神经网络BN层可以表示为:

其中,$(\gamma,\beta)$是可学习的参数,$(\mu,\delta)$是训练集上的移动平均和移动标准差,这些参数都和训练数据的分布有关。如何让归一化层的参数自适应目标域中的数据分布,是一个可能的方向。

相比动态结构方法,自适应归一化层方法更加简洁,但是目前已有一篇相关的工作了[2]

学习方法

这一部分可以挖的坑是最多的,当然,也是最卷的(笑~

无领域标签学习(Learning without Domain Labels)

当前的大多数领域泛化方法在训练时需要知道不同域的领域标签,即域是事先划分好的,域与域之间的界限很明确。但是在现实场景中,域的标签是很难获得和定义的。这个时候,虽然我们有很多标记好的数据,但是却不知道这些数据可以被划分到哪些域中。在这种设定下,当前的SOTA方法很难直接应用。虽然目前已有了一些工作,但是仍不尽如人意。

一开始我并不很清楚这个设定是否有意义,因为这相当于learning in the wild(虽然有标签,但没有域信息),如何定义Target Domain?可能需要再看下综述中提到的几篇论文。

新域数据生成(Learning to Synthesize Novel Domains)

与Out-of-distribution(OOD) Generalization相关的研究[3]表明,增加域的多样性有利于提高OOD检测的泛化性。但是,域是无穷无尽的,不可能收集到所有的域数据。因此,学会如何生成新域数据是一个可能的方向。

这个方向已经有不少工作了,但是问题的实质并没有得到解决,依靠增加训练集的多样性来提高泛化能力,在我看来,成本还是太高,not my taste~

避免学习捷径(Avoiding Learning Shortcut)

捷径学习(Shortcut Learning)指的是神经网络偏好学习简单的特征,这些简单特征能在训练集上表现得很好,但很难学到与任务相关的特征[4],从而影响泛化性。例如,区分不同颜色的数字时,神经网络可能更多地学到颜色相关的特征,而不是形状和轮廓相关的特征。这是一种bias,理所当然地会影响泛化性。在领域泛化中,每个域都有自己特定的bias,如果神经网络只学到了每个类的bias,那么泛化性能绝对大打折扣!

初看是一个新颖的角度,但细想,这不就是解决领域泛化中常谈的domain-specific bias问题吗?不过后来再仔细想了下,这里的bias可能比较特殊,是能够引发shortcut learning的bias,是与任务无关但却造成影响的bias,和那些数据不平衡之类的bias有点不同。我对这个方向还是很感兴趣的,得看下文献中是如何定义shortcut的~

因果表征学习(Causal Representation Learning)

因果推断+表示学习 我赌五毛钱,绝对是未来蓬勃发展的方向,是迈向下一波人工智能浪潮的关键(这里佩服周Sir的眼光!)

当前主流的表示学习方法是为了学到数据$X$到标签$Y$的一个映射$P(Y|X)$,但是这样学得的表示难以处理OOD的数据。一种可能的解决方法是通过生成模型,如autoencoder,直接建模$P(X,Y)$,这可能会提高鲁棒性和泛化性。

表示学习相关的内容是好学的,但因果推断涉及的东西很多,很深,虽然这是一个很好的方向,但本人太菜了,在基础没有打牢之前,我是绝对不会碰的~

利用辅助信息(Exploiting Side Information)

辅助信息可以理解为一些有用的场外因素,比如物体检测,大部分人用的是RGB信息,但如果能够得到图像的深度信息RGB-D,那么将提高检测的准确率。在领域泛化中,近期有些工作挖掘了数据的属性信息,比如颜色、形状、条纹等,这些属性信息是通用的,与domain-specific bias无关!在zero-shot learning中,挖掘属性信息已经成为了检测新类的一种常用方法。

看完后有一个问题:如何确保利用到的辅助信息与domain-specific bias无关?就算很通用的属性,比如颜色,也要分场景吧?进一步,如果要保证辅助信息的通用性,那么前深度学习时代运用的特征比如HoG是否可以有用武之地?

迁移学习(Transfer Learning)

这里的迁移学习特指Synthetic-to-real场景下的迁移学习,即从真实数据集上训练好的模型,要能够迁移到下游合成的数据上,同时,要能够依然保持真实数据集上学到的知识,说白了,就是持续学习(Continual Learning)。

没搞懂这个场景和持续学习的区别所在,以及它为啥是一个realistic and practical的设定?不过yysy,之前搞过一段时间的持续学习,说不定可以挖坑(笑~

半监督领域泛化(Semi-Supervised Domain Generalization)

经典A+B

不说了,看名字都猜得到干啥,很卷的一个方向

开放域泛化(Open Domain Generalization)

可以认为是一种新的设定,源域是异质的,即域与域之间不仅数据分布不同,而且含有不同的标记空间,针对目标域,模型要能够识别出见过的类别,并且检测出没有见过的类别。

这是一个和Heterogeneous Domain Generalization和Open-set Recognition都有关的一个问题,难度可想而知。

评价基准

持续领域泛化学习(Incremental Learning + Domain Generalization)

以往领域泛化的工作利用到的训练数据是固定的,不会发生变化,但是在实际场景中,训练数据可能是动态到来的,这个时候,就需要针对源域的持续领域泛化学习。但是,有如下3个问题需要解决:1)在新到来的数据上,怎样fine-tune模型,而不是重新训练一遍?2)怎样避免灾难性遗忘以及过拟合新数据?3)怎样判断新数据对模型泛化性能的影响,有益还是有害?

我认为这是一个很有意义的方向,如果能有一个好的方案,将有很大的现实意义,值得关注!

异质域变化(Heterogeneous Domain Shift)

当前领域泛化相关的工作,源域和目标域高度相关,比如只是一些颜色反转、图像旋转之类的,很少考虑到异构变化,比如源域数据是物体的照片、油画和简笔画,但是目标域却是新视角下的图片。

这个设定虽然很难,但却对现实应用很有意义。

参考