一些可解释性分析方法

可解释性与模型性能

可解释算法分类

深度学习的可解释性分析

CNN的可解释性分析

  • 可视化卷积核/特征图
  • ZF Net
    • 介绍了一种新的可视化技术,可以深入了解中间特征层的功能和分类器的操作
    • 通过 遮挡、缩放、平移、旋转 的间接方法对预测的影响来理解CNN
    • 利用 反卷积 找到使得某个神经元激活的pixel或小图
  • RCNN
    • 从神经元激活找原始小图
    • 原文figure3,实验3.1
      • image-20221214001109835
    • 作者从第五层pooling的神经元进行了可视化,白框是感受野以及激活值
    • 可以看到,有一些神经元捕捉到了特定的概念,比如第一行的人,第四行的字
  • 有些神经元捕捉纹理和材质
  • 基于CAM的可视化
    • 一大类算法,有各种基于 原始CAM 的改进算法
    • 构建了一个通用的可定位的深度表示,可以应用于各种任务
    • torch-cam
    • image-20221214002754649
    • CAM对图像分割可视化的例子
    • 错误预测的解释
      • image-20221214003414493
    • 探究模型是不是有偏见
      • image-20221214003520115
      • (b)是带有偏见的模型,根据头发判断是护士,会把头发(性别)当做判断护士的特征,有悖伦理
  • 语义降维可视化
    • image-20221214003957471
    • 通过对高维样本特征降维到低维进行可视化,该分布和语义相关
    • eg.word2vec的词向量表示,降维后发现含义相近的在空间中分布靠近
  • 生成满足需求的图像
    • 通过优化样本使得的图像满足一定的需求,比如某个神经元激活最大或者 某个类别预测最大
    • 应用场景:对抗样本攻击
      • FGSM etc.
      • 通过不断迭代样本,同时施加约束(最小扰动),使得模型误判

总结与扩展阅读

  • image-20221214005945723
  • image-20221214010023777
  • 张子豪codebase
  • pytorch-cnn-visualizations
  • pytorch-grad-cam
  • torch-cam
  • 相关论文
    • Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps
    • Score-CAM: Score-Weighted Visual Explanations for Convolutional Neural Networks
    • “Why Should I Trust You?”: Explaining the Predictions of Any Classifier
    • Visualizing and Understanding Convolutional Networks
    • Show and tell: A neural image caption generator
    • LayerCAM: Exploring Hierarchical Class Activation Maps for Localization
    • Learning Deep Features for Discriminative Localization
    • Grad-CAM++: Generalized Gradient-Based Visual Explanations for Deep Convolutional Networks
    • Grad-CAM: Visual Explanations from Deep Networks via Gradient-Based Localization
  • OpenMMLab 类别激活热力图可视化工具介绍
  • DataWhale 6个机器学习可解释性框架!
  • Reference

    本文主要演示了对shap、LIME两个工具包的使用 shap是一种解释任何 机器学习 模型输出的博弈论方法,它利用博弈论中的经典Shapley值及其相关扩展将最优信贷分配与局部解释联系起来。 LIME帮助解释学习模型正在学习什么以及为什么他们以某种方式预测。目前支持对表格的数据,文本分类器和图像分类器的解释。
    白毛偷二: 这个镜像会修改挂载文件的owner,导致文件权限混乱。[https://github.com/BytemarkHosting/docker-webdav/issues/24](https://github.com/BytemarkHosting/docker-webdav/issues/24) 添加PID/UID后也没生效。大佬是怎么解决的?