[Machine Learning] 领域适应和迁移学习

文章目录


在机器学习中,我们的目标是找到一个假设或模型,它可以很好地描述或预测数据。当我们基于训练集训练模型时,我们的目的是让模型能够捕获到数据中的主要模式。然而,为了确保模型不仅仅是对训练数据进行记忆,而是真正理解了数据的结构,我们需要在测试集上评估它。

为什么我们认为一个在训练集上表现良好的模型也应该在测试集上表现良好呢?这是基于一个核心假设:训练数据和测试数据都是从相同的分布中抽取的。因此,如果模型可以很好地理解和拟合训练数据中的模式,那么它也应该能够很好地处理测试数据。

当我们谈论过拟合时,我们关心的是模型是否能从一个样本(训练数据)泛化到整个总体或其他样本(如测试数据)。过拟合发生在模型过于复杂时,以至于它开始"记住"训练数据中的特定噪声和异常,而不是只捕获真实的、普遍的数据模式。

为了提高学习的效率和性能,有时我们需要从一个领域转移到另一个领域,这就涉及到领域适应 (Domain Adaptation) 和迁移学习 (Transfer Learning)。

领域适应的目标是减少源领域和目标领域数据之间的分布差异。例如,我们可能有一个在英国的图像数据集(源领域),我们希望将学到的模型应用于美国的图像数据集(目标领域)。尽管两个数据集在内容上有很多相似之处,但也可能存在一些微妙的差异,例如光线、风格等。领域适应的目标就是减少这些差异的影响。常见的策略包括:

  • 特征级适应: 调整或转换特征,使得源领域和目标领域的特征分布更接近。
  • 模型级适应: 通过正则化、再加权等策略调整在源领域上训练的模型,使其在目标领域上表现更好。

迁移学习则更加广泛,它涉及从一个或多个源领域提取知识,并将这些知识应用于一个不同的目标领域。与领域适应不同,迁移学习的焦点不仅仅在于源和目标的数据分布不同,还可能涉及完全不同的任务。例如,我们可能从图片分类任务中学习的知识(如边缘检测、纹理识别等)来帮助视频物体检测任务。常见的迁移学习策略包括:

  • 预训练与微调: 先在源任务上预训练一个模型,然后在目标任务上进行微调。
  • 知识蒸馏: 将一个大的、在源任务上训练得很好的模型的知识转移到一个小的模型上。
  • 多任务学习: 在多个相关任务上同时训练模型,使其可以共享知识。

总的来说,领域适应更偏向于理论,而迁移学习更偏向于实践,但两者都是为了提高模型在新的、未见过的数据上的性能。

期望风险 (Expected risk) 与经验风险 (Empirical risk) 是评估学习算法性能的两种核心指标。期望风险衡量的是算法在所有可能的数据上的平均性能,而经验风险则是算法在训练集上的性能。

期望风险 R ( h ) = E [ R S ( h ) ] = E [ ℓ ( X , Y , h ) ] R(h) = \mathbb{E}[R_S(h)] = \mathbb{E}[\ell (X, Y, h)] R(h)=E[RS(h)]=E[ℓ(X,Y,h)] 描述了假设 h h h 对所有可能的数据点 ( X , Y ) (X, Y) (X,Y) 的平均损失。理想情况下,我们希望找到一个假设 h h h,使期望风险最小。

经验风险 R S ( h ) = 1 n ∑ i = 1 n ℓ ( X i , Y i , h ) R_S(h) = \frac{1}{n} \sum\limits_{i=1}^{n} \ell (X_i, Y_i, h) RS(h)=n1i=1∑nℓ(Xi,Yi,h) 描述了假设 h h h 在训练集上的平均损失。在实际应用中,由于我们无法获取所有可能的数据点,所以我们通常用经验风险作为期望风险的近似,并尝试最小化它。

