目录
目录README.md

DFauLo 工具

一、描述

DfauLo 是一个用于深度神经网络(DNN)的动态数据故障定位工具,能够定位深度学习数据集中标签错误和噪声数据。受传统基于变异的代码故障定位方法启发,DfauLo 生成多个原始训练DNN模型的变体,并将提取的特征映射为可疑度得分,指示给定数据作为数据故障的概率。DfauLo 是首个动态数据故障定位技术,根据用户反馈对嫌疑数据进行优先处理,并在训练期间对未见的数据故障提供通用化支持。

overview

二、在任意自定义数据集上运行DfauLo

(1)超参数说明:

--dataset_name : 数据集名称,例如: EMNIST

--model_name : 模型名称,例如: WaveMix

--image_size : 输入到模型中的数据的维度,例如: (32, 32, 3)

--image_set : 训练集或测试集,例如: train

--hook_layer : 您需要从中提取特征的模型表示层名称(建议使用线性层之前的参数),例如: conv

--rm_ratio : 执行变异时要删除的数据比例, 例如: 0.05

--retrain_epoch : DfauLo 工具进行模型微调的轮次数,例如: 1

--retrain_bs : DfauLo 工具进行模型微调的批处理大小,例如: 64

(2)需要进行的数据集和模型准备:

A.数据集:

您应首先准备数据集,根目录为数据集名称(dataset_name),下级目录代表该数据集的训练集/测试集,每个类别目录以数据集的类别名称命名,并存储相应类别的图像,例如:

注意,数据集命名应与dataset_name参数一致

CIFAR # dataset name
|-- train # trainset
    |-- dog # class name
        |-- XX.png # corrensponding images
        |-- XX.png
        |-- ...
    |-- cat
        |-- XX.png
        |-- XX.png
        |-- ...
    |-- ...
|-- classes.json # class name and corresponding index

B.模型:

I. class文件表示你在该数据集上训练该模型时所使用的类别名称其对应的索引。需要按如下格式编写:

注意,class文件命名应遵循{dataset_name}_classes.json格式,例如EMNIST_classes.json

{
    "dog": 0,
    "cat": 1,
    "person": 2,
     ...
}
II. 模型训练参数,DFauLo 需要类似以下这些你在该数据集上训练该模型时的参数以支持运行。

注意,参数文件命名应遵循{dataset_name}_model_args.pth格式,例如EMNIST_model_args.pth

transform = transforms.Compose([
    # MNIST transform
    transforms.Grayscale(num_output_channels=1),
    transforms.ToTensor(),
]) #data transformer

torch.save(
    {
        'transform': transform,
        'loss_fn': nn.CrossEntropyLoss(),
        'optimizer': "SGD"
    },
    '../dataset/CIFAR10_model_args.pth'
)

注意,在训练模型时,使用带有正则化的 transform 可以为 DfauLo 获得更好的效果。

III. 模型类文件(PyTorch)。你需要提供模型类文件以支持DFauLo对模型进行特征提取,例如: WaveMix.py

注意,模型文件命名应遵循{model_name}.py格式,例如WaveMix.py,其中模型类应以model_name为名。

IV. 模型权重文件。你需要提供在dataset_name上初步训练好的模型权重。

注意,模型权重命名应遵循{model_name}.pth格式

三、运行结果展示

以下展示了一些在基准数据集 MNIST 上运行 DfauLo.py 的结果:


label: 4

label: 7

label: 6

label: 7

label: 1

引用

如果您用到该库中的相关代码,请你引用以下内容(bibtex):

@inproceedings{yin2023dynamic,
  title={Dynamic Data Fault Localization for Deep Neural Networks},
  author={Yin, Yining and Feng, Yang and Weng, Shihao and Liu, Zixi and Yao, Yuan and Zhang, Yichi and Zhao, Zhihong and Chen, Zhenyu},
  booktitle={Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering},
  pages={1345--1357},
  year={2023}
}
关于

针对深度学习系统中数据质量问题频发、数据故障定位难度大等问题,该工具提供了一种基于动态反馈机制的数据缺陷定位方法——DFauLo。该方法通过模型突变技术,生成多个深度神经网络突变体,用于放大数据故障特性,并结合选择状态、输出结果和预测损失等多种故障特征,构建了一种可疑度评分模型。与此同时,该工具创新性地引入动态反馈机制,根据人工检查的结果对可疑数据的优先级进行实时更新,从而有效提高故障定位的精度和

2.3 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号