天问

分析深度卷积神经网络可视化工具——CNNVis

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

 

图1 CNNVis,一个能够帮助专家理解,分析与改进深度卷积神经网络的视觉分析工具

 

摘要:深度卷积神经网络(CNNs)在许多模式识别任务中取得了很大的性能突破, 然而高质量深度模型的发展依赖于大量的尝试,这是由于没有很好的理解深度模型是怎么工作的,在本文中,提出了一个可视化分析系统,CNNVis,帮助机器学习专家更好的理解、分析、设计深度卷积神经网络。

 

关键词:深度卷积神经网络,矩形填充,矩阵排序,边缘捆绑,双聚类

 

1引言

 

深度卷积神经网络在许多模式识别任务上较传统的方法而言已经展示了很大的提升,比如语音识别,图像分类和视频分类。然而由于其费解的函数和不清楚的工作原理,深度卷积神经网络也被称为黑盒子模型。

 

对于理解和分析深度卷积神经网络而言,面临两个技术挑战:首先是CNN可能是由几十或几百的层组成、每层有几千的神经元;其次是CNN是由许多函数分量组成,并且其值之间的关系也不好理解。

 

为了解决这个问题,提出了一个交互式视觉分析系统,称作CNNVis,该系统是为了帮助机器学习专家更好的理解,分析与改进CNNs,基于深度CNN的结构,构思出DAG,其中每个节点代表一个神经元,每个边代表神经元对之间的连接;基于DAG表示,提出了混合可视化;另外基于Held-Karp算法,设计了矩阵重新排序算法等。

 

本文中,使用图像分类作为一个例子,第一种情况帮助去说明CNN模型结构的性能影响,第二种情况学习CNNVis是如何帮助分析潜在的失败训练情况,第三种情况是帮助为改进CNN结构并提高性能。

 

本文工作的关键技术贡献是:可视化分析系统帮助专家理解,分析和改进深度卷积神经网络;混合可视化:结合了DAG,矩形填充,矩阵可视化和边缘捆绑等方法。

 

2相关工作

 

为了说明每个神经元学习的特征,一般是由一个实像或者合成图像的部分来表示。现存的方法分为两类:代码反演和激活值最大化。代码反演主要是从一个特点层中的激活向量来合成一个图像;激活值最大化方法主要是找到一幅图像最大化给定神经元;上述方法使用基于网格表示来展示神经元的特征。具体分析请见原文。

 

不像上述方法,制定了深度CNN作为一个DAG,基于DAG表示,又提出了一个混合可视化,是由矩形填充,矩阵排序和基于双聚类的边缘捆绑。、

 

3背景

 

图2 典型的卷积神经网络结构

 

图3 卷积操作示意图

 

在介绍可视分析系统之前,我将简要的介绍卷积神经网络。

 

  • 结构:图2展示的是一个典型的卷积神经网络结构。这个网络包含两个卷积层(convolution layer),两个池化层(pooling layer)和一个全连接层(fully connected layer)。
  • 卷积层:采用各种卷积核对输入图片进行卷积处理,基本卷积过程如图3a所示。卷积操作具有平移不变性。因而,能够支持神经元学习到鲁棒性比较高的特征。
  • 激活函数:非线性的变换。根据一系列的输入值,神经元之间连接的权值以及激励规则,刺激神经元。
  • 典型的激活函数:ReLU和Softmax函数,具体公式请见原文。
  • 池化:池化层的操作,是一种降采样操作。该操作是在一个小区域内,采取一个特定的值作为输出值。比如图3b,在每个特定的小区域内,选取最大值作为输出值。池化层的操作可以达到一定的空间不变性效果。使用最大的是最大池化。
  • 归一化:归一化是CNNs中的一个优化操作,是为了加快训练过程中的收敛速度和减少陷入局部最优解的可能。
  • 损失函数:,在训练阶段,用于评估网络输出结果与实际值的差异。然后用损失函数的值更新每个神经元之间的权重值。卷积神经网络的训练目的就是最小化损失函数值。

 

4CNNVis

 