c = arg min ⁡ h R ( h ) c = \argmin\limits_{h} R(h) c=hargminR(h) 描述了全局最优的函数,这是在所有可能的函数中期望风险最小的函数。

h ∗ = arg min ⁡ h ∈ H R ( h ) h^* = \argmin\limits_{h \in H} R(h) h∗=h∈HargminR(h) 描述了在假设类 H H H 中的最优假设,这是该类中期望风险最小的函数。

h S = arg min ⁡ h ∈ H R S ( h ) h_S = \argmin\limits_{h \in H} R_S(h) hS=h∈HargminRS(h) 描述了我们实际从数据中学习到的假设,这是假设类 H H H 中经验风险最小的函数。

在源领域中,我们有大量的标记数据,而在目标领域中,我们可能只有少量的标记数据或没有标记数据。

  • 源领域数据: { ( x 1 S , y 1 S ) , . . . , ( x n S S , y n S S ) } \{ (x^S_1, y^S_1), ..., (x^S_{n_S}, y^S_{n_S})\} {(x1S,y1S),...,(xnSS,ynSS)}
  • 目标领域数据: 可能是 { ( x 1 T , y 1 T ) , . . . , ( x n T T , y n T T ) } \{ (x^T_1, y^T_1), ..., (x^T_{n_T}, y^T_{n_T})\} {(x1T,y1T),...,(xnTT,ynTT)} 或只是 { x 1 T , . . . , x n T T } \{ x^T_1, ..., x^T_{n_T}\} {x1T,...,xnTT}

由于目标领域的数据量较小,并且可能没有监督标签,所以我们的约束是 n S ≫ n T n^S \gg n^T nS≫nT。

为了从源领域中提取知识,我们需要确定不同领域之间 p ( X , Y ) p(X,Y) p(X,Y) 的变化方式。这种变化可以用权重 β ( X , Y ) = p t ( X , Y ) p s ( X , Y ) \beta (X,Y) = \frac{p_t(X,Y)}{p_s(X,Y)} β(X,Y)=ps(X,Y)pt(X,Y) 来表示。

首先,回顾我们的目标是估算目标领域的期望风险 R T ( h ) R^T(h) RT(h)。公式如下:

R T ( h ) = E ( X , Y ) ∼ p t ( X , Y ) [ ℓ ( X , Y , h ) ] R^T(h) = \mathbb{E}_{(X,Y) \sim p_t(X,Y)}[\ell(X,Y,h)] RT(h)=E(X,Y)∼pt(X,Y)[ℓ(X,Y,h)]

  • R T ( h ) R^T(h) RT(h):这表示的是在目标领域下,由假设 h h h 产生的期望风险或错误。
  • ℓ ( X , Y , h ) \ell(X,Y,h) ℓ(X,Y,h):这是损失函数,它衡量了在给定数据点 ( X , Y ) (X,Y) (X,Y) 和假设 h h h 下的预测错误。

这实际上是一个关于目标领域分布 p t ( X , Y ) p_t(X,Y) pt(X,Y) 的期望。但是,我们没有足够的目标领域数据来直接计算这个期望。所以我们转向源领域,并引入了权重 β ( X , Y ) \beta(X,Y) β(X,Y),该权重捕获了从源领域到目标领域的分布变化。然后我们重写期望为:

