【机器学习笔记】可解释机器学习-学习笔记 Interpretable Machine Learning (Deep Learning)
目录
机器学习子豪兄专栏:机器学习可解释性公开课 学习笔记
课前准备
Reference (CV Basics)
- CS231N Course by Stanford by Feifei Li, Jiajun Wu, Ruohan Gao
- Interpretable Machine Learning
- Interpretable Machine Learning Open Cource by Datawhale
0.1 CV基础
Based on Lecture 1 of CS231N
- 计算机视觉的历史
- 寒武纪大爆发:产生眼镜
- 光学:墨子的小孔成像到达芬奇的针筒
- Hubel & Wiesel, Havard 1959 视觉神经的成像原理
- Larry Roberts 1963 Block World 边缘检测
- AI Group MIT 1966 Project Mac
- Stage of Visual Representation, David Marr, 1970s
- Generalized Cylinder, Pictorial Structure 弹簧和圆柱体模型 斯坦福
- Normalized Cut, Shi & Malek 抠图
- Face Detection by Adaboost, 2001, Viola & Jones
- 2000s 手动特征工程对图像解码
- SFT特征
- 空间金字塔特征
- 方向梯度特征
- 2010s Image Net
- 2012 AlexNet
- 2014VGG—2014GoogleNet—2015ResNet—Now
- 计算机视觉的应用
- 算法+数据+算力
- 语义分割
- Image cpationing
- 人体姿态估计
- 三维重建
- 医疗,VR/XR
Visualize Convolutional Neural Networks (CNN)
Based on Lecture 8 of CS231N
Visualizing what models have learned
- Visualize Filters
- 可视化权重和梯度
- Krizhevsky, “One weird trick for parallelizing convolutional neural networks”, arXiv 2014
- He et al, “Deep Residual Learning for Image Recognition”, CVPR 2016
- Huang et al, “Densely Connected Convolutional Networks”, CVPR 2017
-
- 可视化最后一层
-
visualize representation space
- -
Van der Maaten and Hinton, “Visualizing Data using t-SNE”, JMLR 2008
-
- 可视化激活层
- Yosinski et al, “Understanding Neural Networks Through Deep Visualization”, ICML DL Workshop 2014.
Understanding input pixels
- 找出影响最大的像素
- visualize patches that maximally activate neurons
- Mask part of the image before feeding to CNN, check how much predicted probabilities change
Zeiler and Fergus, “Visualizing and Understanding Convolutional Networks”, ECCV 2014- Zeiler and Fergus, “Visualizing and Understanding Convolutional Networks”, ECCV 2014
- Saliency via backprop
- Simonyan, Vedaldi, and Zisserman, “Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps”, ICLR Workshop 2014.
- Saliency Maps: Segmentation without supervision
- Ribeiro et al, ““Why Should I Trust You?” Explaining the Predictions of Any Classifier”, ACM KDD 2016
- Guided backprop to generate images
-
Zeiler and Fergus, “Visualizing and Understanding Convolutional Networks”, ECCV 2014 Springenberg et al,
-
“Striving for Simplicity: The All Convolutional Net”, ICLR Workshop 2015
- -
通过(引导)反向传播的中间特征
-
Zeiler and Fergus, “Visualizing and Understanding Convolutional Networks”, ECCV 2014
-
Springenberg et al, “Striving for Simplicity: The All Convolutional Net”, ICLR Workshop 2015
-
- 梯度上升以可视化特征
- 生成最大限度激活神经元的合成图像
- a r g m a x I S c ( I ) − λ ∣ ∣ I ∣ ∣ 2 arg{max}_{I} S_c(I) - \lambda ||I||^2 argmaxISc(I)−λ∣∣I∣∣2
- S_c 是 C 类的分数
- 惩罚图像的L2范数; 也在定期优化期间
- 将图像初始化为零
- 重复:
1.正向图像计算当前分数
- 反向传播得到神经元值相对于图像像素的梯度
- 对图像进行小幅更新
- a r g m a x I S c ( I ) − λ ∣ ∣ I ∣ ∣ 2 arg{max}_{I} S_c(I) - \lambda ||I||^2 argmaxISc(I)−λ∣∣I∣∣2
- Simonyan, Vedaldi, and Zisserman, “Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps”, ICLR Workshop 2014.
- 生成最大限度激活神经元的合成图像
对抗扰动(Adversarial perturbations)
- 愚弄图像/对抗性例子
- Moosavi-Dezfooli、Seyed-Mohsen 等。 “普遍的对抗性扰动。” IEEE 计算机视觉和模式识别会议论文集。 2017.
- 从任意图像开始
- 选择一个任意类
- 修改图像以最大化类别 (4) 重复直到网络被愚弄
风格迁移
- 特征反转
- Mahendran and Vedaldi, “Understanding Deep Image Representations by Inverting Them”, CVPR 2015
-
- 不是合成图像来最大化特定神经元,而是
尝试放大网络中某一层的神经元激活 - 在 CNN 中选择一个图像和一个层; 重复:
- 前向:计算所选层的激活
- 设置所选层的梯度等于它的激活
- 向后:计算图像的梯度
- 更新图像
- 不是合成图像来最大化特定神经元,而是
- Texture synthesis
- Wei and Levoy, “Fast Texture Synthesis using Tree-structured Vector Quantization”, SIGGRAPH 2000 Efros and Leung, “Texture Synthesis by Non-parametric Sampling”, ICCV 1999
- 经风格迁移
- 问题:样式迁移需要通过 VGG 进行多次前向/反向传递; 非常慢!
- 解决方案:训练另一个神经网络为我们执行风格迁移!
- 为每种风格训练一个前馈网络
- 使用预训练的 CNN 计算与之前相同的损失
- 训练后,使用单个前向传递对图像进行风格化
- Johnson, Alahi, and Fei-Fei, “Perceptual Losses for Real-Time Style Transfer and Super-Resolution”, ECCV 2016
第一课 ZF Net
Reference
ZF Net
如何读论文
笔记(ZF Net)
ZFNet 是一个经典的卷积神经网络。 该设计的动机是可视化中间特征层和分类器的操作。 与 AlexNet 相比,滤波器尺寸减小 (7x7),卷积步幅减小 (2x2)。
主要贡献:
- 一种可视化模型内活动的新颖方法。 这揭示了显示许多直观所需属性的功能,例如
1.组合性
2.增加不变性a
3.阶级歧视,随着我们提升层次。 - 这些可视化可用于识别模型的问题,从而获得更好的结果
- 例如改进 Krizhevsky 等人。 的 [18] 令人印象深刻的 ImageNet 2012 结果。
- 通过一系列遮挡实验表明,该模型在进行分类训练时,对图像中的局部结构高度敏感,而不仅仅是使用广泛的场景上下文。
- 对模型的消融研究表明,具有最小深度的网络,而不是任何单独的部分,对模型的性能至关重要。
- 最后,我们展示了 ImageNet 训练的模型如何很好地泛化到其他数据集。
最后的贡献(后来被许多其他关于微调、迁移学习等的研究涵盖)和性能改进现在被认为不那么重要了。 尽管 ZF Net 当时是 2013 年 ImageNet 赢家,但它现在更被称为可解释 CNN 的鼻祖(可视化/理解 CNN 在做什么)
关键方法
- Deconvnet技术
- Unpooling
- Rectification(反激活):仍然用ReLU
- Filtering(反卷积):卷积神经网络使用学习到的过滤器对前一层的特征图进行卷积。 为了近似地反转它,deconvnet 使用相同过滤器的转置版本(作为其他自动编码器模型,例如 RBM),但应用于校正映射
- Detail
- 大小裁剪:如果不进行大小裁剪,卷积核中会有一些卷积核特别的大。所以需要对过大的卷积核进行裁剪,把它限定在一个大小范围内
- Convnet Visualization
-
Feature Visualization
- 1st-layer:找到9个卷积核激活最大的数据集中原图前9个图片(patch-top9)
- 2nd-layer:
- 选出16个卷积核,找到能够使得激活最大的图片(9张图每个卷积),每个图片都来自验证集(使用已选出的图片可重构原始输入的像素空间)
- 然后呢,我们把这 9 张图片传到第 2 层的feature map,使用反卷积的技巧重构回原始输入的像素空间。就变成了这个灰色的左图
- 第3、4、5层卷积:所提取的特征逐渐变得高级,与第2层的流程相似
-
-
Invariance
- 对原图进行平移、缩放、旋转对网络的不同层提取信息的影响,其中计算变换之后的特征向量和原图的特征向量的欧式距离,观察其影响。
- 垂直平移、缩放的影响:对网络的底层影响显著(急剧影响),对网络的高层影响较小(线性影响)
- 旋转:每旋转90°,存在对称性,网络能够在此期间捕获同样的特征
-
- change architecture
- 对卷积核进行步长和尺寸的调整,可发现卷积核失效的变化,将步长从4变成2,将卷积核尺寸从11x11变成7x7,发现卷积核失效减少
- Correspondence Analysis (Ablation Test)
- 测试目的:使用小方块对图片进行遮挡,测试网络预测结果对遮挡的敏感性。
- 论文中的图像含义:
- 灰色图片中的黑框部分:将不经遮挡的图片放入网络中,得到第5层激活最大的feature map,用反卷积的方法重构原始输入的像素空间,得到的可视化图像
- 热力图:使用灰色挡板遮挡原图中不同位置,在每次遮挡过程中,记录第5层激活最大的feature map,将所有该位置的feature map进行叠加,形成热力图
- 测试验证对不同狗的图片遮挡相同位置,对网络模型的影响,通过计算海明距离的求和值进行比较,说明深度学习模型隐式定义了图片中局部位置的相关性。
- 相关性分析的计算公式: Δ l = ∑ i , j = 1 , i ≠ j 5 H ( sign ( ϵ i l ) , sign ( ϵ j l ) ) \Delta_l = \sum_{i,j=1, i \neq j}^5 \mathcal{H}(\text{sign}(\epsilon_i^l), \text{sign}(\epsilon_j^l))