跳转到主要内容

深度洞察与神经网络分析

项目描述

build Documentation Status workflow scc badge CII Best Practices fair-software.eu DOI

Logo_ER10

深度洞察与神经网络分析

DIANNA是一个Python包,将可解释人工智能(XAI)引入到您的科研项目中。它使用简单的统一接口封装了精心挑选的XAI方法。它是为(学术)研究人员和研究软件工程师构建的,他们在机器学习项目中工作。

为什么选择DIANNA?

DIANNA软件旨在满足(X)AI研究人员以及主要使用或将要使用AI模型进行研究的各个领域科学家(无需在(X)AI方面是专家)的需求。DIANNA是面向未来的:非常少数支持Open Neural Network Exchange (ONNX)格式的XAI库之一。

在研究了广泛的XAI(可解释人工智能)领域后,我们在XAI分类法中选择了重点关注方法、数据模态和问题类型。我们的选择基于科学文献中最大的使用量,以下是用图形表示的XAI分类法:

XAI_taxonomy

DIANNA的关键点

  • 为非(X)AI专家提供易于使用的界面
  • 实现了知名XAI方法LIME、RISE和KernelSHAP,这些方法是根据系统性和客观的评价标准选择的
  • 支持神经网络模型的事实标准ONNX
  • 支持图像、文本、时间序列和表格数据模态,当前正在开发嵌入
  • 包含简单的直观图像、文本、时间序列和表格基准,可以帮助您进行XAI研究
  • 包括科学用例教程
  • 易于扩展到其他XAI方法

有关DIANNA与其他工具相比的独特优势的更多信息,请参阅语境景观

安装

workflow pypi badge supported python versions

您可以使用任何支持的Python版本的pip从PyPI安装DIANNA(请参阅徽章)

python3 -m pip install dianna

要直接从GitHub仓库安装最新开发版本,请运行

python3 -m pip install git+https://github.com/dianna-ai/dianna.git

如果您在导入dianna时遇到与OpenMP相关的错误,请查看此问题以获取可能的解决方案。

仅适用于配备M1 Pro芯片的MacBook Pro用户的前置条件

  • 要安装TensorFlow,您可以按照这个教程进行。
  • 要安装TensorFlow Addons,您可以按照这些步骤进行。有关进一步阅读,请参阅此问题。请注意,此临时解决方案仅适用于macOS版本大于等于12.0。请注意,此步骤可能已经更改,请参阅https://github.com/dianna-ai/dianna/issues/245
  • 在安装DIANNA之前,在setup.cfg文件中注释掉tensorflow要求(M1的tensorflow包名为tensorflow-macos)。

入门指南

您需要

您将得到

  • 在数据项上叠加的相关性地图

任何数据模态和解释器的模板示例

  1. 提供您的训练模型数据项文本、图像、时间序列或表格
model_path = 'your_model.onnx'  # model trained on your data modality
data_item = <data_item> # data item for which the model's prediction needs to be explained 
  1. 如果任务是分类:您的模型已经训练了哪些类别
labels = [class_a, class_b]   # example of binary classification labels

想解释这些类别中的哪个?

explained_class_index = labels.index(<explained_class>)  # explained_class can be any of the labels
  1. 使用您选择的解释器'LIME'、'RISE'或'KernalSHAP')运行dianna,并可视化输出
explanation = dianna.<explanation_function>(model_path, data_item, explainer)
dianna.visualization.<visualization_function>(explanation[explained_class_index], data_item)

文本和图像使用示例

让我们用文本数据来阐述上面的模板。感兴趣的数据项是句子的一部分,是电影评论的一部分,并且模型已经训练成将评论分类为正面和负面情绪类别。我们感兴趣的是哪些单词对模型将评论分类为正面有贡献(红色),哪些单词对模型将评论分类为负面有贡献,并且我们想使用LIME解释器

