## 第四章现状
对ConvNet架构的各个组件的作用的审查强调了卷积块的重要性,卷积块主要负责网络捕获的大多数抽象。相比之下,这个组件仍然是最不被理解的处理块,因为它需要最重要的学习。本章回顾了试图了解各种ConvNet层学习内容的当前趋势。鉴于这些趋势,将突出显示仍存在的各种关键性开放问题。
### 4.1当前趋势
虽然各种ConvNet模型继续在几个计算机视觉应用中进一步推动最先进的技术,但对这些系统如何以及为何如此有效运行的理解是有限的。这个问题引起了各种研究人员的兴趣,并且在回应中出现了几种方法来理解ConvNets。一般来说,这些方法可以分为三个方面:那些依赖于学习过滤器和提取的特征图的可视化的方法,那些依赖于消融研究的方法,这些研究是从理解视觉皮层的生物学方法和依赖于最小化学习的方法中获得的。通过将分析原理引入其网络设计中。本节将简要回顾这些方法中的每一种。
#### 4.1.1通过可视化了解ConvNets
尽管文献中已经提出了几种方法来可视化由ConvNets提取的特征图,但在本节中我们将集中讨论两种最突出的方法并讨论它们的不同变化。
ConvNet可视化的第一种方法被称为以数据集为中心的方法[151],因为它依赖于使用来自数据集的输入探测网络以找到网络中的最大响应单元。属于这一类别的最早的方法之一被称为DeConvNet [154],其中可视化分两步实现。首先,向ConvNet提供来自数据集的若干图像,并记录对该输入最大响应的特征图。其次,使用DeConvNet架构将这些特征映射投射回图像空间,该架构由反转所用ConvNet操作的块组成。特别是,DeConvNet通过使用所考虑的ConvNet中的学习过滤器的转置来反转卷积运算(_,即_。执行“去卷积”)。这里值得注意的是,不能保证转置转换操作。对于“取消汇集”,DeConvNet依赖于记录ConvNet中与最大池化响应相对应的位置,并使用这些位置“取消汇集”或对特征映射进行上采样。这些操作总结在图4.1中。
| ![](https://img.kancloud.cn/ac/bd/acbd47bc0f36920eeccf51342874e95c_332x212.png) | ![](https://img.kancloud.cn/ae/97/ae97b08398de5ac497e48d94894d8256_266x96.png) |
| (一个) | (b)中 |
图4.1:DeConvNet构建块。 (a)说明DeConvNet操作,该操作可应用于将从ConvNet的任何层提取的特征映射投影回图像空间。 (b)通过使用“开关”说明“非汇集”操作,“开关”对应于响应最大汇集操作的位置。图[154]再现。
![](https://img.kancloud.cn/40/14/4014a78776213b9fc5e0b8c938ddd6f1_498x685.png)
图4.2:通过在标准ConvNet架构的各个层(如AlexNet [88])应用DeconvNet获得的可视化。图[154]转载。
这些方法产生的典型可视化如图4.2所示。总体而言,这些可视化显示网络中的早期层倾向于捕获低级特征,例如定向条和边,_,即_。在较低层学习的滤波器类似于定向带通滤波器。相比之下,在更高层的特征捕获从简单纹理到更复杂对象的进展。有趣的是,这些可视化倾向于从图像中保留高水平的细节,从而在网络中产生高响应。事实上,似乎这些可视化倾向于强调输入图像的边缘,并且主要揭示负责高响应的图像部分(_即_。它们可被视为查找输入图像的方法输入图像的高对比度点,主要揭示负责高分类结果的部分)。受这些观察的启发,属于以数据集为中心的范式的其他方法提出了更简单的方法来可视化网络正在学习的内容。例子包括逐步从图像中去除部分的方法,产生高响应以突出显示哪些部分负责高响应[156,157]。从这些方法中得出的一些结论是,对象主要负责识别场景[156]或更一般地说,当我们可视化网络的更高层时,对象检测器会出现[157]。
ConvNet可视化的第二种方法被称为以网络为中心的方法[151],因为它仅使用网络参数而无需任何其他数据用于可视化目的。这种方法最初是在深层信念网络[37]的背景下引入的,后来应用于ConvNets [133]。在这种情况下,通过合成将最大化一些神经元(或滤波器)响应的图像来实现可视化。例如,从产生类别分数![](https://img.kancloud.cn/80/10/80105ebbe40c2efaca59caa3ea53c75a_17x15.gif)的网络的最后一层开始,以及初始化为随机噪声的图像![](https://img.kancloud.cn/80/93/80932643e100c59ad091cdf4d90a2bd5_9x12.gif),目标是修改图像,使其属于类![](https://img.kancloud.cn/b5/46/b546a89f36ed0a48be4457149ac399aa_8x8.gif)的分数]最大化。这个优化问题在[133]中定义
![](https://img.kancloud.cn/3e/98/3e986db400edc31cc3ec600b94496453_179x31.gif)(4.1)
其中![](https://img.kancloud.cn/99/d3/99d394e7d0b74248114405067e0ffd51_10x12.jpg)是正则化参数。这里![](https://img.kancloud.cn/e4/c0/e4c0e3433163b0d89d5416e2bf9003fc_18x15.jpg)正则化用于惩罚大值。属于这种范式的大多数其他方法试图解决相同的优化问题,同时执行不同的正则化技术,例如总变差正则化以强制平滑并避免合成图像中的高频内容[104]或简单剪切不强烈参与的像素过滤器的响应仅突出显示负责过滤器激活的模式[151]。
当用于最大化(4.1)中定义的类别分数时,以网络为中心的方法产生的典型可视化如图4.3所示。通常,这些可视化表明网络正在学习高级形状,负责区分各种物体(_例如_。当目标类是动物面部时,眼睛,鼻子和耳朵);但是,这些功能的确切位置无关紧要。因此,这些可视化意味着网络逐渐学习不变性(_,例如_。它在较高层变为位置不可知),正如使用各种池化操作所预期的那样。然而,当这种以网络为中心的可视化技术应用于反转较低层时,它并不一定表明它们正在学习较低级别的特征,例如边缘,而不是以数据集为中心的技术。例如,在图4.3(b)中,可以看出较低层保留了图像中存在的大部分摄影信息。更一般地,理解ConvNets的可视化方法的主要限制是解释的主观性质,其通常基于该方法的作者的视觉检查。
| ![](https://img.kancloud.cn/f7/d4/f7d48063ae5fa465574a38bd1cb61e6a_466x663.png) |
| (a) |
| ![](https://img.kancloud.cn/4c/65/4c652c448e0009d33d021ca117fd1f91_597x125.png) |
| (b) |
图4.3:通过在网络中心方法中对图像空间应用优化而获得的可视化。 (a)通过最大化属于各种类别的得分而获得的可视化,如下面每个图像所示。图[133]转载。 (b)通过最大化各层的标准网络响应而获得的可视化,如下图所示。图[104]转载。
#### 4.1.2通过消融研究了解ConvNets
另一种流行的方法是阐明广泛使用的ConvNet功能,即所谓的网络消融研究。事实上,许多着名的ConvNet论文(_,例如_。[23,154,134,144,41,29,78])在他们的实验部分包括消融研究,其目标是隔离不同的成分查看删除或添加块如何影响整体性能的网络。
这些消融研究有可能引导ConvNet从业者走向“良好实践”,以在不同的应用中实现更高的性能。例如,ConvNets背景下最早的消融研究之一揭示了即使在使用随机初始化网络时也需要进行适当的整流和归一化[77]。其他工作揭示了在所有层使用较小过滤器时更深层表示的重要性[23,135]。还有其他研究,调查了预训练和微调的作用以及特征的数量,位置和大小。这些调查进一步突出了跨任务从ConvNets中提取的特征的可转移性[1]。
更有意思的是,其他工作提出要剖析ConvNets以调查每个组成部分对所学表征的可解释性的影响[6]。该方法依赖于具有像素级注释的数据集,其中每个像素被分配若干“概念”标签,其包括颜色,纹理,对象和场景标签。评估ConvNet中的每个单元的能力,以生成与某个基于概念的分割掩码![](https://img.kancloud.cn/72/2e/722efd89404df5eab8c3b830ab1d3259_18x15.gif)匹配的分割掩码。特别地,网络中的每个特征映射![](https://img.kancloud.cn/90/39/9039bd5449c02e0802bbe41784bcf36a_18x15.gif)被转换为二进制掩码![](https://img.kancloud.cn/7a/06/7a066776ae4e88bf26f8a5eb44934c5b_24x15.gif),其中仅当像素的激活超过某个预设阈值时才将像素设置为![](https://img.kancloud.cn/55/95/559537f1e11c68d8ba3d9f6d540de6b0_7x13.gif)。接下来,每个单位![](https://img.kancloud.cn/65/a9/65a9120364a862f3e7abfc1c106738bc_9x13.gif)根据其分割给定概念![](https://img.kancloud.cn/b5/46/b546a89f36ed0a48be4457149ac399aa_8x8.gif)的能力分配一个分数,根据
![](https://img.kancloud.cn/18/66/18660be3990b6d3ca1d0177cf847d387_127x24.gif)(4.2)
其中![](https://img.kancloud.cn/a9/7e/a97ee5dfba55c415dcf5c47c6510a0af_11x19.gif)是集合的基数。通过这种方法,每个单元的可解释性基于其生成良好分割掩模的能力来定义。该测量表明,较低层中的单元能够生成更好的基于颜色或纹理的掩模,而较高层可以生成更好的对象和场景分割。与数据集为中心的可视化方法一致,这一观察结果表明,较低层是学习过滤器,捕获较低层次的概念,而较高层层次学习更多抽象特征,如对象部分。这种方法还允许系统地分析各种非线性和训练策略对可解释性的影响,并揭示出更高的表现并不总是产生高度可解释的单位。例如,已经表明,诸如批量归一化之类的正则化技术非常简单地影响该方法中定义的单元的可解释性。此外,与广泛使用的ImageNet培训相比,发现在场景数据集上训练的网络产生更多可解释的单元。不幸的是,这种方法的一个主要缺陷是它们对可解释性的定义在很大程度上取决于用于评估的数据集。换句话说,能够捕获数据集中未表示的概念的ConvNet单位将产生较低的IoU分数;因此,即使该概念在视觉上是可解释的,也被认为不能通过这种方法解释。因此,该方法可能会遗漏由负责更高性能的网络组件揭示的其他重要方面。
#### 4.1.3通过受控设计了解ConvNets
理解ConvNets的另一种方法是通过将先验注入网络设计来最小化学习参数的数量。例如,一些方法减少每层学习过滤器的数量,并包括每层中学习过滤器的变换版本以模拟旋转不变性,_,例如_。 [100,158]。其他方法依赖于用基组替换学习过滤器而不是学习过滤器参数,而是学习如何组合基组以在每层形成有效过滤器,_,例如_。 [75,28,148,100,158]。还有其他方法,通过全面手工制作网络并使其适应特定任务,推动将先行者注入其网络设计的想法,这产生了特别可解释的网络,_,例如_。 [15,113,60]。大多数属于这种范式的技术先前已在第3章第3.1.2节中详细讨论过。
- TensorFlow 1.x 深度学习秘籍
- 零、前言
- 一、TensorFlow 简介
- 二、回归
- 三、神经网络:感知器
- 四、卷积神经网络
- 五、高级卷积神经网络
- 六、循环神经网络
- 七、无监督学习
- 八、自编码器
- 九、强化学习
- 十、移动计算
- 十一、生成模型和 CapsNet
- 十二、分布式 TensorFlow 和云深度学习
- 十三、AutoML 和学习如何学习(元学习)
- 十四、TensorFlow 处理单元
- 使用 TensorFlow 构建机器学习项目中文版
- 一、探索和转换数据
- 二、聚类
- 三、线性回归
- 四、逻辑回归
- 五、简单的前馈神经网络
- 六、卷积神经网络
- 七、循环神经网络和 LSTM
- 八、深度神经网络
- 九、大规模运行模型 -- GPU 和服务
- 十、库安装和其他提示
- TensorFlow 深度学习中文第二版
- 一、人工神经网络
- 二、TensorFlow v1.6 的新功能是什么?
- 三、实现前馈神经网络
- 四、CNN 实战
- 五、使用 TensorFlow 实现自编码器
- 六、RNN 和梯度消失或爆炸问题
- 七、TensorFlow GPU 配置
- 八、TFLearn
- 九、使用协同过滤的电影推荐
- 十、OpenAI Gym
- TensorFlow 深度学习实战指南中文版
- 一、入门
- 二、深度神经网络
- 三、卷积神经网络
- 四、循环神经网络介绍
- 五、总结
- 精通 TensorFlow 1.x
- 一、TensorFlow 101
- 二、TensorFlow 的高级库
- 三、Keras 101
- 四、TensorFlow 中的经典机器学习
- 五、TensorFlow 和 Keras 中的神经网络和 MLP
- 六、TensorFlow 和 Keras 中的 RNN
- 七、TensorFlow 和 Keras 中的用于时间序列数据的 RNN
- 八、TensorFlow 和 Keras 中的用于文本数据的 RNN
- 九、TensorFlow 和 Keras 中的 CNN
- 十、TensorFlow 和 Keras 中的自编码器
- 十一、TF 服务:生产中的 TensorFlow 模型
- 十二、迁移学习和预训练模型
- 十三、深度强化学习
- 十四、生成对抗网络
- 十五、TensorFlow 集群的分布式模型
- 十六、移动和嵌入式平台上的 TensorFlow 模型
- 十七、R 中的 TensorFlow 和 Keras
- 十八、调试 TensorFlow 模型
- 十九、张量处理单元
- TensorFlow 机器学习秘籍中文第二版
- 一、TensorFlow 入门
- 二、TensorFlow 的方式
- 三、线性回归
- 四、支持向量机
- 五、最近邻方法
- 六、神经网络
- 七、自然语言处理
- 八、卷积神经网络
- 九、循环神经网络
- 十、将 TensorFlow 投入生产
- 十一、更多 TensorFlow
- 与 TensorFlow 的初次接触
- 前言
- 1. TensorFlow 基础知识
- 2. TensorFlow 中的线性回归
- 3. TensorFlow 中的聚类
- 4. TensorFlow 中的单层神经网络
- 5. TensorFlow 中的多层神经网络
- 6. 并行
- 后记
- TensorFlow 学习指南
- 一、基础
- 二、线性模型
- 三、学习
- 四、分布式
- TensorFlow Rager 教程
- 一、如何使用 TensorFlow Eager 构建简单的神经网络
- 二、在 Eager 模式中使用指标
- 三、如何保存和恢复训练模型
- 四、文本序列到 TFRecords
- 五、如何将原始图片数据转换为 TFRecords
- 六、如何使用 TensorFlow Eager 从 TFRecords 批量读取数据
- 七、使用 TensorFlow Eager 构建用于情感识别的卷积神经网络(CNN)
- 八、用于 TensorFlow Eager 序列分类的动态循坏神经网络
- 九、用于 TensorFlow Eager 时间序列回归的递归神经网络
- TensorFlow 高效编程
- 图嵌入综述:问题,技术与应用
- 一、引言
- 三、图嵌入的问题设定
- 四、图嵌入技术
- 基于边重构的优化问题
- 应用
- 基于深度学习的推荐系统:综述和新视角
- 引言
- 基于深度学习的推荐:最先进的技术
- 基于卷积神经网络的推荐
- 关于卷积神经网络我们理解了什么
- 第1章概论
- 第2章多层网络
- 2.1.4生成对抗网络
- 2.2.1最近ConvNets演变中的关键架构
- 2.2.2走向ConvNet不变性
- 2.3时空卷积网络
- 第3章了解ConvNets构建块
- 3.2整改
- 3.3规范化
- 3.4汇集
- 第四章现状
- 4.2打开问题
- 参考
- 机器学习超级复习笔记
- Python 迁移学习实用指南
- 零、前言
- 一、机器学习基础
- 二、深度学习基础
- 三、了解深度学习架构
- 四、迁移学习基础
- 五、释放迁移学习的力量
- 六、图像识别与分类
- 七、文本文件分类
- 八、音频事件识别与分类
- 九、DeepDream
- 十、自动图像字幕生成器
- 十一、图像着色
- 面向计算机视觉的深度学习
- 零、前言
- 一、入门
- 二、图像分类
- 三、图像检索
- 四、对象检测
- 五、语义分割
- 六、相似性学习
- 七、图像字幕
- 八、生成模型
- 九、视频分类
- 十、部署
- 深度学习快速参考
- 零、前言
- 一、深度学习的基础
- 二、使用深度学习解决回归问题
- 三、使用 TensorBoard 监控网络训练
- 四、使用深度学习解决二分类问题
- 五、使用 Keras 解决多分类问题
- 六、超参数优化
- 七、从头开始训练 CNN
- 八、将预训练的 CNN 用于迁移学习
- 九、从头开始训练 RNN
- 十、使用词嵌入从头开始训练 LSTM
- 十一、训练 Seq2Seq 模型
- 十二、深度强化学习
- 十三、生成对抗网络
- TensorFlow 2.0 快速入门指南
- 零、前言
- 第 1 部分:TensorFlow 2.00 Alpha 简介
- 一、TensorFlow 2 简介
- 二、Keras:TensorFlow 2 的高级 API
- 三、TensorFlow 2 和 ANN 技术
- 第 2 部分:TensorFlow 2.00 Alpha 中的监督和无监督学习
- 四、TensorFlow 2 和监督机器学习
- 五、TensorFlow 2 和无监督学习
- 第 3 部分:TensorFlow 2.00 Alpha 的神经网络应用
- 六、使用 TensorFlow 2 识别图像
- 七、TensorFlow 2 和神经风格迁移
- 八、TensorFlow 2 和循环神经网络
- 九、TensorFlow 估计器和 TensorFlow HUB
- 十、从 tf1.12 转换为 tf2
- TensorFlow 入门
- 零、前言
- 一、TensorFlow 基本概念
- 二、TensorFlow 数学运算
- 三、机器学习入门
- 四、神经网络简介
- 五、深度学习
- 六、TensorFlow GPU 编程和服务
- TensorFlow 卷积神经网络实用指南
- 零、前言
- 一、TensorFlow 的设置和介绍
- 二、深度学习和卷积神经网络
- 三、TensorFlow 中的图像分类
- 四、目标检测与分割
- 五、VGG,Inception,ResNet 和 MobileNets
- 六、自编码器,变分自编码器和生成对抗网络
- 七、迁移学习
- 八、机器学习最佳实践和故障排除
- 九、大规模训练
- 十、参考文献