分布外(OOD)检测

从一个训练好的神经网络分类器开始,可以拟合以下模型之一,以帮助区分分布内和分布外的输入。

class fortuna.ood_detection.mahalanobis.MalahanobisOODClassifier(*args, **kwargs)[来源]

假设一个softmax神经分类器\(f(\mathbf{x})\)的预训练特征遵循一个具有共享协方差矩阵\(\mathbf{\Sigma}\)的类条件高斯分布:

\[\mathbb{P}(f(\mathbf{x})|y=k) = \mathcal{N}(f(\mathbf{x})|\mu_k, \mathbf{\Sigma})\]

对于所有 \(k \in {1,...,K}\),其中 \(K\) 是类别数量。

新测试样本 \(\mathbf{x}\) 的置信度分数 \(M(\mathbf{x})\) 是通过计算 \(f(\mathbf{x})\) 与拟合的类高斯分布之间的最大(平方)马氏距离得到的。

参见 Lee, Kimin, et al.

Parameters:

num_classes (int) – 用于分布内分类任务的类别数量。

property cov
Returns:

共享的协方差矩阵,形状为(d, d),其中d是嵌入大小。

Return type:

数组

fit(embeddings, targets)[来源]

使用类特定均值和共享协方差矩阵将多元高斯拟合到训练数据。

Parameters:
  • embeddings (数组) – 形状为 (n, d) 的嵌入,其中 n 是训练样本的数量,d 是嵌入的大小。

  • targets (Array) – 一个长度为 n 的数组,包含每个输入样本的真实标签。

Return type:

None

property mean
Returns:

一个形状为(num_classes, d)的矩阵,其中num_classes是分布内分类任务中的类别数量。 矩阵的第i行对应于第i类的拟合高斯分布的均值。

Return type:

数组

score(embeddings)[来源]

新测试样本 \(\mathbf{x}\) 的置信度分数 \(M(\mathbf{x})\) 是通过计算 \(f(\mathbf{x})\) 与拟合的类高斯分布之间的最大(平方)马氏距离得到的。

高分表示测试样本 \(\mathbf{x}\) 被识别为OOD。

Parameters:

embeddings (数组) – 形状为 (n, d) 的嵌入,其中 n 是测试样本的数量,d 是嵌入的大小。

Returns:

一个长度为n的分数数组。

Return type:

数组

class fortuna.ood_detection.ddu.DeepDeterministicUncertaintyOODClassifier(*args, **kwargs)[来源]

一个高斯混合模型 \(q(\mathbf{x}, z)\),每个类别 \(k \in {1,...,K}\) 有一个单一的高斯混合成分, 在训练后被拟合。 每个类别成分通过计算特征向量 \(f(\mathbf{x})\) 的经验均值 \(\mathbf{\hat{\mu}_k}\) 和协方差矩阵 \(\mathbf{\hat{\Sigma}_k}\) 来拟合。

新测试样本的置信度分数 \(M(\mathbf{x})\) 是通过计算特征表示的负边际似然获得的。

参见 Mukhoti, Jishnu, et al.

Parameters:

num_classes (int) – 用于分布内分类任务的类别数量。

property cov
Returns:

拟合GMM的每类协方差矩阵。数组的形状为(num_classes, d, d),其中num_classes是分布内分类任务中的目标类别数量,d是嵌入大小。

Return type:

数组

fit(embeddings, targets)[来源]

使用类特定的均值和协方差矩阵将多元高斯分布拟合到训练数据。

Parameters:
  • embeddings (数组) – 形状为 (n, d) 的嵌入,其中 n 是训练样本的数量,d 是嵌入的大小。

  • targets (Array) – 一个长度为 n 的数组,包含每个输入样本的真实标签。

Return type:

None

property mean: Array | ndarray
Returns:

拟合GMM的每类均值向量。数组的形状为(num_classes, d),其中num_classes是分布内分类任务中目标类别的数量,d是嵌入大小。

Return type:

数组

score(embeddings)[来源]

新测试样本 \(\mathbf{x}\) 的置信度分数 \(M(\mathbf{x})\) 是通过计算特征表示的负边际似然获得的 \(-q(f(\mathbf{x})) = - \sum\limits_{k}q(f(\mathbf{x})|y) q(y)\)

高分表示测试样本 \(\mathbf{x}\) 被识别为OOD。

Parameters:

embeddings (数组) – 形状为 (n, d) 的嵌入,其中 n 是测试样本的数量,d 是嵌入的大小。

Returns:

一个长度为n的分数数组。

Return type:

数组