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

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

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

以下为译文:

更好的理解分析深度卷积神经网络

 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

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

4.1 需求分析

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

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

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

R3-探索神经元的多面性;

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

R5-检查调试信息;

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

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

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

2、 神经元聚类可视化模块揭示神经元的多面性(R3);

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

4、 提供交互模块(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系统中的现象。我们可以发现,在图14(a)的矩阵中,大部分行都非常的相似,这就说明,这些神经元在学习相同的特征。这是一种冗余现象。

 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 等人

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

              翻译:海棠

相关文章
|
9天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
134 55
|
19天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
107 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
22天前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
58 3
图卷积网络入门:数学基础与架构设计
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
25天前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
35 1
|
28天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
|
25天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch代码实现神经网络
这段代码示例展示了如何在PyTorch中构建一个基础的卷积神经网络(CNN)。该网络包括两个卷积层,分别用于提取图像特征,每个卷积层后跟一个池化层以降低空间维度;之后是三个全连接层,用于分类输出。此结构适用于图像识别任务,并可根据具体应用调整参数与层数。

热门文章

最新文章