能帮你更好理解分析深度卷积神经网络,今天要解读的是一款新型可视化工具——CNNVis,看完就能用!

  1. 云栖社区>
  2. 博客>
  3. 正文

能帮你更好理解分析深度卷积神经网络,今天要解读的是一款新型可视化工具——CNNVis,看完就能用!

uncle_ll 2017-07-12 17:06:21 浏览4338

首发地址https://yq.aliyun.com/articles/64813

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

以下为译文

 82c230d3c2a8c4a421fdd062223672d39ee3f9a0

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

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

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

1 引言

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

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

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

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

本文工作的关键技术贡献是

可视化分析系统帮助专家理解分析和改进深度卷积神经网络

混合可视化结合了DAG矩形填充矩阵可视化和边缘捆绑等方法

2 相关工作

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

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

3 背景

047a0b85b29d4a6ef848d9748a40c76a0c85607b

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

329e8e7c7953fab0ca2178953fa0732abff89839 

3 卷积操作示意图

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

结构图2展示的是一个典型的卷积神经网络结构。这个网络包含两个卷积层convolution layer两个池化层pooling layer和一个全连接层fully connected layer。

卷积层采用各种卷积核对输入图片进行卷积处理基本卷积过程如图3a所示。卷积操作具有平移不变性。因而能够支持神经元学习到鲁棒性比较高的特征。

激活函数非线性的变换。根据一系列的输入值神经元之间连接的权值以及激励规则刺激神经元。

典型的激活函数ReLU和Softmax函数具体公式请见原文。    

池化池化层的操作是一种降采样操作。该操作是在一个小区域内采取一个特定的值作为输出值。比如图3b在每个特定的小区域内选取最大值作为输出值。池化层的操作可以达到一定的空间不变性效果。使用最大的是最大池化。

归一化归一化是CNNs中的一个优化操作是为了加快训练过程中的收敛速度和减少陷入局部最优解的可能。

损失函数在训练阶段用于评估网络输出结果与实际值的差异。然后用损失函数的值更新每个神经元之间的权重值。卷积神经网络的训练目的就是最小化损失函数值。

4 CNNVis

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

4.1 需求分析

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

R1-提供一个神经元的学习特征的概述

R2-交互式修改神经元的聚类结果

R3-探索神经元的多面性

R4-揭示低层次的特征是如何聚合成高层次特征

R5-检查调试信息

4.2 系统概述1ada853b0e0ca9dc0153b532677bcf043204c6b2                                                                       4  CNNVis的设计流程图

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

1DAG规划模块将CNN转换成DAG并从概述上总结神经元和层R1,R4

神经元聚类可视化模块揭示神经元的多面性R3

基于双聚类的边缘捆绑减少由于大量连接造成的视觉混乱R4

提供交互模块R2和显示调试信息R5

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

17bf1417838fa94cfcd308f2d1f468bbab4b9210

 图5 DAG转换及聚类过程

5 DAG 构想

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

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

6 可视化

6.1 概述

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

6 可视化概述 

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

6.2 神经元聚类可视化

6.2.1 矩阵填充学习特征

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

 17c1bcda75fad01e7d69e7604474c46a6b11f35b

  图7 分层矩形填充的说明

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

步骤1混分层聚类。

步骤2计算每个聚类的布局区域。

步骤3每个聚类的矩形填充。

6.2.2  激活值作为矩阵可视化

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

9378480e6f45b3631b4f8b02382e90c5d4f14c76

8 矩阵排序的说明

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

6.2.3 交互

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

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

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

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

6.3 基于双聚类的边缘捆绑

3152ef0e5903967a3469028c77ec3760e778ef3e

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

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

7 应用

7.1 概述

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

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

4c91c1cec7ab7c05b33c38e72e11e87bc2ac8cf3 

10 BaseCNN结构

案例研究的设计

首先基于BaseCNN,构建几种变种目的是为了研究网络结构对于性能的影响

其次需要分析训练过程看是否未能收敛

最后想要进一步提高BaseCNN模型的性能。

6a9a40513c107fc6a785b63d4214b4c110749fb0

11 用CNNVis分析BaseCNN

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

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

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

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

59136399ab0a9092c58e852337a85a6418336dcd 

 12 模型深度对性能的影响

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

733bb1446f9b7aa89178a748ee79563817d02d08

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

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

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

 47abf9e8379eb2e48f4bf6a0198989e30efe8e17

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

 e0a10e641884017d2b5a5c507db46073b2ce6acb

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

7.3 案例研究训练分析

 2803ae796aeb16e7d9030a531f0c8a55f3a22062

15 探索神经元之间的连接

ad5d3af5268769f0b44f0fc50c1fd44fc097a00a

16 探索神经元聚类

该案例研究表明CNNVis是怎样帮助专家分析一个失败的训练过程。

改进后的模型在CIFAR-10数据库上实现了分类错误率为9.43%使得专家很满意。

8 结论

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

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

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

文章为简译更为详细的内容请查看原文        

             

翻译者 海棠 

Wechat269970760 

Email:duanzhch@tju.edu.cn

微信公众号AI科技时讯

157f33dddfc596ede3681e0a2a0e7068dc288cc1