【d2l】环境和分布偏移

Posted by ShawnD on June 17, 2021

分布偏移纠正

经验风险与真实风险

让我们首先反思一下在模型训练期间到底发生了什么:我们迭代训练数据 ${(x_1, y_1), …, (x_n, y_n)}$ 的特征和相关的标签,并在每一个小批量之后更新模型 𝑓 的参数。为了简单起见,我们不考虑正则化,因此我们在极大地降低了训练损失:

\[\mathop{\text{minimize}}_f \frac{1}{n} \sum_{i=1}^n l(f(x_i), y_i) \tag{4.9.1}\]

其中 $l$ 是损失函数,用来度量给定响应标签 $y_i$,预测 $f(x_i)$ 的“糟糕程度”。统计学家称 (4.9.1) 中的这一项为经验风险。 经验风险 (empirical risk)是 为了近似 真实风险(true risk),整个训练数据上的平均损失,即从其真实分布 $p(x, y)$ 中抽取的所有数据的总体损失的期望值:

\[E_{p(x, y)}[l(f(x), y)] = \int \int l(f(x), y) p(x, y) dxdy \tag{4.9.2}\]

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

协变量偏移纠正

假设我们要估计一些依赖关系 $P(y \mid x)$, 我们有了带有标签的数据 $(x_i, y_i)$。 不幸的是, 观测值 $x_i$ 是从某些源分布 $q(x)$ 中得出的, 而不是从目标分布 $p(x)$ 中得出的。 幸运的是,依赖性假设意味着条件分布保持不变: $p(y \mid x) = q(y \mid x)$。 如果源分布 $q(x)$ 是 “错误的”, 我们可以通过在真实风险的计算中使用以下简单的恒等式来进行纠正:

\[\int \int l(f(x), y)p(y \mid x)p(x)dxdy = \int \int l(f(x), y) q(y \mid x) q(x) \frac{p(x)}{q(x)} dxdy \tag{4.9.3}\]

换句话说, 我们需要根据数据来自正确分布与来自错误分布的概率之比来重新衡量每个数据样本的权重:

\[\beta_i \mathop{=}^{def} \frac{p(x_i)}{q(x_i)} \tag{4.9.4}\]

将权重 $\beta_i$ 代入到每个数据样本 $(x_i, y_i)$ 中,我们可以使用”加权经验风险最小化“来训练模型:

\[\mathop{\text{minimize}}_f \frac{1}{n} \sum_{i=1}^{n} \beta_i l(f(x_i), y_i) \tag{4.9.5}\]

同样,我们不知道这个比率,我们需要估计它。有许多方法都可以用,包括一些花哨的算子理论方法,试图直接使用最小范数或最大熵原理重新校准期望算子。需要注意的是,对于任意一种这样的方法,我们都需要从全部两个分布中抽取样本:“真实”的分布 $p$, 通过访问测试数据获取,和训练集 $q$ 的分布(后者很容易获得)。但是请注意,我们只需要特征 $x \thicksim p(x)$; 我们不需要访问标签 $y \thicksim p(y)$ 。

在这种情况下,有一种非常有效的方法可以得到几乎与原始方法一样好的结果:logistic回归,这是softmax回归(见 3.4节 )的一个特例。这就是计算估计的概率比所需的全部内容。我们学习了一个分类器来区分从 $p(x)$ 抽取的数据 和 从 $q(x)$ 抽取的数据。果无法区分这两个分布,则意味着想相关的样本同样可能来自这两个分布中的任何一个。另一方面,任何可以很好区分的样本都应该相应地显著增加或减少权重。

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

\[P(z = 1 \mid x) = \frac{p(x)}{p(x) + q(x)} \quad \text{and} \quad \text{hence} \quad \frac{P(z=1 \mid x)}{p(z = -1 \mid x)} = \frac{p(x)}{q(x)} \tag{4.9.6}\]

因此,如果我们使用logistic回归方法,其中 $P(z = 1 \mid x) = \frac{1}{1 + \exp(-h(x))}$ ($h$ 是一个参数化函数), 则很自然有:

