卷积神经网络(Convolutional Neural Network,CNN)
CNN相比于全连接前馈神经网络的优势
- 参数更少:如果输入图像大小为100 × 100 × 3(即图像高度为100,宽度为100,3个颜色通道:RGB)。在全连接前馈网络中,第一个隐藏层的每个神经元到输入层都有100 × 100 × 3 = 30, 000个相互独立的连接,每个连接都对应一个权重参数。随着隐藏层神经元数量的增多,参数的规模也会急剧增加。这会导致整个神经网络的训练效率会非常低,也很容易出现过拟合。
- 局部不变性特征:自然图像中的物体都具有局部不变性特征,比如在尺度缩放、平移、旋转等操作不影响其语义信息。而全连接前馈网络很难提取这些局部不变特征,一般需要进行数据增强来提高性能
感受野机制
卷积神经网络是受生物学上感受野的机制而提出。感受野(Receptive Field)主要是指听觉、视觉等神经系统中一些神经元的特性,即神经元只接受其所支配的刺激区域内的信号。在视觉神经系统中,视觉皮层中的神经细胞的输出依赖于视网膜上的光感受器。视网膜上的光感受器受刺激兴奋时,将神经冲动信号传到视觉皮层,但不是所有视觉皮层中的神经元都会接受这些信号。一个神经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元。
卷积
一维卷积示意图如下,其中滤波器为:[1, 0, -1]
卷积种类
假设卷积层的输入神经元个数为n,卷积大小为m,步长(stride)为s,输入神经元两端各填补p个零(zero padding),那么该卷积层的神经元数量为(n − m + 2p)/s + 1。
- 窄卷积(Narrow Convolution):步长s = 1,两端不补零p = 0,卷积后输出长度为n − m + 1。
- 宽卷积(Wide Convolution):步长s = 1,两端补零p = m− 1,卷积后输出长度n + m − 1。
- 等宽卷积(Equal-Width Convolution):步长s = 1,两端补零p = (m−1)/2,卷积后输出长度n。
卷积层
卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器,并减少参数数量,卷积层有两大特性:
- 局部连接:在卷积层(假设是第 l l l 层)中的每一个神经元都只和下一层(第 l − 1 l-1 l−1 层)中某个局部窗口内的神经元相连,构成一个局部连接网络。如图5.5b所示,卷积层和下一层之间的连接数大大减少,有原来的 n l ∗ n l − 1 n^l * n^{l−1} nl∗nl−1个连接变为 n l ∗ m n^l * m nl∗m个连接,m为滤波器大小
- 权重共享:作为参数的滤波器
w
(
l
)
w^{(l)}
w(l) 对于第
l
l
l 层的所有的神经元都是相同的。下图中,所有的同颜色连接上的权重是相同的
由于局部连接和权重共享,卷积层的参数只有一个m维的权重 w ( l ) w^{(l)} w(l) 和1维的偏置 b ( l ) b^{(l)} b(l),共 m + 1 个参数。参数个数和神经元的数量无关。此外,第 l l l 层的神经元个数不是任意选择的,而是满足 n ( l ) = n ( l − 1 ) − m + 1 n^{(l)} = n^{(l−1)}− m + 1 n(l)=n(l−1)−m+1
卷积层为一维情况:
卷积层为多维情况:
卷积网络主要应用在图像处理上,而图像为两维结构,因此为了更充分地利用图像的局部信息,通常将神经元组织为三维结构的神经层,其大小为高度M×宽度N×深度D,有D个M × N 大小的特征映射构成
特征映射(Feature Map)为一幅图像(或其它特征映射)在经过卷积提取到的特征,每个特征映射可以作为一类抽取的图像特征。为了提高卷积网络的表示能力,可以在每一层使用多个不同的特征映射,以更好地表示图像的特征
卷积层具体结构:
卷积例子:其中输入层填充了一层0,卷积核的深度为2,每一层卷积核分别与输入做点积再相加,最后加上偏置项
汇聚层(池化层)
汇聚层(Pooling Layer)也叫子采样层(Subsampling Layer),其作用是进行特征选择,降低特征数量,并从而减少参数数量。
卷积层虽然可以显著减少网络中连接的数量,但特征映射组中的神经元个数并没有显著减少。如果后面接一个分类器,分类器的输入维数依然很高,很容易出现过拟合。为了解决这个问题,可以在卷积层之后加上一个汇聚层,从而降低特征维数,避免过拟合。
常用两种池化操作:
- 最大池化
- 平均池化
典型的CNN结构
一个典型的卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成。目前常用的卷积网络结构图5.9所示。一个卷积块为连续M 个卷积层和b个汇聚层(M通常设置为2 ∼ 5,b为0或1)。一个卷积网络中可以堆叠N 个连续的卷积块,然后在接着K 个全连接层(N 的取值区间比较大,比如1 ∼ 100或者更大;K一般为0 ∼ 2)。
目前,整个网络结构趋向于使用更小的卷积核(比如1 × 1和3 × 3)以及更深的结构(比如层数大于50)。此外,由于卷积的操作性越来越灵活(比如不同的步长),汇聚层的作用变得也越来越小,因此目前比较流行的卷积网络中,汇聚层的比例也逐渐降低,趋向于全卷积网络。
Text-CNN
原始论文:Convolutional Neural Networks for Sentence Classification
Text-CNN特点:
- 滤波器/卷积核向下移动
- 卷积核的宽度是与词向量的维度一致,而原始CNN的卷积核宽度和高度一般相同
- 池化层为1维的最大池化
Text-CNN的通俗理解以及 Keras 实现请看这篇大神的文章:TextCNN文本分类(keras实现)