add explainable extension (#343)

Co-authored-by: lixiaohui <lixiaohui33@huawei.com>
Co-authored-by: Luo Mai <luo.mai.cs@gmail.com>
This commit is contained in:
huygens12
2022-05-23 11:37:17 +08:00
committed by GitHub
parent 2c5996eecd
commit 7da0f4a781
8 changed files with 98 additions and 1 deletions

View File

@@ -133,6 +133,103 @@ Multiplayer, MOBA.](../img/ch11/xai_kg_recommendation.png)
在图 :numref:`xai_kg_recommendation`有两个突出显示的相关概率38.6%, 21.1%它们是在推荐过程中模型计算的关键路径被激活的概率。红色箭头突出显示从“Team Fortress 2”到历史项目“Half-Life”之间的关键路径。它表明TB-Net能够通过各种关系连接向用户推荐物品并找出关键路径作为解释。因此将“Team Fortress 2”推荐给用户的解释可以翻译成固定话术“Team Fortress 2”是游戏公司“Valve”开发的一款动作类、多人在线、射击类电子游戏。这与用户历史玩过的游戏“Half-Life”有高度关联。
## 可解释AI系统及实践
随着各领域对可解释的诉求快速增长越来越多企业集成可解释AI工具包为广大用户提供快速便捷的可解释实践业界现有的主流工具包有:
- TensorFlow团队的What-if Tool用户不需编写任何程序代码就能探索学习模型让非开发人员也能参与模型调校工作。
- IBM的AIX360提供了多种的解释及度量方法去评估模型在各个不同维度上的可解释及可信性能。
- Facebook Torch团队的captum针对图像及文本场景提供了多种主流解释方法。
- 微软的InterpretML用户可以训练不同的白盒模型及解释黑盒模型。
- SeldonIO的Alibi专注于查勘模型内部状况及决策解释提供各种白盒、黑盒模型、单样本及全局解释方法的实现。
- 华为MindSpore的XAI工具提供数据工具、解释方法、白盒模型以及度量方法为用户提供不同级别的解释局部全局语义级别等
本节将以MindSpore XAI工具为例讲解在实践中如何使用可解释AI工具为图片分类模型和表格数据分类模型提供解释从而协助用户理解模型进行进一步的调试调优。
MindSpore XAI工具的架构如下其为基于MindSpore深度学习框架的一个可解释工具可在Ascend及GPU设备上部署。
![MindSpore XAI 架构图](../img/ch11/mindspore_xai.png)
:width:`800px`
:label:`mindspore_xai`
要使用MindSpore可解释AI读者首先要通过pip安装MindSpore XAI包支持MindSpore1.7 或以上GPU及Ascend 处理器推荐配合JupyterLab使用:
```bash
pip install mindspore-xai
```
在MindSpore XAI的[官网教程](https://www.mindspore.cn/xai/docs/zh-CN/r1.8/index.html)中,详细介绍了如何安装和使用提供的解释方法, 读者可自行查阅。
### MindSpore XAI工具为图片分类场景提供解释
下面结合MindSpore XAI1.8版本中已支持的显着图可视方法 GradCAM 作为一个代码演示例子。读者可参阅[官方教程](https://www.mindspore.cn/xai/docs/zh-CN/1.8/using_cv_explainers.html)以取得演示用的数据集, 模型和完整脚本代码。
```python
rom mindspore_xai.explainer import GradCAM
# 通常指定最后一层的卷积层
grad_cam = GradCAM(net, layer="layer4")
# 3 是'boat'类的ID
saliency = grad_cam(boat_image, targets=3)
```
如果输入的是一个维度为 $1*3*224*224$ 的图片Tensor那返回的saliency就是一个 $1*1*224*224$ 的显著图Tensor。下面我们将几个例子展示如何使用可解释AI能力来更好理解图片分类模型的预测结果获取作为分类预测依据的关键特征区域从而判断得到分类结果的合理性和正确性加速模型调优。
![预测结果正确,依据的关键特征合理的例子](../img/ch11/correct_correct.png)
:width:`400px`
:label:`correct_correct`
上图预测标签是“bird”解释结果给出依据的关键特征在鸟身上说明这个分类判断依据是合理的, 可以初步判定模型为可信的。
![预测结果正确,依据的关键特征不合理的例子](../img/ch11/correct_wrong.png)
:width:`400px`
:label:`correct_wrong`
原图中有人在预测标签中有1个标签是“person”这个结果是对的但是解释的时候高亮区域在马头的上那么这个关键特征依据很可能是错误的, 这个模型的可靠性还需进一步验证。
![预测结果错误,依据的关键特征不合理的例子](../img/ch11/wrong_wrong.png)
:width:`400px`
:label:`wrong_wrong`
在上图中预测标签为“boat”但是原始图像中并没有船只存在通过图中右侧解释结果可以看到模型将水面作为分类的关键依据得到预测结果“boat”这个依据是错误的。通过对训练数据集中标签为“boat”的数据子集进行分析发现绝大部分标签为“boat”的图片中都有水面这很可能导致模型训练的时候误将水面作为“boat”类型的关键依据。基于此按比例补充有船没有水面的图片集从而大幅消减模型学习的时候误判关键特征的概率。
### MindSpore XAI工具为表格分类场景提供解释
MindSpore XAI 1.8版本支持了三个业界比较常见的表格数据模型解释方法LIMETabular、SHAPKernel和SHAPGradient。
以LIMETabular为例针对一个复杂难解释的模型提供一个局部可解释的模型来对单个样本进行解释
```python
from mindspore_xai.explainer import LIMETabular
# 将特征转换为特征统计数据
feature_stats = LIMETabular.to_feat_stats(data, feature_names=feature_names)
# 初始化解释器
lime = LIMETabular(net, feature_stats, feature_names=feature_names, class_names=class_names)
# 解释
lime_outputs = lime(inputs, targets, show=True)
```
解释器会显示出把该样本分类为setosa这一决定的决策边界返回的 lime_outputs 是代表决策边界的一个结构数据。
可视化解释,可得到
![LIME解释结果](../img/ch11/tabular.png)
:width:`400px`
:label:`tabular_lime`
上述解释说明针对setosa这一决策,最为重要的特征为petal length。
### MindSpore XAI工具提供白盒模型
除了针对黑盒模型的事后解释方法,XAI工具同样提供业界领先的白盒模型,使得用户可基于这些白盒模型进行训练,在推理过程中模型可同时输出推理结果及解释结果。以TB-Net为例(可参考:numref:`tb_net`及其[官网教程](https://e.gitee.com/mind_spore/repos/mindspore/xai/tree/master/models/whitebox/tbnet)进行使用)该方法已上线商用为百万级客户提供带有语义级解释的理财产品推荐服务。TB-Net利用知识图谱对理财产品的属性和客户的历史数据进行建模。在图谱中具有共同属性值的理财产品会被连接起来待推荐产品与客户的历史购买或浏览的产品会通过共同的属性值连接成路径构成该客户的子图谱。然后TB-Net对图谱中的路径进行双向传导计算从而识别关键产品和关键路径作为推荐和解释的依据。
一个可解释推荐的例子如下在历史数据中该客户近期曾购买或浏览了理财产品A、B和N等等。通过TB-Net的路径双向传导计算可知路径产品P年化利率_中等偏高产品A和路径产品P风险等级_中等风险产品N的权重较高即为关键路径。此时TB-Net输出的解释为“推荐理财产品P给该客户是因为它的年化利率_中等偏高风险等级_中等风险分别与该客户近期购买或浏览的理财产品A和B一致。”
![TBNet应用金融理财场景](../img/ch11/tbnet_finance.png)
:width:`800px`
:label:`tbnet_finance`
除了上面介绍的解释方法外MindSpore XAI还会提供一系列的度量方法用以评估不同解释方法的优劣另外也会陆续增加自带解释的白盒模型用户可直接取用成熟的模型架构以快速构建自己的可解释AI系统。
## 未来可解释AI
@@ -146,4 +243,4 @@ Multiplayer, MOBA.](../img/ch11/xai_kg_recommendation.png)
## 参考文献
:bibliography:`../references/explainable.bib`
:bibliography:`../references/explainable.bib`

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 KiB

BIN
img/ch11/correct_wrong.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 KiB

BIN
img/ch11/mindspore_xai.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
img/ch11/tabular.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
img/ch11/tabular_shap.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
img/ch11/tbnet_finance.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
img/ch11/wrong_wrong.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 KiB