model_path = 'your_text_model.onnx'
# also define a model runner here (details in dedicated notebook)
review = 'The movie started great but the ending is boring and unoriginal.' 
labels = ["negative", "positive"] 
explained_class_index = labels.index("positive")  
explanation = dianna.explain_text(model_path, text, 'LIME')
dianna.visualization.highlight_text(explanation[explained_class_index], model_runner.tokenizer.tokenize(review))

image

以下是如何使用dianna来解释图像中的哪些部分对将图像分类为蜜蜂有贡献(红色)或负贡献(蓝色)的另一个示例。已经训练好的模型是ImageNet模型,用于区分1000个类别(在labels中指定)。对于与文本相比维度更高的图像数据,还有一些具体的问题需要考虑

model_path = 'your_image_model.onnx' 
image = PIL.Image.open('your_bee_image.jpeg') 
axis_labels = {2: 'channels'} 
explained_class_index = labels.index('bee') 
explanation = dianna.explain_image(model_path, image, 'RISE', axis_labels=axis_labels, labels=labels)
dianna.visualization.plot_image(explanation[explained_class_index], utils.img_to_array(image)/255., heatmap_cmap='bwr')
plt.show()

那么为什么ImageNet会认为同样的图像是花园蜘蛛呢?

explained_class_index = labels.index('garden_spider') # interested in the image being classified as a garden spider
explanation = dianna.explain_image(model_path, image, 'RISE', axis_labels=axis_labels, labels=labels)
dianna.visualization.plot_image(explanation[explained_class_index], utils.img_to_array(image)/255., heatmap_cmap='bwr')
plt.show()

概述教程

我们的概述教程中提供了关于如何使用受支持的解释器和如何使用DIANNA处理所有受支持的数据模态的完整示例。

演示视频(计划更新)

Watch the video on YouTube

重要:对超参数的敏感性

解释器对超参数的选择非常敏感!在这项工作中,研究了这种对超参数的敏感性,并得出了有价值的结论。DIANNA中每个解释器使用的默认超参数以及教程示例的值可以在教程README中找到。

仪表板

使用DIANNA仪表板探索您训练模型的解释(目前支持图像、文本和时间序列分类)。点击此处获取更多信息。

Dianna dashboard screenshot

数据集

DIANNA附带简单数据集。它们的主要目的是提供对XAI方法工作原理的直观见解。它们可以用作评估和比较现有和新XAI方法的基准。

图像

数据集 描述 示例 生成
二元MNIST mnist_zero_and_one_half_size 灰度图像的数字“1”和“0”——著名MNIST数据集中用于手写数字分类的2类子集。 BinaryMNIST 二元MNIST数据集生成
简单几何形状(圆形和三角形) Simple Geometric Logo 圆形和三角形的图像,用于2类几何形状分类。形状的大小和方向以及背景具有不同的均匀灰度水平。 SimpleGeometric 简单几何形状数据集生成
简单科学(LeafSnap30) LeafSnap30 Logo 树木叶子的彩色图像——LeafSnap数据集中用于自动识别北美树木物种的30类后处理子集。 LeafSnap LeafSnap30数据集生成

文本

数据集 描述 示例 生成
斯坦福情感树库 nlp-logo_half_size 用于预测电影评论情感(正面或负面)的数据集。 这部电影实际上既不好笑,也不太机智。 情感树库

时间序列

数据集 描述 示例 生成
咖啡数据集 Coffe Logo 食品光谱时间序列数据集,用于区分罗布斯塔咖啡豆和阿拉比卡咖啡豆的两个类别问题。 example image 数据源
天气数据集 Weather Logo 天气预测数据集的轻版本,其中包含2000年至2010年间11个欧洲地点的每日观测数据(89个特征)。 example image 数据源

表格

