OOD检测方法总结及两种在测试输入生成中的应用

OOD检测方法:

OOD检测方法的基准提出:《A baseline for detecting misclassified and out-of-distribution examples in neural networks》

目前,OOD检测方法大致可以分为以下四类:

a. Softmax-based: 这类方法利用 pre-trained model 输出的最大 softmax 概率进行统计分析,统计发现 OOD 样本和 ID 样本 softmax 概率的分布情况,试图将二者的分布差距加大,然后选取合适的阈值来判断一个样本属于 OOD 还是 ID。这类方法简单且有效,不用修改分类模型的结构,也不需要训练一个 OOD 样本分类器。

MSP、ODIN原理:安全验证 - 知乎

b. Uncertainty: 由于模型的概率输出并不能直接表示模型的置信度(confidence)。因此这类方法让模型学习一个对输入样本的不确定性属性。面对测试数据,如果模型输入为 ID 样本,则不确定性低,相反,如果模型输入为 OOD 样本,则不确定性高。这类方法需要修改模型的网络结构来学习不确定性属性。

c. Generative Model: 这类方法主要利用 Variational Autoencoder 的 reconstruction error 或者其他度量方式来判断一个样本是否属于 ID 或 OOD 样本。主要的假设是,Autoencoder 的隐含空间(latent space) 能够学习出 ID 数据的明显特征(silent vector),而对于 OOD 样本则不行,因此OOD样本会产生较高的 reconstruction error. 这类方法只关注 OOD 检测性能,不关注 ID 数据本来的任务。

d. Classifier: 这类方法比较直接,使用分类器对提取的特征进行分类来判断是否为OOD样本。这类方法简单直接,也取得了不错的效果,有的方法修改网络结构为一个 n+1 类分类器, n 为原本分类任务的类别数,第 n+1 类则是 OOD 类;有的方法直接取提取特征来进行分类,不需要修改网络的结构。

在测试输入生成中的应用:

1. 《Distribution Awareness for AI System Testing》方法:无源码

种子池中初始只有训练数据。训练数据通过变异得到测试用例,测试用例输入给模型,从模型的预测结果分析:

  1. 模型预测正确+该测试用例对神经元覆盖度有增加+测试用例是ID数据->添加回种子池

  2. 模型预测错误->选择测试用例是ID数据的->添加回种子池

实验结果:

使用选择后的错误进行再训练,DNN 模型在测试集上的准确度比在不知道分布的错误上进行再训练的 DNN 模型高 10.05%。此外,当仅使用 OOD 错误进行再训练时,准确度平均下降 54.62%,进一步表明分布意识对于 DL 系统测试的重要性。

2. 《Distribution-Aware Testing of Neural Networks Using Generative Models》方法:有源码

受测 DNN 和深度生成模型在同一数据集上进行训练。由现有 DNN 测试生成技术为被测 DNN 生成的测试输入作为输入传递给估计其密度的深度生成模型(VAE)。决策逻辑使用这些密度将输入分类为有效或无效。

VAE的解码器输出编码器生成的样本的分布参数。使用这些分布参数计算从潜在变量生成原始测试输入的概率。此概率称为重建概率。与无效输入相比,有效输入具有更高的重建概率。

测试生成过程:

使用梯度上升的方式生成测试输入,然后测试生成的测试的有效性。如果此测试输入导致模型预测错误并且重建概率高于阈值(即ID数据),则更新覆盖范围并将输入添加到生成的测试套件中。该过程一直持续到处理完所有种子。

总结:以上均是排除了无效测试输入(OOD)的测试生成方式,但目前这种方式还只是初步研究的状态。给我们带来了一个未来研究方向。

参考:安全验证 - 知乎

安全验证 - 知乎

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海苔小饼干

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值