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

【动手学深度学习】4.9. 环境和分布偏移


目录

    • 4.9. 环境和分布偏移
      • 1)分布偏移的类型
      • 2)分布偏移纠正
        • (1)经验风险与真实风险
        • (2)协变量偏移纠正
        • (3)标签偏移纠正
        • (4)概念偏移纠正
      • 3)学习问题的分类法
      • 4)小结


.

4.9. 环境和分布偏移

机器学习应用常被忽视数据来源和模型输出处理。许多模型在测试集上表现好,但数据分布改变时会部署失败,甚至模型决策本身可能破坏数据分布(如贷款模型基于“穿牛津鞋就会还款”决策,导致所有人都穿牛津鞋但信用未提升)。解决这些问题需多方面的思考和方法,如优化数据、强化学习、考虑算法伦理等,以提升机器学习系统的可靠性和适应性。

.

1)分布偏移的类型

分布偏移指训练与测试数据分布不同,如训练数据来自分布 pS(x,y)p_S(\mathbf{x}, y)pS(x,y),测试数据来自 pT(x,y)p_T(\mathbf{x}, y)pT(x,y)。**若无假设两者关系,学习到一个分类器是不可能的。**如狗猫分类问题,若输入分布不变但标签全翻转,无法区分情况。需在合理假设下用算法检测调整分布偏移,提升分类器精度。

分布偏移的类型:

  • 协变量偏移:指特征的分布发生了变化,但标签函数保持不变。例如,训练集包含真实照片,测试集包含卡通图片时,模型可能难以适应新的特征分布。

  • 标签偏移:指标签的边缘概率分布发生了变化,但类别条件分布保持不变。例如,预测疾病时,疾病的发病率(标签的边缘概率)可能随时间变化,但症状与疾病的关联关系保持不变。

  • 概念偏移:指标签的定义发生变化。例如,不同地区对“软饮”的名称存在差异,这可能导致机器翻译系统在不同地区产生不同的翻译结果。

.

2)分布偏移纠正

许多情况下训练和测试分布是不同的。 在一些情况下,可以运用策略来应对这种偏移,从而做得更好。

.

(1)经验风险与真实风险

训练数据的特征x和相关的标签y经过迭代,在每一个小批量之后更新模型f的参数。为了简单起见,我们不考虑正则化,因此极大地降低了训练损失:

minimizef1n∑i=1nl(f(xi),yi)\mathop{\mathrm{minimize}}_f \frac{1}{n} \sum_{i=1}^n l(f(\mathbf{x}_i), y_i) minimizefn1i=1nl(f(xi),yi)

其中,l是损失函数,用来度量:给定标签yiy_iyi,预测f(xi)f(\mathbf{x}_i)f(xi)的“糟糕程度”。以上公式称为经验风险(empirical risk),是为了近似真实风险(true risk),整个训练数据上的平均损失,即从其真实分布p(x, y)中抽取的所有数据的总体损失的期望值:

Ep(x,y)[l(f(x),y)]=∫∫l(f(x),y)p(x,y)dxdyE_{p(\mathbf{x}, y)} [l(f(\mathbf{x}), y)] = \int\int l(f(\mathbf{x}), y) p(\mathbf{x}, y) \;d\mathbf{x}dy Ep(x,y)[l(f(x),y)]=∫∫l(f(x),y)p(x,y)dxdy

实践中,通常无法获得总体数据。因此,经验风险最小化是一种实用的机器学习策略,希望能近似最小化真实风险。

.

(2)协变量偏移纠正

假设对于带标签的数据(x_i , y_i),我们要评估P(y | x)。

然而,观测值x_i是从源分布q(x)中得出,而不是从目标分布p(x)中得出的。即q(x) != p(x)。

幸运的是,有依赖性假设,即:

  • 尽管输入特征 x 的分布发生了变化 ( q(x) != p(x) ),但是给定一个具体的输入特征 x 时,输出标签 y 的条件分布并没有改变。

  • 用数学符号表示就是:p(y | x) = q(y | x);

如果源分布q(x)是“错误的”,我们可以通过在真实风险的计算中,使用以下简单的恒等式来进行纠正:

∫∫l(f(x),y)p(y∣x)p(x)dxdy=∫∫l(f(x),y)q(y∣x)q(x)p(x)q(x)dxdy.\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=defp(xi)q(xi)\beta_i \stackrel{\mathrm{def}}{=} \frac{p(\mathbf{x}_i)}{q(\mathbf{x}_i)} βi=defq(xi)p(xi)

将权重βi\beta_iβi代入到每个数据样本(xi,yi)(\mathbf{x}_i, y_i)(xi,yi)中, 我们可以使用“加权经验风险最小化”来训练模型:

minimizef1n∑i=1nβil(f(xi),yi)\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)

为了简单起见,假设我们分别从p(x)和q(x) 两个分布中抽取相同数量的样本。现在用z标签表示:从p抽取的 数据为1,从q抽取的数据为−1。然后,混合数据集中的概率由下式给出

P(z=1∣x)=p(x)p(x)+q(x)and hence P(z=1∣x)P(z=−1∣x)=p(x)q(x).P(z=1 \mid \mathbf{x}) = \frac{p(\mathbf{x})}{p(\mathbf{x})+q(\mathbf{x})} \text{ and hence } \frac{P(z=1 \mid \mathbf{x})}{P(z=-1 \mid \mathbf{x})} = \frac{p(\mathbf{x})}{q(\mathbf{x})}. P(z=1x)=p(x)+q(x)p(x) and hence P(z=1x)P(z=1x)=q(x)p(x).

如果我们使用对数几率回归(logistic regression)方法,其中 P(z=1∣x)=11+exp⁡(−h(x))P(z=1 \mid \mathbf{x})=\frac{1}{1+\exp(-h(\mathbf{x}))}P(z=1x)=1+exp(h(x))1 (h是一个参数化函数),则很自然有:

βi=1/(1+exp⁡(−h(xi)))exp⁡(−h(xi))/(1+exp⁡(−h(xi)))=exp⁡(h(xi))\beta_i = \frac{1/(1 + \exp(-h(\mathbf{x}_i)))}{\exp(-h(\mathbf{x}_i))/(1 + \exp(-h(\mathbf{x}_i)))} = \exp(h(\mathbf{x}_i)) βi=exp(h(xi))/(1+exp(h(xi)))1/(1+exp(h(xi)))=exp(h(xi))

因此,我们需要解决两个问题:

  • 第一个问题是关于区分来自两个分布的数据;

  • 第二个问题是关于加权经验风险的最小化问题。

完整的协变量偏移纠正算法:

现在,我们来看一下完整的协变量偏移纠正算法。

假设我们有训练集 {(x1,y1),...,(xn,yn)}\{(x_1, y_1), . . . ,(x_n, y_n)\}{(x1,y1),...,(xn,yn)} 和测试集 {u1,...,um}\{u_1, . . . , u_m\}{u1,...,um}。对于协变量偏移,假设1 ≤ i ≤ n的x_i来自某个源分布,u_i来自目标分布。以下是纠正协变量偏移的典型算法:

  • 生成一个二元分类训练集:{(x1,−1),…,(xn,−1),(u1,1),…,(um,1)}\{(\mathbf{x}_1, -1), \ldots, (\mathbf{x}_n, -1), (\mathbf{u}_1, 1), \ldots, (\mathbf{u}_m, 1)\}{(x1,1),,(xn,1),(u1,1),,(um,1)}

  • 用对数几率回归训练二元分类器得到函数 h。

  • 使用βi=exp⁡(h(xi))\beta_i = \exp(h(\mathbf{x}_i))βi=exp(h(xi)) 或更好的 βi=min⁡(exp⁡(h(xi)),c)\beta_i = \min(\exp(h(\mathbf{x}_i)), c)βi=min(exp(h(xi)),c)( c为常量)对训练数据进行加权。

  • 使用权重 βi\beta_iβi 进行训练。

请注意,上述算法依赖于一个重要的假设: 需要目标分布(例如,测试分布)中的每个数据样本在训练时出现的概率非零。 如果我们找到 p(x)>0p(\mathbf{x}) > 0p(x)>0q(x)=0q(\mathbf{x}) = 0q(x)=0 的点, 那么相应的重要性权重会是无穷大。

.

(3)标签偏移纠正

