Press "Enter" to skip to content

领域泛化最新综述

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

0 导读

 

领域泛化(Domain Generalization)研究的问题是如何利用源领域数据训练一个模型,其目的是使得该模型能够泛化到其他不同数据分布的目标领域。虽然这项能力对于人类来讲似乎并不需要刻意学习就能拥有,但是对于目前的机器学习模型和算法,领域泛化仍然是极具挑战性的问题。从领域泛化这个研究问题的正式诞生到如今已经经历了整整十年的探索,期间涌现出了形形色色的方法。

 

作为该领域的第一篇系统性综述,本文将会引领你去详细了解领域泛化这个问题的历史,问题的种类,当前通用的基准数据库,以及对现有方法的归类和总结。文章的最也提出了对该领域今后研究的展望。希望读者在阅读完之后能够对领域泛化这个问题的研究有一个系统性的认知。

 

 

论文链接:https://arxiv.org/abs/2103.02503

 

以下我们将简要介绍论文里的三个核心部分,有兴趣的读者可以阅读原文来了解更多内容。

 

1. 背景介绍 

 

(Background, Section 2)

 

什幺是领域泛化?

 

简单来说,一个领域通常定义为对数据变量X和标签变量Y的一个联合分布P(X, Y)。在领域泛化的问题中,源领域数据的分布PS(X, Y)和目标领域数据的分布PT(X, Y)是不同的,并且目标领域的数据在模型训练过程中是不可见的。

 

根据源领域数据的来源数量,领域泛化的问题又可以分为单一领域泛化(Single-Source Domain Generalization),或者是多领域泛化(Multi-Source Domain Generalization)。顾名思义,前者只能用单一来源的数据做模型训练,而后者则是采用多个来源不同的数据做模型训练。

 

领域泛化的相关研究领域有哪些?

 

领域泛化可以说是和多个研究领域息息相关,例如迁移学习(Transfer Learning),零次学习(Zero-Shot Learning),和领域自应性学习(Domain Adaptation)。领域泛化与其相关领域的异同之处大概可以归纳为以下几个要点:

 

1)源领域数据的来源数量

 

2)源领域和目标领域数据分布的异同

 

3)源领域和目标领域的标签空间的异同

 

4)目标领域数据的可见性

 

那领域泛化的算法又是如何进行实验验证,以及当前通用的基准数据库有哪些?

 

其实验证的方法很直观,那就是把数据库当中任意一个领域作为目标领域,然后把剩下的领域作为源领域用做模型训练。测试的时候则直接把在源领域训练好的模型部署在之前选定的目标领域上做测试。

 

关于当前通用的数据库,文章总结了超过20个在机器视觉领域里常用的数据库(见以下剪切图),其涵盖了多个视觉任务,例如物体识别(Object Recognition),语义分割(Semantic Segmentation),以及行人再识别(Person Re-identification)。

 

 

2. 方法论的综述

 

(Methodologies: A Survey, Section 3)

 

十年的研究在领域泛化这个问题上产生了形形色色的方法。文章对这些方法做了一个全面的总结,并概括出了 11 种类别(预览请见以下从文章中剪切出来的表4)。以下会简单介绍每种类别方法的主要设计思路。

 

 

类别1     领域对齐(Domain Alignment)

 

这类方法通常是去对齐源领域之间的特征分布。其设计的主要驱动力是:如果学到的特征对源领域之间的分布偏移不敏感,那幺该特征也应该对目标领域的分布偏移具有较好的鲁邦性。目前绝大多数的领域泛化方法都是基于领域对齐这个思想开发的。这类方法一般会对齐1)边缘分布P(X),2)类别条件分布P(X | Y),或是3)后验分布P(Y | X)。对齐的方法有许多,例如利用最大平均差异(Maximum Mean Discrepancy),或者领域对抗训练(Domain-Adversarial Learning)。

 

类别2    元学习(Meta-Learning)

 

这类方法的核心要素是把多个源领域随机分成伪源领域(pseudo-source domain)和伪目标领域(pseudo-target domain),然后利用元学习的算法去优化伪源领域上的目标函数,使得模型在伪目标领域上的性能有所提升,以此来激发模型学习泛化性强的特征。

 

类别3    数据增强(Data Augmentation)

 

