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

从0开始深度学习(18)——环境和分布偏移

有时,根据测试集的精度衡量,模型表现得非常出色。 但是当数据分布突然改变时,模型在部署中会出现灾难性的失败。
有时模型的部署本身就是扰乱数据分布的催化剂。 举一个有点荒谬却可能真实存在的例子。 假设我们训练了一个贷款申请人违约风险模型,用来预测谁将偿还贷款或违约。 这个模型发现申请人的鞋子与违约风险相关(穿牛津鞋申请人会偿还,穿运动鞋申请人会违约)。 此后,这个模型可能倾向于向所有穿着牛津鞋的申请人发放贷款,并拒绝所有穿着运动鞋的申请人。
本章会揭露揭示一些常见的问题

1 分布偏移的类型

1.1协变量偏移

指的是训练数据和测试数据的输入分布不同,但条件分布 P ( y ∣ x ) P(y∣x) P(yx) 保持不变,即输入的分布可能随时间而改变, 但标签函数(即条件分布
)没有改变。

以区分猫狗为例,下面是训练集用的图像:
在这里插入图片描述
下面是测试集用的图像,即对下面的图像进行分类:
在这里插入图片描述
训练集由真实照片组成,而测试集只包含卡通图片。 假设在一个与测试集的特征有着本质不同的数据集上进行训练, 如果没有方法来适应新的领域,可能会有麻烦。

1.2 标签偏移

指的是训练数据和测试数据的标签分布不同,但条件分布 P ( x ∣ y ) P(x∣y) P(xy)保持不变。即标签的边际分布发生了变化,而给定标签的输入特征分布保持不变。

以开发一个疾病诊断模型为例:

  • 在 A 医院收集了很多患者的诊断数据,进行模型训练,可能因为 A 医院专长于某种疾病,该疾病的比例在数据中非常高。
  • 你在 B 医院测试模型,但是B医院的患者数据标签分布与A医院不同,可能该疾病的患者比例较低,由于训练集和测试集的标签分布不同,模型可能更倾向于预测该病

1.3 概念偏移

指的是输入数据与标签之间的关系发生了变化,即条件分布 P ( y ∣ x ) P(y∣x) P(yx) 发生变化。这种变化通常出现在模型部署后的实际应用中,环境、用户行为、市场趋势等随时间改变,导致原有模型不再准确。

以金融欺诈检测为例:

  • 训练阶段:模型学到了根据历史交易特征(如金额、时间、地点)来预测是否是欺诈行为。
  • 部署后:欺诈者的行为模式改变,使用新的手段进行欺诈,因此同样的交易特征可能不再代表欺诈行为。

2 分布偏移纠正

2.1 经验风险和实际风险

经验风险:指模型在给定训练数据集上所犯错误的平均值

经验风险(empirical risk)是为了近似 真实风险(true risk), 整个训练数据上的平均损失,即从其真实分布 p ( x , y ) p(x,y) p(x,y)中抽取的所有数据的总体损失的期望值:
在这里插入图片描述

2.2 协变量偏移纠正

我们可以通过在真实风险的计算中,使用以下简单的恒等式来进行纠正:
∫ ∫ l ( f ( x ) , y ) p ( y ∣ x ) p ( x )    d x d y = ∫ ∫ l ( f ( x ) , y ) q ( y ∣ x ) q ( x ) p ( x ) q ( x )    d x d y . \begin{aligned} \int\int l(f(\mathbf{x}), y) p(y \mid \mathbf{x})p(\mathbf{x}) \;d\mathbf{x}dy = \int\int l(f(\mathbf{x}), y) q(y \mid \mathbf{x})q(\mathbf{x})\frac{p(\mathbf{x})}{q(\mathbf{x})} \;d\mathbf{x}dy. \end{aligned} ∫∫l(f(x),y)p(yx)p(x)dxdy=∫∫l(f(x),y)q(yx)q(x)q(x)p(x)dxdy.
即根据数据来自正确分布与来自错误分布的概率之比, 来重新衡量每个数据样本的权重:
β i = d e f p ( x i ) q ( x i ) . \beta_i \stackrel{\mathrm{def}}{=} \frac{p(\mathbf{x}_i)}{q(\mathbf{x}_i)}. βi=defq(xi)p(xi).

将权重 β i \beta_{i} βi代入到每个数据样本 ( x i , y i ) (\mathbf{x}_i, y_i) (xi,yi)中, 我们可以使用”加权经验风险最小化“来训练模型:
m i n i m i z e f 1 n ∑ i = 1 n β i l ( f ( x i ) , y i ) . \mathop{\mathrm{minimize}}_f \frac{1}{n} \sum_{i=1}^n \beta_i l(f(\mathbf{x}_i), y_i). minimizefn1i=1nβil(f(xi),yi).

由于不知道这个比率,我们需要估计它,这里使用对数几率回归(logistic regression)

