1 摘要
- 本文会介绍迁移学习与域自适应的具体区别
- 首先,解答一个问题:如果说两个image服从同一种分布,到底是什么意思?
- 之后通过数学理论公式,严谨的将迁移学习与域自适应区分开来,并介绍两者相应的应用场景。
- 坚持看下去,我会讲清楚,我也相信你会有所收获。
2 思路
2.1 Question:
- 如果说两个image服从同一种分布,到底是什么意思?
Answer:
-
该问题在 AI或机器学习 中经常出现,动辄要求输入图像数据独立同分布。what the fuck?自己没说我怎么知道同分布什么意思?基础概念没懂,它的一些相关公式也就稀里糊涂地理解,学起来真的难。深有感触的评论区扣 “ 确实!”。
-
首先,我们必须了解一张图片可以通过其像素值表示出来。例如,一张256*256的灰度图可以通过65536维的向量,每个维度值的范围是0-255,来表示出来。
-
想象一下,65536维的向量服从均匀分布 x ∼ U [ 0 , 255 ] 65536 x∼U[0,255]^{65536} x∼U[0,255]65536 ,它的图像该是什么样。如果我们将这样一种随机采样得到的向量解释为图像,你觉得我们看到一张脸的可能性大吗?当然不可能,实际上你会看到如下的噪音图。
-
为什么你知道你看到的不是一张脸?没错,因为你知道一张脸不是由均匀分布的像素组成。换句话说,因为你直觉地知道一张脸的像素值构成的向量,分布不服从 x ∼ U [ 0 , 255 ] 65536 x∼U[0,255]^{65536} x∼U[0,255]65536 ,而是有另外的一种分布。
-
因此,我们说两个image服从同一种分布。其实就是将它们转化为向量后,该向量服从某一种分布。如下图,直觉上你自然地知道mnist和mnist-m分布不同,但是其内部图像服从同一分布。解释完毕,还有不懂评论区留言。
2.2 理论公式
假设我们数据集中有 N N N个图像 { ( x i , y i ) } i = 1 N \left\{(x^i,y^i)\right\}_{i=1}^N {(xi,yi)}i=1N ,其中:
- x i = ( x 1 i , … , x D i ) ∈ X x^i = \left(x^i_1, \dots, x^i_D\right) \in \mathcal{X} xi=(x1i,…,xDi)∈X 是image, D D D 是image的维度
- y i ∈ Y y^i \in \mathcal{Y} yi∈Y 是标签
- 标签 C C C 个类别, Y = { 0 , … , C − 1 } \mathcal{Y} = \{0,\dots,C-1\} Y={0,…,C−1} ,因此 y i y^i yi 是类别标签
- X , Y \mathcal{X},\mathcal{Y} X,Y 分别是image space与label space。作为一个分类任务,我们需要做的就是从数据中学习 P ( Y ∣ X ) P(Y|X) P(Y∣X) (给定数据X,其分类成Y的概率)
Finally:
- 域 D {\mathcal{D}} D 被定义为 D = { X , P ( X ) } \mathcal{D}=\left\{\mathcal{X},P(X)\right\} D={X,P(X)} (可以理解为数据集)
- 学习任务 T \mathcal{T} T 被定义 T = { Y , P ( Y ∣ X ) } \mathcal{T}=\{\mathcal{Y},P(Y|X)\} T={Y,P(Y∣X)} (可以理解为数据集分类任务)
Definition:
给定:
- 源域 D S \mathcal{D}_S DS 和学习任务 T S \mathcal{T}_S TS (大白话:训练集和训练集分类任务)
- 目标域 D T \mathcal{D}_T DT 和学习任务 T T \mathcal{T}_T TT (大白话:测试集和测试集任务)
迁移学习目标是通过利用 D S \mathcal{D}_S DS 和 T S \mathcal{T}_S TS 的信息来提升目标域的学习任务 T T \mathcal{T}_T TT ,此时
- D S ≠ D T \mathcal{D}_S \neq \mathcal{D}_T DS=DT, or
- T S ≠ T T \mathcal{T}_S \neq \mathcal{T}_T TS=TT
也就是说,迁移学习的范畴很大。源域可以与目标域数据不同,源域与目标域任务也能不同。如下举例:
2.3 任务场景
2.3.1 同样的域,不同任务
Case1:标签空间 label space 不同, Y S ≠ Y T \mathcal{Y}_S \neq \mathcal{Y}_T YS=YT :
例如:标签空间的类别数量不同
Case2:标签的条件分布不同, P ( Y S ∣ X S ) ≠ P ( Y T ∣ X T ) P(Y_S|X_S)\neq P(Y_T|X_T) P(YS∣XS)=P(YT∣XT) :
源域与目标域的标签分布不同,例如可能源域为1的图片很多;目标域为2的图片很多,类别不平衡。
2.3.2 同样任务,不同的域
Case1:源域与目标域图像空间 image space 不同, X S ≠ X T \mathcal{X}_S \neq \mathcal{X}_T XS=XT :
例如, X S \mathcal{X}_S XS 是灰度图像空间, X T \mathcal{X}_T XT 是彩色图像空间
Case2:源域与目标域图像空间的数据分布不同, P ( X S ) ≠ P ( X T ) P(X_S)\neq P(X_T) P(XS)=P(XT) :
例如:源域包含手绘图像,目标域则是机器拍的图像
关键来了,这个常见的场景又称之为域自适应 domain adaptation。
由此可见:
迁移学习涉及范畴很大,包括如上全部。但如果仅仅只是源域与目标域图像空间的数据分布不同,那就属于域自适应的范畴。也就是说, D o m a i n A d a p t a t i o n ∈ T r a n s f e r L e a r n i n g Domain\; Adaptation \in Transfer\;Learning DomainAdaptation∈TransferLearning
3 总结
- 迁移学习范畴很大,不管源域与目标域,源域学习任务与目标域学习任务相不相同,都属于迁移学习的范畴
- 但如果仅仅只是源域与目标域图像空间的数据分布不同,那就属于域自适应的范畴。当然, D o m a i n A d a p t a t i o n ∈ T r a n s f e r L e a r n i n g Domain\; Adaptation \in Transfer\;Learning DomainAdaptation∈TransferLearning ,也能说是迁移学习范畴啦。
- 这篇文章算是科普 ”什么是迁移学习与域自适应?“。后续也会出内容的相关代码实现。
附录
参考资料:
https://nbviewer.jupyter.org/github/vistalab-technion/cs236605-tutorials/blob/master/tutorial6/tutorial6-TL_DA.ipynb#CS236605:-Deep-Learning