\[\beta_i = \frac{1/(1 + \exp(-h(x_i)))}{\exp(-h(x_i)) / (1 + \exp(-h(x_i)))} = \exp(h(x_i)) \tag{4.9.7}\]

因此,我们需要解决两个问题:第一个问题是区分来自两个分布的数据,然后是 (4.9.5) 中的加权经验风险最小化问题,在这个问题中,我们将对其中的项加权 $\beta_i$。

现在我们准备描述一个纠正算法。假设我们有一个训练集 ${(x_1, y_1), …, (x_n, y_n)}$ 和一个未标记的测试集 ${u_1, …, u_m}$。 对于协变量偏移,我们假设 $1 \leq i \leq n$ 的 $x_i$ 来自某个源分布, $u_i$ 来自目标分布。 以下是纠正协变量偏移的典型算法:

  • 生成一个二元分类训练集:${(x_1, -1), …, (x_n, -1), (u_1, 1), …, (u_m, 1)}$
  • 用 logistic 回归训练二元分类器得到函数 $ℎ$。
  • 使用 $\beta_i = \exp(h(x_i))$ 或 更好地 $\beta_i = \min (\exp(h(x_i)), c)$ ($c$ 为常量)对训练数据进行加权。
  • 使用权重 $\beta_i$ 进行 (4.9.5) 中 ${(x_1, y_1), …, (x_n, y_n)}$ 的训练。

请注意,上述算法依赖于一个重要的假设。 为了使该方案起作用,我们需要目标分布(例如,测试分布)中的每个数据样本在训练时出现的概率非零。如果我们找到 $p(x) > 0$ 但 $q(x) = 0$ 的点, 那么相应地重要性权重应该是无穷大。

标签偏移纠正

假设我们处理的是 $k$ 个类别的分类任务。使用 4.9.3.2节 中相同符号,$q$ 和 $p$ 中分别是源分布(例如训练时)和目标分布(例如测试时的分布)。假设标签的分布随时间变化: $q(y) \neq p(y)$, 但类别条件分布保持不变: $q(x \mid y) = p(x \mid y)$。 如果源分布 $q(y)$ 是 “错误的”, 我们可以根据 (4.9.2) 中定义的真实风险中的如下恒等式进行更正:

\[\int \int l(f(x), y) p(x \mid y) p(y) dxdy = \int \int l(f(x), y)q(x \mid y) q(y) \frac{p(y)}{q(y)}dxdy \tag{4.9.8}\]

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

\[\beta_i \mathop{=}^{def} \frac{p(y_i)}{q(y_i)} \tag{4.9.9}\]

标签偏移的一个好处是,如果我们在源分布上有一个相当好的模型,那么我们可以得到对这些权重的一致估计,而不需要处理周边的其他维度。在深度学习中,输入往往是高维对象,如图像,而标签通常是更简单的对象,如类别。

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

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

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

\[Cp(y) = \mu(\hat y) \tag{4.9.10}\]

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

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

概念偏移纠正

概念偏移很难用原则性的方式解决。例如,在一个问题突然从区分猫和狗偏移为区分白色和黑色动物的情况下,再假设我们可以做得比从零开始收集新标签和训练要好得多就是不合理的。幸运的是,在实践中,这种极端的偏移是罕见的。相反,通常情况下,任务的变化总是缓慢的。为了更具体说明,下面是一些例子:

  • 在计算广告中,新产品推出,旧产品变得不那么受欢迎了。这意味着广告的分布和受欢迎程度是逐渐变化的,任何点击率预测器都需要随之逐渐变化。
  • 由于环境的磨损,交通摄像头的镜头会逐渐退化,影响摄像头的图像质量。
  • 新闻内容逐渐变化(即大部分新闻保持不变,但出现新的新闻)。

在这种情况下,我们可以使用与训练网络相同的方法,使其适应数据的变化。换言之,我们使用现有的网络权值,简单地用新数据执行一些更新步骤,而不是从头开始训练。==mark text==