现在,我们来看一下完整的协变量偏移纠正算法。 假设我们有一个训练集 { ( x 1 , y 1 ) , … , ( x n , y n ) } \{(\mathbf{x}_1, y_1), \ldots, (\mathbf{x}_n, y_n)\} {(x1,y1),,(xn,yn)}和一个未标记的测试集 { u 1 , … , u m } \{\mathbf{u}_1, \ldots, \mathbf{u}_m\} {u1,,um}.。对于协变量偏移,我们假设 1 ≤ i ≤ n 1 \leq i \leq n 1in x i x_{i} xi来自某个源分布, u i \mathbf{u}_i ui来自目标分布。 以下是纠正协变量偏移的典型算法:
在这里插入图片描述

2.3 标签偏移纠正

重要性加权是一种常用的技术,用于调整模型的训练过程,使其更好地适应测试数据的标签分布。通过为训练数据中的每个样本分配权重,使得样本的影响程度与其在测试集中的重要性相匹配。

步骤:
1、估计训练集和测试集的标签分布:

  • P t r a i n ( y ) P_{train}(y) Ptrain(y):训练集中的标签分布
  • P t e s t ( y ) P_{test}(y) Ptest(y):测试集中的标签分布

2、计算权重:
w e i g h t ( y ) = P t e s t ( y ) P t r a i n ( y ) weight(y)=\frac{P_{test}(y)}{P_{train}(y)} weight(y)=Ptrain(y)Ptest(y)

3、在训练过程中,对每个样本的损失进行加权:
w e i g h t e d l o s s = ∑ i w e i g h t ( y i ) ⋅ L ( f ( x i , θ ) , y i ) weighted loss= \sum_{i} weight(y_{i}) ·L(f(x_{i},\theta),y_{i}) weightedloss=iweight(yi)L(f(xi,θ),yi)

通过这种方式,模型在训练时会更重视那些在测试集中频繁出现的标签。

2.4 概念偏移纠正

使用新数据更新现有的网络权重,而不是从头开始训练。

3 学习问题的分类法

有了如何处理分布变化的知识,我们现在可以考虑机器学习问题形式化的其他方面。

3.1 批量学习

在批量学习(batch learning)中,我们可以访问一组训练特征和标签 { ( x 1 , y 1 ) , … , ( x n , y n ) } \{(\mathbf{x}_1, y_1), \ldots, (\mathbf{x}_n, y_n)\} {(x1,y1),,(xn,yn)}, 我们使用这些特性和标签训练 f ( x ) f(\mathbf{x}) f(x)。 然后,我们部署此模型来对来自同一分布的新数据 ( x , y ) (\mathbf{x}, y) (x,y)进行评分。

例如,我们可以根据猫和狗的大量图片训练猫检测器。 一旦我们训练了它,我们就把它作为智能猫门计算视觉系统的一部分,来控制只允许猫进入。 然后这个系统会被安装在客户家中,基本再也不会更新。

3.2 在线学习

在线学习是一种逐步更新模型的方法。在这种学习模式下,模型在接收到新数据后会立即进行更新,而不需要在训练结束后一次性处理所有数据。与传统的批量学习(Batch Learning)相对,后者通常在收集完所有数据后进行训练。

例如,在实时推荐系统中,在用户行为不断变化的场景中,在线学习可以根据最新的用户活动实时调整推荐算法。

3.3 老虎机

老虎机问题是在线学习中的一个经典特例,旨在解决探索与利用之间的权衡。该问题可以通过“老虎机”来形象化,想象有多个老虎机,每个老虎机都有不同的中奖概率。玩家的目标是在有限的尝试次数内最大化其总奖励。

例如,在线广告投放,即在多个广告选项中选择以最大化点击率。

3.4 控制

3.5 强化学习


http://www.kler.cn/news/362870.html

相关文章:

  • Mytatis-plus使用sl4j日志打印SQL
  • 一个基于vue功能强大的表格组件--vxe-table的二次封装
  • excel判断某一列(A列)中的数据是否在另一列(B列)中
  • 定时任务使用kafka
  • 多模态大语言模型(MLLM)-Deepseek Janus
  • react 基础学习笔记
  • 【毕业设计】工具大礼包之『Maven3.6.3安装与配置』
  • git 上传项目到 github 并生成二维码
  • 离散制造和流程制造分别是什么?它们有什么区别?
  • PPT自动化:快速更换PPT图片(如何保留原图片样式等参数更换图片)
  • Linux安装Anaconda和Pytorch
  • pgstattuple查看表膨胀
  • 【图解版】力扣第146题:LRU缓存
  • 程序员数学:用Python学透线性代数和微积分 中文目录
  • Java学习Day48:苦战小黄龙(基础增删改查新建)
  • 23.Redis核心数据结构
  • 架构演进史
  • 浅谈C++之触发器用法
  • 云原生后端:构建现代化、高扩展性的应用基础设施
  • Docker入门之安装
  • wmware下centos9磁盘扩容/原分区扩容
  • STM32通信协议-I2C
  • RISC-V笔记——Pipeline依赖
  • kali的下载与配置
  • css 切角实现(全)
  • ffmpeg的视频滤镜: 抠图-chromakey