深度学习:基于PyTorch的模型解释工具Captum

引言

当我们训练神经网络模型时,我们通常只关注模型的整体性能,例如准确率或损失函数值。然而,理解模型为何做出特定预测,哪些输入特征对模型决策影响最大,对于构建可解释、可信赖和健壮的模型至关重要。为此,Facebook AI研究团队开发了captum库,这是一个开源项目,旨在帮助研究人员和开发人员更好地理解PyTorch模型的运行机制。

简介

Captum(拉丁文"comprehension"的词根,意为理解)是一个开源、可扩展的库,用于构建在 PyTorch 上的模型可解释性。Captum能够与任何PyTorch构建的模型相适配。它提供了多种解释算法,包括Integrated Gradients、Deep Lift、Feature Ablation等。这些算法可以针对单个输出或一组输出应用,并可在CPU或CUDA上运行。Captum还提供了一个交互式可视化工具,让用户能够轻松地观察和比较不同特征的影响。更多详细内容可见官网https://captum.ai/

示例

以下展示了如何安装和使用captum:

安装

# conda 安装
conda install captum -c pytorch
# pip 安装
pip install captum

解释模型的预测

利用Integrated Gradients算法分析输入对于目标输出的贡献度,并打印出结果。

from captum.attr import IntegratedGradients

# 假设model是我们用PyTorch构建和训练好的模型
# input是模型的输入数据
# target是我们想要解释的分类输出

ig = IntegratedGradients(model)
attr, delta = ig.attribute(input, target=target, return_convergence_delta=True)
print('Integrated Gradients Attribution:', attr)
print('Convergence Delta:', delta)

解释文本模型

情绪分析

示例加载预训练的CNN模型使用Integrated Gradients算法对IMDB数据集进行情绪分析。

在这里插入图片描述

问答

示例使用 Captum 解释用于问答的 BERT 模型,使用 Hugging Face 的预训练模型,并在 SQUAD 数据集上进行了微调,并展示了如何使用 hooks 来检查和更好地理解嵌入和注意力层。
在这里插入图片描述
在这里插入图片描述
示例使用attribution和Integrated Gradients算法分析注意力矩阵。此分析有助于我们识别不同tokens之间的强交互对,以进行特定模型预测。我们将我们的发现与向量norm进行比较,结果表明attribution分数比向量norm更有意义。
在这里插入图片描述

解释视觉模型

特征分析

示例加载预训练的CNN模型使用Integrated Gradients和DeepLIFT算法对CIFAR数据集进行特征分析。
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

特征消融

示例利用分割掩码来定义输入特征的消融组,并展示了这种分析如何帮助理解输入的哪些部分影响模型中的特定目标。
在这里插入图片描述

鲁棒性

示例将 FGSM 和 PGD 等鲁棒性攻击以及 MinParamPerturbation 和 AttackComparator 等鲁棒性指标应用于在 CIFAR 数据集上训练的模型。除此之外,它还演示了如何将鲁棒性技术与归因算法结合使用。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

解释多模态模型

示例针对开源视觉问答(VQA)模型,使用Integrated Gradients算法解释了几个测试问题的输出,并分析了模型文本和视觉部分的归因分数。
在这里插入图片描述

相关推荐

  1. PyTorch深度学习领域强大工具

    2024-03-30 22:56:03       13 阅读
  2. 深度学习Pytorch基础

    2024-03-30 22:56:03       20 阅读
  3. Pytorch深度学习

    2024-03-30 22:56:03       12 阅读
  4. 基于 PyTorch Python 深度学习:注意力机制

    2024-03-30 22:56:03       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-30 22:56:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-30 22:56:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-30 22:56:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-30 22:56:03       20 阅读

热门阅读

  1. 常用的 Git 命令

    2024-03-30 22:56:03       15 阅读
  2. ChatGPT指南:如何利用AI撰写优质学术论文

    2024-03-30 22:56:03       19 阅读
  3. IP地址的组成

    2024-03-30 22:56:03       17 阅读
  4. python习题小练习(挑战全对)

    2024-03-30 22:56:03       19 阅读
  5. darknet | darknet之nms do_nms_sort详解

    2024-03-30 22:56:03       22 阅读
  6. MyBatis 流式查询

    2024-03-30 22:56:03       18 阅读
  7. 智算AI平台介绍:初识volcano

    2024-03-30 22:56:03       20 阅读
  8. uniapp中怎么引入echarts(最简单)

    2024-03-30 22:56:03       20 阅读
  9. 【Ncaos】Oracle数据库支持

    2024-03-30 22:56:03       18 阅读