假设处理k个类别的分类任务。q和p中分别是源分布(例如训练时的分布) 和目标分布(例如测试时的分布)。假设标签的分布随时间变化:q(y) != p(y),但类别条件分布保持不变: q(x | y) = p(x | y)。如果源分布q(y)是“错误的”,我们可以根据真实风险中的恒等式进行更 正:

∫∫l(f(x),y)p(x∣y)p(y)dxdy=∫∫l(f(x),y)q(x∣y)q(y)p(y)q(y)dxdy.\begin{aligned} \int\int l(f(\mathbf{x}), y) p(\mathbf{x} \mid y)p(y) \;d\mathbf{x}dy = \int\int l(f(\mathbf{x}), y) q(\mathbf{x} \mid y)q(y)\frac{p(y)}{q(y)} \;d\mathbf{x}dy. \end{aligned} ∫∫l(f(x),y)p(xy)p(y)dxdy=∫∫l(f(x),y)q(xy)q(y)q(y)p(y)dxdy.

这里,重要性权重将对应于标签似然比率

βi=defp(yi)q(yi)\beta_i \stackrel{\mathrm{def}}{=} \frac{p(y_i)}{q(y_i)} βi=defq(yi)p(yi)

为估计目标标签分布,首先采用性能相当好的现成的分类器(通常基于训练数据进行训练),并使用验证集(也来自训练分布)计算其混淆矩阵。混淆矩阵C是一个k × k矩阵,其中每列对应于标签类别,每行对应于模型的预测类别。每个单元格的值cijc_{ij}cij是验证集中,真实标签为j,而我们的模型预测为i的样本数量所占的比例。

现在,我们不能直接计算目标数据上的混淆矩阵,因为我们无法看到真实环境下的样本的标签,除非我们再搭建一个复杂的实时标注流程。 然而,我们所能做的是将所有模型在测试时的预测取平均数, 得到平均模型输出 μ(y^)∈Rk\mu(\hat{\mathbf{y}}) \in \mathbb{R}^kμ(y^)Rk, 其中第i个元素μ(y^i)\mu(\hat{y}_i)μ(y^i)是我们模型预测测试集中的总预测分数。

结果表明,如果我们的分类器一开始就相当准确, 并且目标数据只包含我们以前见过的类别, 以及如果标签偏移假设成立(这里最强的假设), 我们就可以通过求解一个简单的线性系统来估计测试集的标签分布。

Cp(y)=μ(y^)\mathbf{C} p(\mathbf{y}) = \mu(\hat{\mathbf{y}}) Cp(y)=μ(y^)

因为作为一个估计,∑j=1kcijp(yj)=μ(y^i)\sum_{j=1}^k c_{ij} p(y_j) = \mu(\hat{y}_i)j=1kcijp(yj)=μ(y^i) 对所有1 ≤ i ≤ k成立,其中p(yj)p(y_j )p(yj)是k维标签分布向量p(y)的第jthj^{th}jth元 素。如果我们的分类器一开始就足够精确,那么混淆矩阵C将是可逆的,进而我们可以得到一个解 p(y)=C−1μ(y^)p(\mathbf{y}) = \mathbf{C}^{-1} \mu(\hat{\mathbf{y}})p(y)=C1μ(y^)

因为我们观测源数据上的标签,所以很容易估计分布q(y)。那么对于标签为yiy_iyi的任何训练样本i,我们可以使 用我们估计的p(yi)/q(yi)p(y_i)/q(y_i)p(yi)/q(yi)比率来计算权重βi\beta_iβi,并将其代入计算加权经验风险最小化。

.

(4)概念偏移纠正

概念偏移很难用原则性的方式解决。 例如,在一个问题突然从“区分猫和狗”偏移为“区分白色和黑色动物”的情况下, 除了从零开始收集新标签和训练,别无妙方。 幸运的是,在实践中这种极端的偏移是罕见的。 相反,通常情况下,概念的变化总是缓慢的。 比如下面是一些例子:

  • 在计算广告中,新产品推出后,旧产品变得不那么受欢迎了。这意味着广告的分布和受欢迎程度是逐渐变化的,任何点击率预测器都需要随之逐渐变化;

  • 由于环境的磨损,交通摄像头的镜头会逐渐退化,影响摄像头的图像质量;

  • 新闻内容逐渐变化(即新新闻的出现)。