R T ( h ) = E ( X , Y ) ∼ p t ( X , Y ) [ ℓ ( X , Y , h ) ] = ∫ X , Y ℓ ( X , Y , h ) p t ( X , Y ) d X d Y = E ( X , Y ) ∼ p s ( X , Y ) [ p t ( X , Y ) p s ( X , Y ) ℓ ( X , Y , h ) ] = E ( X , Y ) ∼ p s ( X , Y ) [ β ( X , Y ) ℓ ( X , Y , h ) ] \begin{align*} R^T(h) &= \mathbb{E}{(X,Y) \sim p_t(X,Y)}[\ell(X,Y,h)] \\ &= \int{X,Y} \ell(X,Y,h) p_t (X,Y) dXdY \\ &= \mathbb{E}{(X,Y) \sim p_s(X,Y)}[\frac{p_t(X,Y)}{p_s(X,Y)}\ell(X,Y,h)] \\ &= \mathbb{E}{(X,Y) \sim p_s(X,Y)}[\beta (X,Y) \ell(X,Y,h)] \end{align*} RT(h)=E(X,Y)∼pt(X,Y)[ℓ(X,Y,h)]=∫X,Yℓ(X,Y,h)pt(X,Y)dXdY=E(X,Y)∼ps(X,Y)[ps(X,Y)pt(X,Y)ℓ(X,Y,h)]=E(X,Y)∼ps(X,Y)[β(X,Y)ℓ(X,Y,h)]

现在这是一个关于源领域分布 p s ( X , Y ) p_s(X,Y) ps(X,Y) 的期望,这意味着我们可以使用源领域的数据来估算它。所以,如果我们有一个源领域的样本,我们可以用样本平均近似上面的期望:

R T ( h ) ≈ 1 n S ∑ i = 1 n S β ( x i S , y i S ) ℓ ( x i S , y i S , h ) R^T(h) \approx \frac{1}{n_S}\sum\limits_{i=1}^{n_S} \beta (x^S_i, y^S_i) \ell (x^S_i, y^S_i,h) RT(h)≈nS1i=1∑nSβ(xiS,yiS)ℓ(xiS,yiS,h)

当我们有无限多的样本数据时,样本平均会收敛到真实的期望。这是大数定律的一个结果。具体地说,如果我们有一个随机变量的无限多的独立同分布样本,那么这些样本的平均值将收敛到这个随机变量的期望。

领域适应

当源领域和目标领域的数据分布不同,机器学习模型可能会在目标领域上表现得不太理想。因此,领域适应的目的就是减少这两个分布之间的差异。

核均值匹配 (Kernel Mean Matching, KMM)

简单来说,KMM 的核心思想是:为源数据中的每个样本赋予权重,使得加权后的源数据在特征空间中的均值与目标数据的均值尽可能接近。这样,当我们从源领域训练的模型在目标领域进行预测时,性能会更好。

KMM 方法主要基于一个简单的观察:如果两个分布的期望值相同,那么这两个分布也是相似的。

考虑一个映射函数 ϕ : X → H \phi: X \rightarrow \mathcal{H} ϕ:X→H,其中 H \mathcal{H} H 是一个带有核函数 K ( x 1 , x 2 ) = ⟨ ϕ ( x 1 ) , ϕ ( x 2 ) ⟩ K(x_1, x_2) = \langle \phi(x_1), \phi(x_2) \rangle K(x1,x2)=⟨ϕ(x1),ϕ(x2)⟩ 的再生核希尔伯特空间 (Reproducing Kernel Hilbert Space)。这里, ⟨ ⋅ , ⋅ ⟩ \langle \cdot, \cdot \rangle ⟨⋅,⋅⟩ 是内积运算。

在特征空间中,我们定义了一个"均值映射" μ ( p ( X ) ) \mu(p(X)) μ(p(X)),它实际上是对分布 p ( X ) p(X) p(X) 在特征空间中的均值的表示。这使得我们可以在这个空间中比较两个分布的均值。

μ ( p ( X ) ) = E X ∼ p ( X ) [ ϕ ( X ) ] \mu(p(X)) = \mathbb{E}_{X \sim p(X)}[\phi(X)] μ(p(X))=EX∼p(X)[ϕ(X)]

当 K K K 是一个通用核时, μ \mu μ 是一个双射函数,这意味着它可以在其范围和域之间建立一一对应的关系。

