深度学习一致被诟病为黑盒,很难从精度之外的角度去理解模型。但现在还有一个研究方向,可解释性机器学习
关注解释模型的决策和内部。
如果你使用PyTorch
那么恭喜你,现在Facebook官方出品了一个模型解释 & 可视化工具Captum
。本文将介绍Captum
功能和基础原理。
目前开通了技术探讨群,群友已超过3000人,添加时最好的备注方式为:来源+兴趣方向,方便找到更快获取资料、入群
方式①、添加微信号:dkl88191,备注:来自CSDN+模型可解释性
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:入群
https://captum.ai/
Captum
的英文介绍为Model Interpretability for PyTorch,字面意思就是解释Pytorch
模型。安装方法也很简单:
# conda 安装
conda install captum -c pytorch
# pip安装
pip install captum
Captum
主要受众是模型开发人员,可以了解哪些特征很重要,以便设计更好的模型。
Captum
中的归因算法分为三组,主要属性、层属性和神经元属性,定义如下:
主要归因:评估每个输入特征对模型输出的贡献。
层归因:评估给定层中每个神经元对模型输出的贡献。
神经元属性:评估每个输入特征对激活特定隐藏神经元的贡献。
Captum
支持的功能可以从下面两个链接找到更多的算法介绍:
https://captum.ai/docs/attribution_algorithms
https://captum.ai/docs/algorithms_comparison_matrix
如果不了解具体的原理,不用担心。这里给你简单解释一下:Captum
会使用训练好的模型,不改变模型的权重来解释模型的决策过程和参数功能。
Captum
会使用到梯度计算和多次预测,因此在可视化时需要可能需要较多的计算时间。
https://captum.ai/tutorials/IMDB_TorchText_Interpret
如果要在句子上应用梯度可解释性算法,需要为句子及其单词创进行封装。
https://captum.ai/tutorials/CIFAR_TorchVision_Interpret
如果要在图像上应用梯度可视化算法,只需要计算像素对结果的贡献度即可。
https://captum.ai/tutorials/Resnet_TorchVision_Ablation
每个像素如何影响语义分割模型输出。
https://captum.ai/tutorials/House_Prices_Regression_Interpret
定义全连接模型,并对房价进行回归预测,最终计算得到特征的贡献度。
https://captum.ai/tutorials/Bert_SQUAD_Interpret2
加载预训练BERT权重,计算注意力权重。