共用的深度学习框架包括Caffe,Theano,Torch和TensorFlow。但是研究人员使用这些框架时发生错误后无法找到出错点,因此其需要一个能够帮助他们更好地理解CNN中的内在原理的工具。

 

4.1 需求分析

 

基于讨论和前期工作,认定以下高等级的需求,具体原因请参考原文。

 

  • R1-提供一个神经元的学习特征的概述;
  • R2-交互式修改神经元的聚类结果;
  • R3-探索神经元的多面性;
  • R4-揭示低层次的特征是如何聚合成高层次特征;
  • R5-检查调试信息。

 

4.2 系统概述

 

图4  CNNVis的设计流程图

 

可视化分析系统CNNVis的设计流程图如图4所示,主要包含四个部分:

 

  1. DAG规划模块将CNN转换成DAG并从概述上总结神经元和层(R1,R4);
  2. 、神经元聚类可视化模块揭示神经元的多面性(R3);
  3. 、基于双聚类的边缘捆绑减少由于大量连接造成的视觉混乱(R4);
  4. 、提供交互模块(R2)和显示调试信息(R5)。

 

为了有效的表示一个大的CNN网络,DAG制定模块在每一层聚类神经元。然后送入到神经元聚类可视化模块,该模块使用矩形填充算法去展示每个神经元的学习特征。之后基于双聚类的边缘捆绑减少视觉混乱。

 

图5 DAG转换及聚类过程

 

5DAG 构想

 

CNN可以被构想成DAG,其中每个节点表示神经元,每条边表示神经元间的连接。由于一个卷积神经网络往往会有很多层,每一层会有很多神经元。为了提供总览图,方便用户建立对整个卷积神经网络的认识,他们首先对层进行了聚类。然后在每个层聚类中,对内部的神经元进行了聚类(如图5所示)。

 

在CNNVis中,采用两种聚类方法,分别为K-Means和MeanShift。

 

6可视化

 

6.1 概述

 

基于DAG构想,设计了混合可视化,能够直观说明神经元(节点)聚类和神经元之间的连接(边)。

 

图6 可视化概述 

 

每一个神经元聚类用一个大的矩形表示,如图6A所示。其中每个学习特征是由更小的矩形编码得到,如图6B1;神经元激活值由矩阵的可视化来表示,如图6B2;在输入与输出聚类之间加入一层“in-between”,如图6C所示,在该层中,每个双聚类在DAG中看成是节点。

 

6.2 神经元聚类可视化

 

6.2.1 矩阵填充学习特征

 

计算神经元的学习特征。采用矩阵填充技术,将群簇内神经元的输出图像填充成一个矩阵来表示该群簇特征。同时,为了方便用户分析每个神经元在不同类别上性能,采用矩阵形式来表示此类信息。一个群簇用一个矩阵表示。在矩阵中,每一行表示一个神经元,每一列表示一个类别,颜色的深浅表示该神经元在该类别上的判别能力(如图6所示)。为了更好的表现出该群簇的特点,对矩阵中的行进行了重排序,最大化邻近的两个行的相似性之和。

 

图7 分层矩形填充的说明

 

布局。构想图片快的布局作为矩形填充的问题,目标是将给定的矩形填充到最小区域的包围矩形。采用混合填充算法,该算法主要分为以下三个步骤,详细过程请见原文。

 

  • 步骤1:混分层聚类。
  • 步骤2:计算每个聚类的布局区域。
  • 步骤3:每个聚类的矩形填充。

 

6.2.2  激活值作为矩阵可视化

 

矩阵可视化被采用来说明神经元的激活值

 

图8 矩阵排序的说明

 

矩阵排序。列(聚类)的顺序在不同的神经元聚类中应该是一致的,因此只需要重新排序矩阵中的行(神经元)。

 

6.2.3 交互

 

为了更好的理解每个神经元聚类的多面性,CNNVis提供用户的交互性。

 

交互式聚类结构修正;用户可以将一个神经元从神经元聚类中或另外的神经元聚类中提取出。

 

