当前位置: 首页 > news >正文

[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=1n(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=hHargminR(h) 描述了在假设类 H H H 中的最优假设,这是该类中期望风险最小的函数。

h S = arg min ⁡ h ∈ H R S ( h ) h_S = \argmin\limits_{h \in H} R_S(h) hS=hHargminRS(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 nSnT

为了从源领域中提取知识,我们需要确定不同领域之间 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=1nSβ(xiS,yiS)(xiS,yiS,h)

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

领域适应

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

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

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

考虑一个映射函数 ϕ : X → H \phi: X \rightarrow \mathcal{H} ϕ:XH,其中 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))=EXp(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))EXpS(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 EXpS(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=1nTϕ(xiT)nS1i=1nSβ(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=1nSβ(xiS)=1

迁移学习

相关文章:

  • 【DOCKER】
  • 【23种设计模式】依赖倒置原则
  • linux下安装 Chrome 和 chromedriver 以及 selenium webdriver 使用
  • 【iOS】——知乎日报第二周总结
  • github搜索技巧探索
  • C++之string
  • 国产CAN总线收发芯片DP1042 兼容替换TJA1042
  • 企业如何安全跨国传输30T文件数据
  • C多维数组指针(学习笔记)
  • Android Glide判断图像资源是否缓存onlyRetrieveFromCache,使用缓存数据,Kotlin
  • 二进制搭建 Kubernetes+部署网络组件+部署CornDNS+负载均衡部署+部署Dashboard
  • 多输入多输出 | Matlab实现k-means-LSTM(k均值聚类结合长短期记忆神经网络)多输入多输出组合预测
  • Postman日常操作
  • Android 中如何使用 App Links
  • React Swiper.js使用(详细版)3D聚焦特效,自定义导航按钮等
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • canvas 高仿 Apple Watch 表盘
  • django开发-定时任务的使用
  • Fabric架构演变之路
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JavaScript对象详解
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Node 版本管理
  • PHP的Ev教程三(Periodic watcher)
  • PHP那些事儿
  • Spring Boot快速入门(一):Hello Spring Boot
  • Spring Cloud中负载均衡器概览
  • tab.js分享及浏览器兼容性问题汇总
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 将回调地狱按在地上摩擦的Promise
  • 七牛云假注销小指南
  • 入手阿里云新服务器的部署NODE
  • 思考 CSS 架构
  • 一个项目push到多个远程Git仓库
  • 用Python写一份独特的元宵节祝福
  • 在Mac OS X上安装 Ruby运行环境
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • ​ssh免密码登录设置及问题总结
  • #1015 : KMP算法
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (1)bark-ml
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (175)FPGA门控时钟技术
  • (BFS)hdoj2377-Bus Pass
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (k8s中)docker netty OOM问题记录
  • (汇总)os模块以及shutil模块对文件的操作
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (强烈推荐)移动端音视频从零到上手(下)
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)负载均衡,回话保持,cookie
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .Net FrameWork总结
  • .NET Project Open Day(2011.11.13)