更好的理解分析深度卷积神经网络(Towards Better Analysis of Deep Convolutional Neural Networks )

深度卷积神经网络(CNNs)在特征识别相关任务中取得的效果,远比传统方法好。因此,CNNs常用于图像识别、语音识别等。但是,因为CNNs结构庞大,一般都会包含几十个神经层,每一层,又有数百至数千个神经元;同时,CNNs任意两层之间神经元的相互影响错综复杂。这两个主要的因素,导致CNNs难以理解、分析。为此,用户很难从失败或成功的例子中学习到如何设计一个好的卷积神经网络。因此,设计一个效果好的神经网络,往往需要依靠大量的尝试。

这篇文章提出了一个可视分析系统,CNNVis,支持机器学习专家更好的理解、分析、设计深度卷积神经网络。

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

architecture
图1. 典型的卷积神经网络结构

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

convolution
图2. 卷积操作示意图

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

pooling
图3. 最大池化层。从特定区域中,选取最大值作为输出值

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

卷积神经网络中的激励函数,根据一系列的输入值,神经元之间连接的权值以及激励规则,刺激神经元。

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

pipeline
图4. CNNVis的设计流程图

CNNVis的设计流程图如图四所示,主要包含四个部分。

DAG转换主要是将卷积神经网络转换为有向非循环网络(directed acyclic graph);神经元群簇可视化的目的在于,给用户一个直观的可视化形式分析神经元群簇在整个网络中的作用;基于双边聚类的边捆绑技术的目的是减少视图的混乱;此外,系统还支持一系列的交互,比如支持用户修改聚类结果等,以便用户更好的分析探索整个卷积神经网络。

dag
图5. DAG转换及聚类过程

DAG转换环节,由于一个卷积神经网络往往会有很多层,每一层会有很多神经元。为了提供总览图,方便用户建立对整个卷积神经网络的认识,他们首先对层进行了聚类。然后在每个层聚类中,对内部的神经元进行了聚类(如图5所示)。

matrix
图6. CNNVis中,矩阵表现形式

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

bundling
图7. 基于双边聚类的边捆绑技术示意图

接着,为了减少视图的混乱,线的交叉,他们提出了基于双边聚类的边捆绑技术。此处的双边分别指两层之间输入的边和输出的边。如图7所示,双边聚类之后,对每个聚类结果分别进行边捆绑操作。图中,绿色表示边的权值为正,红色表示其权值为负。

接下来,我将通过一个样例,展示CNNVis的实用性。在这个例子中,专家们首先设计了包含10个卷积层, 4个池化层和2个全连接层的卷积神经网络BaseCNN,该网络主要用于图像识别。在CNNVis中,专家们发现在比较低的层,神经元倾向于学习一些简单的模式(图8(A)),比如边缘,颜色,条带灯;在比较高的层,神经元能够检测到一些抽象的特征(图8(C)),比如整辆轿车等。

BaseCNN
图8. 用CNNVis分析BaseCNN

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

表1
表1. 用于分析卷积神经网络的深度对结果的影响的三种神经网络

height1
图9. 用CNNVis分析ShallowCNN的高层神经元性能

从图9,我们可以发现,ShallowCNN的高层神经层,依旧存在好多混乱的群簇(群簇内的图像属于多种实体)。这表明它没有足够多的神经层来区分各种实体。

height2
图10. 用CNNVis分析DeepCNN的高层神经元性能

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

接下来,他们尝试分析,每个神经层内神经元的数量对结果的影响。为此,他们设计了以下五种网络,如表2所示。

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

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

width1
图11. (a)BaseCNN * 4 在CNNVis中的表现;(b)BaseCNN在CNNVis中的表现

此外,在表2中,我们可以发现BaseCNN * 0.25的训练错误率和测试错误率都很高,这是一种欠拟合现象。图12展示了其在CNNVis中的现象,我们可以发现,即使是高层的神经元簇,每个群簇内的结果都比较混乱。这说明,该网络没有足够的神经元学习图像中的特征,进而区分不同类别的图像。

width2
图12. BaseCNN * 0.25的高层神经元在CNNVis中的表现

总的来说,该工作提出了一个可视分析系统来支持机器学习专家更好的理解,分析,设计深度卷积神经网络。很多机器学习算法都有与卷积神经网络相似的特点,难以理解、分析,参数设置麻烦等。结合适合的可视分析技巧,个人觉得可以有效的将这些黑盒子透明化,方便相关的研究者更好的理解、分析、设计这些机器学习算法。

2 条评论。

  1. 写的真好,很详细! 😛

  2. 這篇好! 🙂