选择神经元的一部分可视化;用户可以选择一组聚类,并显示在这些类中的强激活的神经元。

 

在多面之间切换;用户可以切换查看学习到的特征或激活矩阵。

 

6.3 基于双聚类的边缘捆绑

 

图9 基于双边聚类的边捆绑技术示意图

 

提出了基于双边聚类的边捆绑技术。此处的双边分别指两层之间输入的边和输出的边。如图9所示,双边聚类之后,对每个聚类结果分别进行边捆绑操作。图中,绿色表示边的权值为正,红色表示其权值为负。

 

7应用

 

7.1 概述

 

选择基本CNN模型并设计案例研究:

 

BaseCNN。 首先设计了包含10个卷积层,4个池化层和2个全连接层的卷积神经网络BaseCNN,使用普遍的ReLU激活函数,普遍的损失函数交互熵。网络结构如图10所示。将该网络用于CIFAR10数据库中,在测试的时候实现了11.32%的错误率。

 

图10 BaseCNN结构

 

案例研究的设计

 

  • 首先,基于BaseCNN,构建几种变种,目的是为了研究网络结构对于性能的影响;
  • 其次,需要分析训练过程,看是否未能收敛;
  • 最后,想要进一步提高BaseCNN模型的性能。

 

图11 用CNNVis分析BaseCNN

 

7.2 案例研究: 网络结构的影响

 

为了分析卷积神经网络的结构对最后结果的影响,设计了另外两种卷积神经网络来分析网络的深度对结果的影响。表1展示了这三种网络的基本信息。与BaseCNN相比,ShallowCNN少了三层卷积层和一层池化层;DeepCNN的卷积层和池化层数量是BaseCNN的两倍。

 

网络深度。进一步研究网络的深度对神经元学习特征的影响。

 

表1不同深度之间的CNN性能比较

 

图12 模型深度对性能的影响

 

网络宽度。进一步研究网络的宽度对神经元学习特征的影响。尝试分析,每个神经层内神经元的数量对结果的影响。为此设计了以下五种网络,如表2所示。

 

图13 用CNNVis分析DeepCNN的高层神经元性能

 

从上图可以发现,DeepCNN的高层神经层之间的边都是绿色,表明其权重都是正值,这就说明,这内部存在冗余现象。神经元之间的学习都是正值,基本没有进行结果的纠正。

 

表2 用于分析卷积神经网络的宽度对结果的影响,BaseCNN#w 表示其每个神经层内神经元的个数是BaseCNN的w倍。

 

 

从表2可以发现,BaseCNN*4的训练错误率很低,但是测验错误率却比较高。这说明,这个网络出现了过拟合现象。图14展示了其在CNNVis系统中的现象。我们可以发现,在图14(a)的矩阵中,大部分行都非常的相似,这就说明,这些神经元在学习相同的特征。这是一种冗余现象。

 

图14不同宽度的模型之间性能比较

 

7.3 案例研究:训练分析

 


图15 探索神经元之间的连接

 


图16 探索神经元聚类

 

该案例研究表明CNNVis是怎样帮助专家分析一个失败的训练过程。改进后的模型在CIFAR-10数据库上实现了分类错误率为9.43%,使得专家很满意。

 

8结论

 

本文提出一种新型的可视化分析系统,能够帮助机器学习专家更好的理解、分析与改进CNNs,进一步提高网络性能。

 

以下还有一些工作去进一步提升该系统,CNNVis关注CNN模型在训练过程中快照分析,而训练状态是实时更新的,关键点在于难以有些的选择快照的表示形式并做出很好的比较。另外一个有趣的未来工作在于将CNNVis应用于其他那些不能被构想成DAG的深度模型,比如RNN等,主要瓶颈在于设计一个有效的可视化,以方便专家理解通过不同的深度模型的数据流。

 

文章原标题《Towards Better Analysis of Deep Convolutional Neural Networks》,作者:Mengchen Liu 等。

 

-END-

 

 

 

 

博客地址:http://blog.yoqi.me/?p=767
扫我捐助哦
喜欢 4

这篇文章还没有评论

发表评论