KMM的目标是找到一个权重系列 β ( X ) \beta(X) β(X),使得加权的源领域分布的均值接近于目标领域分布的均值。数学上,这可以表述为 μ ( β ( X ) p S ( X ) ) = μ ( p T ( X ) ) \mu(\beta (X) p_S(X)) = \mu(p_T(X)) μ(β(X)pS(X))=μ(pT(X))。

我们的目标是最小化源领域的加权均值与目标领域均值之间的差异。为了确保权重的有效性,我们还加了两个约束条件:权重必须为正,并且它们的平均值为1。

min ⁡ β ∥ μ ( p T ( X ) ) − E X ∼ p S ( X ) [ β ( X ) ϕ ( X ) ] ∥ 2 \min\limits_\beta \|\mu(p_T(X)) - \mathbb{E}_{X \sim p_S(X)}[\beta(X) \phi(X)]\|^2 βmin∥μ(pT(X))−EX∼pS(X)[β(X)ϕ(X)]∥2

受到约束 β ( X ) ≥ 0 \beta(X) \geq 0 β(X)≥0 和 E X ∼ p S ( X ) [ β ( X ) ] = 1 \mathbb{E}_{X \sim p_S(X)}[\beta(X)] = 1 EX∼pS(X)[β(X)]=1。

在实际应用中,我们通常只有有限的源领域和目标领域的样本。因此,我们不能直接计算期望,而是使用经验均值来近似它们。

给定源领域的样本 { x 1 S , . . . , x n S S } ∼ p S ( X ) n S \{ x^S_1, ..., x^S_{n_S}\} \sim p_S(X)^{n_S} {x1S,...,xnSS}∼pS(X)nS 和目标领域的样本 { x 1 T , . . . , x n T T } ∼ p T ( X ) n T \{ x^T_1, ..., x^T_{n_T}\} \sim p_T(X)^{n_T} {x1T,...,xnTT}∼pT(X)nT,我们的优化问题变为:

min ⁡ β ∥ 1 n T ∑ i = 1 n T ϕ ( x i T ) − 1 n S ∑ i = 1 n S β ( x i S ) ϕ ( x i S ) ∥ 2 \min\limits_\beta \left\| \frac{1}{n_T} \sum\limits_{i=1}^{n_T} \phi(x_i^T) - \frac{1}{n_S} \sum\limits_{i=1}^{n_S} \beta(x_i^S) \phi(x_i^S) \right\|^2 βmin nT1i=1∑nTϕ(xiT)−nS1i=1∑nSβ(xiS)ϕ(xiS) 2

受到约束 β ( x i S ) ≥ 0 \beta(x_i^S) \geq 0 β(xiS)≥0 和 1 n S ∑ i = 1 n S β ( x i S ) = 1 \frac{1}{n_S} \sum\limits_{i=1}^{n_S} \beta(x_i^S) = 1 nS1i=1∑nSβ(xiS)=1。

迁移学习

无论是协变量偏移还是目标偏移,核心的思想都是找到一个权重 β \beta β,使得源域的分布能够被调整为与目标域更为接近。

协变量偏移模型 (Covariate Shift Model)

在协变量偏移的假设下,我们假设源和目标领域之间的特征分布 p ( X ) p(X) p(X) 有所不同,但条件分布 p ( Y ∣ X ) p(Y|X) p(Y∣X) 保持不变,即 p t ( Y ∣ X ) = p s ( Y ∣ X ) p_t(Y|X) = p_s(Y|X) pt(Y∣X)=ps(Y∣X),但 X X X 的边缘分布在两个域中是不同的,即 p s ( Y ∣ X ) ≠ p t ( Y ∣ X ) p_s(Y|X) \neq p_t(Y|X) ps(Y∣X)=pt(Y∣X)。

换句话说,尽管数据的来源可能不同,但在给定输入时输出的行为或关系是一致的。在这种情况下,我们关心的是如何调整源数据分布,使其与目标数据分布更为接近,以便在目标域上得到更好的性能。我们的目标是找到一个权重 β ( X ) \beta(X) β(X),这个权重会告诉我们在源域中哪些样本更有可能出现在目标域中。

