卷积神经网络(Convolutional Neural Network,CNN)又叫卷积网络(Convolutional Network),是一种专门用来处理具有类似网格结构的数据的神经网络。卷积神经网络一词中的卷积是一种特殊的线性运算。卷积网络是指那些至少在网络的一层中使用卷积运算来代替一般的矩阵乘法的神经网络。
卷积神经网络的出现,极大的缓解了全连接神经网络中存在的一个典型的问题:数据的波形被忽视了!众所周知,全连接神经网络在进行数据输入的时候,需要将一个二维或者三维的数据展平为一维的数据。而我们知道在计算机中图形是一个三维的数据,因为需要存储一些类似 RGB 各个通道之间关联性的空间信息,所以三维形状中可能隐藏有值得提取的本质模式。而全连接展平会导致形状的忽视。因此需要利用卷积神经网络来保持形状的不变。
典型应用场景:图像识别、语音识别等。
典型结构如下图所示:
神经网络中的各层输入层(Input Layer):主要是对原始的图像数据进行预处理
卷积层(Convolution Layers):从前一层提取移位不变特征。即当输入数据是图像的时候,卷积层会以3维数据的形式接收输入数据,并同样以3维数据的形式输出至下一层。因此,在CNN中,可以(有可能)正确理解图像等具有形状的数据。注:卷积层的输入和输出数据通常又被称为特征图(Feature Map)。卷积层的输入数据称为输入特征图(Input Feature Map),输出数据称为输出特征图(Output Feature Map)。
池化层(Pooling Layers):将前一层的多个单元的激活组合为一个单元。池化是缩小高、长方向上的空间的运算,通常减小一半。
全连接层(Fully Connected Layers):收集空间扩散信息
输出层(Output Layer):选择类
卷积操作卷积运算相当于图像处理中的“滤波器运算”。卷积运算会对输入数据应用滤波器(Filter)。
假设,一个初始的图像大小为 \(J*K\), 同时有 \(L\) 个管道,如下图所示:
我们应用一个 \(M*N\) 大小的滤波器。图中绿色的格子就是一个 3*3 的滤波器。卷积运算的整个操作为:将各个位置上滤波器的元素和输入的对应元素相乘,然后再求和(整个操作也被称为乘积累加运算),然后,将这个结果保存到输出的对应位置。
将计算过程公式化,公式如下:
\[Z_{j,k} = b + \sum_{m=0}^{M-1}\sum_{n=0}^{N-1}K_{m,n}V_{j+m,k+n} \]