卷积神经网络(Convolutional Neural Network,CNN)受人脑视觉神经启发,是计算机图像识别中最常见的算法。本文将从一个典型的CNN网络结构,即AlexNet[1]入手,分析其参数与结构。

1、CNN基本结构

卷积神经网络的3个基本结构为:卷积层(Convolutional Layer)、池化层(Pooling Layer)和全连接层(Fully Connected Layer)。另外还有一些基本操作,如归一化、激活函数、Dropout等等。

  • 卷积层:卷积层的主要任务是特征提取,它有多个卷积核,每一个卷积核视作一个过滤器,匹配某种模式。
  • 池化层:池化层的主要任务是数据降维,对数据进行下采样,增加非线性操作,大大减少运算量。
  • 全连接层:全连接层是神经网络的输出层,它将之前提取的分散特征结合,输出最终结果。

2、参数计算

尺寸(Size):尺寸指的是每张通道图的“空间大小”,即高(Height)× 宽(Width)。
通道(Channel):通道指的是图像中“不同种类的信息层数”。灰度图为1,RGB彩色图为3。

模型参数主要由卷积层的参数和全连接层的参数构成。相关计算规则如下:

卷积层输出尺寸计算:

image.png

卷积层参数计算:

image.png

拿第一层卷积为例:

image.png

Forward Computation(前向计算量),指的是模型在进行一次前向传播(inference)时所执行的总计算操作量,有MACs(Multiply–Accumulate Operations)和FLOPs(Floating Point Operations)两种衡量标准,这两者常常被人们混淆。实际上,1 MACs包含一个乘法操作与一个加法操作,大约包含2 FLOPs。通常MACs与FLOPs存在一个2倍的关系。这里用MACs表示向前计算量。

image.png

这里计算了biases,所以卷积核参数和计算量都有+1操作。如果不计算biases,则不做+1操作。

3、AlexNet结构

AlexNet的结构如下图所示:

image.png

其主要参数计算为:

4598659c9e73c24318ede47c0a468f2.png

其中参数总和为各层相加,向前计算量亦如此。

反向传播(Backward Computation)与正向传播的参数量一样,但是计算量却是其的2-3倍。

References

[1] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[J]. Advances in neural information processing systems, 2012, 25.

标签: CNN

添加新评论