β ( X , Y ) = p t ( X , Y ) p s ( X , Y ) = p t ( Y ∣ X ) p t ( X ) p s ( Y ∣ X ) p s ( X ) = p t ( X ) p s ( X ) = β ( X ) \beta (X,Y) = \frac{p_t(X,Y)}{p_s(X,Y)} = \frac{p_t(Y|X)p_t(X)}{p_s(Y|X)p_s(X)} = \frac{p_t(X)}{p_s(X)} = \beta(X) β(X,Y)=ps(X,Y)pt(X,Y)=ps(Y∣X)ps(X)pt(Y∣X)pt(X)=ps(X)pt(X)=β(X)

这表示数据的概率变化是与 Y Y Y独立的,仅依赖于 X X X。

对于这种情况,我们使用 KMM 来找到每个源域样本的权重,以使源域的 X X X 的边缘分布与目标域的更接近。

min ⁡ β ∥ 1 n T ∑ i = 1 n T ϕ ( x i T ) − 1 n S ∑ i = 1 n S β ( x i S ) ϕ ( x i S ) ∥ 2 \min_\beta \| \frac{1}{n_T} \sum_{i=1}^{n_T} \phi(x^T_i) - \frac{1}{n_S} \sum_{i=1}^{n_S} \beta(x^S_i) \phi(x^S_i) \|^2 βmin∥nT1i=1∑nTϕ(xiT)−nS1i=1∑nSβ(xiS)ϕ(xiS)∥2

约束条件为 β ( x i S ) ≥ 0 \beta(x^S_i) \geq 0 β(xiS)≥0, 1 n S ∑ i = 1 n S β ( x i S ) = 1 \frac{1}{n_S} \sum_{i=1}^{n_S} \beta(x^S_i) = 1 nS1∑i=1nSβ(xiS)=1。

注意,尽管 β ( X ) \beta(X) β(X)可以通过 KMM 方法学习,但如果目标域没有任何标签,那么学习 β ( X ) \beta(X) β(X)会变得困难。

目标偏移模型 (Target Shift Model)

在目标偏移的假设下,我们假设源和目标之间的输出分布 p ( Y ) p(Y) p(Y) 不同,但条件分布 p ( X ∣ Y ) p(X|Y) p(X∣Y) 保持不变。

换句话说,不同的环境或条件可能会导致输出分布的变化,尽管输入-输出的关系仍然保持不变。在这种情况下,我们的目标是匹配源域和目标域的边缘分布 p ( X ) p(X) p(X),但这需要通过考虑到输出的分布变化 β ( Y ) \beta(Y) β(Y) 来实现。我们的目标是找到一个权重 β ( Y ) \beta(Y) β(Y),使得考虑了该权重后的源域的 p ( X ) p(X) p(X) 与目标域的 p ( X ) p(X) p(X) 更为接近。

对于这种情况,我们要使用 KMM 来调整源域的 Y Y Y 的边缘分布,使其更接近目标域。

我们知道 p t ( Y ) = β ( Y ) p s ( Y ) p_t(Y) = \beta(Y)p_s(Y) pt(Y)=β(Y)ps(Y),并且可以表示 p t ( X ) p_t(X) pt(X)为:

我们知道:
p t ( Y ) = β ( Y ) p s ( Y ) p_t(Y) = \beta(Y)p_s(Y) pt(Y)=β(Y)ps(Y)

并且可以表示 p t ( X ) p_t(X) pt(X)为:
p t ( X ) = ∫ p s ( X ∣ Y ) β ( Y ) p s ( Y ) d Y p_t(X) = \int p_s(X|Y) \beta(Y) p_s(Y) dY pt(X)=∫ps(X∣Y)β(Y)ps(Y)dY