这类方法的目的很直接,就是扩增训练数据,使得模型能够学习到对领域偏移鲁棒性更强的特征。这类方法一般可以归类成以下四种模型:

 

1)基于手工变形的方法(Hand-Engineered Transformations),例如对图像像素点强度做调整,或者是对图像进行随机切割和变形来做数据扩增;

 

2)基于梯度的数据增强方法(Gradient-Based Augmentation),例如把一个领域分类器上回传的对抗性梯度加在原始图像上;

 

3)基于模型的数据增强方法(Model-Based Augmentation),其主要特点是用神经网络生成领域偏移的图像;

 

4)基于特征的增强方法(Feature-Based Augmentation),例如把图像之间的特征统计参数做一个混合。

 

类别4    集成学习(Ensemble Learning)

 

这类方法一般适用于多源数据,其特点是学习多个模型或模块,然后在测试的时候做融合。最简单直观的例子就是在每个源领域上学习一个特定的分类器,然后在做测试时把这些分类器简单地融合。

 

类别5    网络架构设计(Network Architecture Design)

 

除了在训练算法上做文章,一些领域泛化方法还尝试对神经网络模型架构做改动。比如,针对照明偏移的图片,我们可以在卷积网络里加入实例归一化层(Instance Normalization Layers),这样可以很大程度上加强特征对照明偏移的鲁棒性。

 

类别6    自监督学习(Self-Supervised Learning)

 

近几年来特别火热的自监督学习也被应用在领域泛化上,例如在训练分类网络的目标函数上加入了基于拼图(Jigsaw Puzzle)设计的损失函数。这类方法的动机是让模型学习一些和任务不相关的特征,从而达到减小模型在目标任务上过拟合的作用。

 

类别7    表征分解学习(Learning Disentangled Representations)

 

顾名思义,这类方法的目的是学习如何分解出对领域分布相关的特征和对领域分布不相关的特征。常见的有基于模型局部改造的方法和基于生成学习的方法。

 

类别8    不变风险最小化(Invariant Risk Minimization)

 

这类方法主要是从不变风险最小化这个算法上衍生出来的,其设计目的是减少模型对非相关元素的依赖,例如图像背景。此类方法一般是在目标函数或者训练方式上做特别设计,例如设计特殊的正则化项。这类方法通常有理论分析来做支撑。

 

类别9    启发式训练(Training Heuristics)

 

这类方法通常是基于直观或经验来设计的,例如我们通常认为泛化性强的特征主要包含图像的全局结构以及物体形状的信息,为了抑制模型对图像的局部结构过于依赖,我们可以构造局部神经网络,也就是1×1卷积网络,然后最大化这个网络的预测错误,从而迫使模型提取全局信息做预测。

 

类别10    辅助信息(Side Information)

 

这类方法通常借助额外的辅助信息来帮助模型训练。例如,我们可以使用额外标定的属性信息去帮助模型学习到更具泛化能力的底层和中层特征,或者利用语义分割标签让特征学习聚焦在物体上,从而防止模型学习和图像背景相关联的特征。

 

类别11    迁移学习(Transfer Learning)

 

这类方法的设计初衷是让模型在源领域上学习新知识的同时,要保留其在原始大规模数据上预训练获得的知识,其主要应用在合成数据(如3D模型)到真实数据的泛化。

 

3. 关于未来研究方向

 

( Future Research Directions, Section 4)

 

虽然过去十年的研究极大的推动了领域泛化的发展,但是解决这个极具挑战性的问题仍然还有很长的一段路要走。本文也对未来研究方向做了展望,并总结了几个值得探索的课题。

 

这些课题主要归类于三个大方向,分别是 模型架构 , 学习算法 ,和 基准数据库 。

 

从 模型架构 的角度,我们可以尝试例如动态架构(Dynamic Architectures)设计,让网络自己生成适合输入图像分布的参数,或者开发自适应归一化层,使得归一化层里的估计参数能够克服测试数据分布偏移的问题。

 

从 学习算法 的角度,我们可以探索如何在不使用领域标签的情况下学习泛化性强的特征,让领域泛化算法更具灵活性,或者研究如何训练神经网络去生成逼真的新领域数据做数据增强。

 

最后,从 构造基准数据库 的角度出发,我们可以思考如何让领域泛化算法在实际场景中更具实用性,例如可以考虑把增量学习(Incremental Learning)和领域泛化做结合。

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注