数据集 描述 示例 生成
企鹅数据集 Penguins Logo 帕默群岛(南极洲)企鹅数据集是一个优秀的入门级数据集,用于数据探索和可视化,类似于著名的鸢尾花数据集。 example image 数据源
天气数据集 Weather Logo 天气预测数据集的轻版本,其中包含2000年至2010年间11个欧洲地点的每日观测数据(89个特征)。 example image 数据源

ONNX模型

我们使用ONNX! ONNX是一个优秀的统一神经网络标准,可用于促进可重复的科学。使用ONNX对您的模型进行优化也能提升性能!如果您模型目前使用的是其他流行的深度神经网络(DNN)格式,以下是一些简单的转换方法:

更多转换器、示例和教程可以在ONNX教程页面找到。

以下是一些展示我们如何在大基准数据集上创建模型的笔记本链接

图像

模型 生成
二进制MNIST模型 二进制MNIST模型生成
简单的几何模型 简单的几何形状模型生成
简单的科学模型 LeafSnap30模型生成

文本

模型 生成
电影评论模型 斯坦福情感树库模型生成

时间序列

模型 生成
咖啡模型 咖啡模型生成
季节预测模型 季节预测模型生成
快速射电暴分类模型 快速射电暴分类模型生成

表格

模型 生成
企鹅模型(分类) 企鹅模型生成
日照小时数预测模型(回归) 日照小时数预测模型生成

我们预见ONNX科学模型动物园的诞生...

教程

DIANNA支持不同的数据模态和XAI方法(解释器)。我们使用客观标准评估了许多解释器(请参阅如何找到您的AI解释器博客文章)。下表包含相关XAI方法的论文链接(有关某些方法的解释性视频,请参阅教程)。DIANNA教程涵盖至少一个数据集上每种支持的方法和数据模态,使用默认或调整过的超参数。关于DIANNA扩展到更多数据模态和解释器的计划,请参阅路线图

数据 \ XAI RISE LIME KernelSHAP
图像
文本
时间序列
表格 计划中
嵌入 进行中
图形* 下一步 ... ...

LRPPatternAttribution也出现在我们彻底评估的解释器的前五名中。此外,GradCAM最近被发现是语义连续的欢迎通过添加这些和更多(新)后置解释性方法到ONNX模型上做出贡献!

科学应用案例

我们的目标是让科学界接受XAI作为科学问题新颖和未探索视角的来源。在此,我们提供了教程,介绍使用XAI的具体科学用例。

用例(数据) \ XAI RISE LIME KernelSHAP
生物学(植物形态学):树叶分类(图像)
天文学:快速射电暴检测(时序数据)
地球科学(栅格数据) 计划中 ... ...
社会科学(文本) 进行中 ... ...
气候 计划中 ... ...

参考文档

有关使用特定DIANNA函数的详细信息,请访问在Readthedocs托管的文档页面

贡献

如果您想为DIANNA的开发做出贡献,请查看贡献指南。有关开发者安装、运行测试、生成文档、版本控制和发布的信息,请参阅我们的开发者文档

如何引用我们

DOI RSD

如果您使用此包进行科学工作,请考虑直接引用该软件

Ranguelova, E., Bos, P., Liu, Y., Meijer, C., Oostrum, L., Crocioni, G., Ootes, L., Chandramouli, P., Jansen, A., Smeets, S. (2023). dianna (*[VERSION YOU USED]*). Zenodo. https://zenodo.org/record/5592606

或作为JOSS论文引用

Ranguelova et al., (2022). DIANNA: Deep Insight And Neural Network Analysis. Journal of Open Source Software, 7(80), 4493, https://doi.org/10.21105/joss.04493

有关将软件引用导出到BibTteX和其他格式的信息,请参阅Zenodo页面JOSS页面

鸣谢

此软件包是用CookiecutterNLeSC/python-template创建的。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

dianna-1.6.0.tar.gz (33.1 MB 查看哈希值

上传时间:

构建分布

dianna-1.6.0-py3-none-any.whl (33.1 MB 查看哈希值

上传时间: Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面