我们的目标是估计 β ( Y ) \beta(Y) β(Y),使得源领域和目标领域的 p t ( X ) p_t(X) pt(X)和 ∫ p s ( X ∣ Y ) β ( Y ) p s ( Y ) d Y \int p_s(X|Y) \beta(Y) p_s(Y) dY ∫ps(X∣Y)β(Y)ps(Y)dY之间的分布尽可能匹配。

这可以通过以下模型来实现:
min ⁡ β ∥ μ ( p t ( X ) ) − E Y ∼ p s ( Y ) [ μ ( p s ( X ∣ Y ) ) β ( Y ) ] ∥ 2 \min\limits_\beta \|\mu(p_t(X)) - \mathbb{E}_{Y \sim p_s(Y)}[\mu (p_s(X|Y)) \beta (Y) ]\|^2 βmin∥μ(pt(X))−EY∼ps(Y)[μ(ps(X∣Y))β(Y)]∥2

约束条件为 β ( Y ) ≥ 0 \beta(Y) \geq 0 β(Y)≥0, E Y ∼ p s ( Y ) [ β ( Y ) ] = 1 \mathbb{E}_{Y \sim p_s(Y)}[\beta(Y)] = 1 EY∼ps(Y)[β(Y)]=1。

在实践中,我们使用以下的经验模型来估计:

min ⁡ β ∥ 1 n T ∑ i = 1 n T ϕ ( x i T ) − 1 n S ∑ i = 1 n S β ( y i S ) μ ^ ( p s ( X ∣ y i S ) ) ∥ 2 \min_\beta \| \frac{1}{n_T} \sum_{i=1}^{n_T} \phi(x^T_i) - \frac{1}{n_S} \sum_{i=1}^{n_S} \beta(y^S_i) \hat\mu(p_s(X|y^S_i)) \|^2 βmin∥nT1i=1∑nTϕ(xiT)−nS1i=1∑nSβ(yiS)μ^(ps(X∣yiS))∥2

约束条件为 β ( y i S ) ≥ 0 \beta(y^S_i) \geq 0 β(yiS)≥0, 1 n S ∑ i = 1 n S β ( y i S ) = 1 \frac{1}{n_S} \sum_{i=1}^{n_S} \beta(y^S_i) = 1 nS1∑i=1nSβ(yiS)=1。

其中, μ ^ ( p s ( X ∣ y i S ) ) \hat\mu(p_s(X|y^S_i)) μ^(ps(X∣yiS)) 是给定 y i S y^S_i yiS 时的 X X X 的条件分布的经验均值。

相关推荐
slomay1 小时前
关于对比学习(简单整理
经验分享·深度学习·学习·机器学习
AI完全体2 小时前
【AI知识点】偏差-方差权衡(Bias-Variance Tradeoff)
人工智能·深度学习·神经网络·机器学习·过拟合·模型复杂度·偏差-方差
羊小猪~~4 小时前
深度学习项目----用LSTM模型预测股价(包含LSTM网络简介,代码数据均可下载)
pytorch·python·rnn·深度学习·机器学习·数据分析·lstm
我是哈哈hh4 小时前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
萱仔学习自我记录5 小时前
微调大语言模型——超详细步骤
人工智能·深度学习·机器学习
大神薯条老师6 小时前
Python从入门到高手5.1节-Python简单数据类型
爬虫·python·深度学习·机器学习·数据分析
zmjia1117 小时前
全流程Python编程、机器学习与深度学习实践技术应用
python·深度学习·机器学习
龙的爹23338 小时前
论文翻译 | Generated Knowledge Prompting for Commonsense Reasoning
人工智能·gpt·机器学习·语言模型·自然语言处理·nlp·prompt
_.Switch8 小时前
Python机器学习:自然语言处理、计算机视觉与强化学习
python·机器学习·计算机视觉·自然语言处理·架构·tensorflow·scikit-learn
这可就有点麻烦了8 小时前
强化学习笔记之【TD3算法】
linux·笔记·算法·机器学习