在这种情况下,我们可以使用与训练网络相同的方法,使其适应数据的变化。 换言之,我们使用新数据更新现有的网络权重,而不是从头开始训练。

.

3)学习问题的分类法

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

批量学习

  • 定义:使用一组训练数据(特征和标签)来训练模型,然后在相同分布的新数据上应用该模型进行预测。

  • 示例:例如,用大量猫和狗的图片训练猫检测器,将模型部署到智能猫门系统中,以控制只有猫可以进入。

在线学习

  • 定义:模型通过单个数据来更新,每次观察数据后进行预测或决策,然后根据结果调整模型。

  • 示例:预测股票价格用于交易,之后根据盈亏调整策略。

老虎机

  • 定义:与一般学习问题不同,老虎机问题中的行动是有限的,可以采取的策略也有限。

控制

  • 定义:环境会记住之前的行为并做出相应反应,如咖啡锅炉的温度控制。近年来,控制理论(如PID的变体)也被用于自动调整超参数, 以获得更好的解构和重建质量,提高生成文本的多样性和生成图像的重建质量

强化学习

  • 定义:根据环境采取行动以最大化预期利益,如国际象棋、围棋、驾驶汽车的控制器等。

考虑到环境

  • 定义:强调环境变化对策略有效性的影响,如市场套利机会可能消失,环境变化的速度和方式会影响算法选择。

.

4)小结

  • 在许多情况下,训练集和测试集并不来自同一个分布。这就是所谓的分布偏移。

  • 真实风险是从真实分布中抽取的所有数据的总体损失的预期。然而,这个数据总体通常是无法获得的。经验风险是训练数据的平均损失,用于近似真实风险。在实践中,我们进行经验风险最小化。

  • 在相应的假设条件下,可以在测试时检测并纠正协变量偏移和标签偏移。在测试时,不考虑这种偏移可能会成为问题。

  • 在某些情况下,环境可能会记住自动操作并以令人惊讶的方式做出响应。在构建模型时,我们必须考虑到这种可能性,并继续监控实时系统,并对我们的模型和环境以意想不到的方式纠缠在一起的可能性持开放态度。

.


声明:资源可能存在第三方来源,若有侵权请联系删除!

http://www.lryc.cn/news/583323.html

相关文章:

  • MyBatis之数据操作增删改查基础全解
  • tinyxml2 开源库与 VS2010 结合使用
  • MySQL8.0基于GTID的组复制分布式集群的环境部署
  • 如何通过配置gitee实现Claude Code的版本管理
  • SpringBoot校园疫情防控系统源码
  • Flink1.20.1集成Paimon遇到的问题
  • stm32Cubmax的配置
  • 微信小程序91~100
  • Pycharm 报错 Environment location directory is not empty 如何解决
  • 基于Spring Boot+Vue的巴彦淖尔旅游网站(AI问答、腾讯地图API、WebSocket及时通讯、支付宝沙盒支付)
  • Ragas的Prompt Object
  • NHibernate案例
  • SAP ERP与Oracle EBS对比,两个ERP系统有什么区别?
  • aichat-core简化 LLM 与 MCP 集成的前端核心库(TypeScript)
  • C#项目 在Vue/React前端项目中 使用使用wkeWebBrowser引用并且内部使用iframe网页外链 页面部分白屏
  • Spring IoC 如何实现条件化装配 Bean?
  • HUAWEI HiCar6.0的新变化
  • 一条Redis命令是如何执行的?
  • C++随机打乱函数:简化源码与原理深度剖析
  • 从零开始学前端html篇2
  • 微信小程序控制空调之微信小程序篇
  • 双esp8266-01s间TCP通讯
  • 图像硬解码和软解码
  • RAM带宽计算及分析
  • 区块链系统开发技术应用构建可信数字生态链
  • 以太坊智能合约核心技术解析与应用实践
  • Android 组件内核
  • NO.2数据结构线性表|线性表|顺序表|链表|单链表|双向链表|循环链表|静态链表|插入|删除
  • Qt-翻金币案例
  • 鸿蒙商城开发:ZKmall开源商城系统特性适配与性能优化