以下内容为对Datawhale2021年11月组队学习中“水很深的深度学习”课程的卷积神经网络的简要总结。
原文链接: https://datawhalechina.github.io/unusual-deep-learning/
CNN的引出:全连接神经网络的权重矩阵的参数非常多,而且往往自然图像中的物体都具有局部不变性特征,即尺度缩放、平移、旋转等操作不影响其语义信息,但是全连接前馈网络很难提取这些局部不变特征,这就引出了我们将要介绍的卷积神经网络
卷积神经网络也是一种前馈神经网络,是受到生物学上感受野(感受野主要是指听觉系统、本体感觉系统和视觉系统中神经元的一些性质)的机制而提出的(在视觉神经系统中,一个神经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元)。
( f ∗ g ) ( n ) (f*g)(n) (f∗g)(n)成为 f 和 g 的卷积,连续卷积和离散卷积可以表达为如下形式:
卷积有很多应用,经常用于处理一个输入,通过系统产生一个适应需求的输出。
引入滤波器的滑动步长S和零填充P:
卷积的结果按输出长度不同可以分为三类:
早期文献的卷积默认为窄卷积,目前文献中一般默认为等宽卷积
在图像处理中,图像是以二维矩阵的形式输入到神经网络中,因此需要二维卷积。
二维卷积定义:
一个输入信息 X X X和滤波器 W W W 的二维卷积为:
Y = W ∗ X Y=W∗X Y=W∗X即:
∑ u = 1 U ∑ v = 1 V w u v x i − u + 1 , j − v + 1 \sum_{u=1}^{U}\sum_{v=1}Vw_{uv}x_{i-u+1,j-v+1} u=1∑Uv=1∑Vwuvxi−u+1,j−v+1
多个卷积核的情况:下图是表示步长2、filter 3*3 、filter个数6、零填充 1的情形。
转置卷积/微步卷积:低维特征映射到高维特征
卷积神经网络的基本结构大致包括:卷积层、激活函数、池化层、全连接层、输出层等。
数据填充:如果我们有一个 × 的图像,使用× 的卷积核进行卷积操作,在进行卷积操作之前我们在图像周围填充 层数据,输出的维度:
感受野:卷积神经网络每一层输出的特征图(featuremap)上的像素点在输入图片上映射的区域大小,即特征图上的一个点对应输入图上的区域。
可以采用从后往前逐层的计算方法计算感受野的大小:
卷积层的深度(卷积核个数):一个卷积层通常包含多个尺寸一致的卷积核
激活函数是用来加入非线性因素,提高网络表达能力,卷积神经网络中最常用的是ReLU,Sigmoid使用较少。
D ( x ) = { 0 , x < 0 x , x ≥ 0 D(x) = \begin{cases} 0,&x<0 \\ x,&x≥0 \\ \end{cases} D(x)={0,x,x<0x≥0
ReLU函数的优点:
ReLU函数的缺点:
为什么会导致神经元死亡:
对于正例 y = W T X + b y=W^{T}X+b y=WTX+b,y_要变大,则更新权重W,使得W变大,负例y_要变小,更新权重W使得W变小,如果学习率设置较大,在遇到负例的时候,W会突然变的很小,会导致所有样本在某一结点处,全部输出为负数,这时,梯度无法经 ReLU 反向传播至 ReLU 的输入函数。也就是说,这个神经元的参数再也不会更新了,即神经元死亡。
D ( x ) = { α x , x < 0 x , x ≥ 0 D(x) = \begin{cases} αx,&x<0 \\ x,&x≥0 \\ \end{cases} D(x)={αx,x,x<0x≥0
PReLU函数的优点:
PReLU函数的缺点:需要再学习一个参数,工作量变大
D ( x ) = { α ( e x − 1 ) , x < 0 x , x ≥ 0 D(x) = \begin{cases} α(e^{x}-1),&x<0 \\ x,&x≥0 \\ \end{cases} D(x)={α(ex−1),x,x<0x≥0
ELU函数的优点:
ELU函数的缺点:计算量较大,收敛速度较慢
对于激活函数的选取:
池化操作使用某位置相邻输出的总体统计特征作为该位置的输出,常用最大池化(max-pooling)和均值池化(average- pooling)。
池化层不包含需要训练学习的参数,仅需指定池化操作的核大小、操作步幅以及池化类型。
池化的作用:
卷积核个数、卷积核尺寸、网络架构这些参数,是在第一步之前就已经固定的,且不会在训练过程中改变——只有卷 积核矩阵和神经元权重会更新。
和多层神经网络一样,卷积神经网络中的参数训练也是使用误差反向传播算法,关于池化层的训练则是将池化层改为多层神经网络的形式。
LeNet-5由LeCun等人于1998年提出,主要进行手写数字识别和英文字母识别。是很经典的卷积神经网络,是学习卷积神经网络的基础。
总结:卷积核大小、卷积核个数(特征图需要多少个)、池化核大小(采样率多少)这些参数都是变化的,这就是所谓的CNN调参,需要学会根据需要进行不同的选择。
AlexNet由Hinton的学生Alex Krizhevsky于2012年提出,获得ImageNet LSVRC-2012(物体识别挑战赛)的冠军,1000个类别120万幅高清图像(Error: 26.2%(2011) →15.3%(2012)),通过AlexNet确定了CNN在计算机视觉领域的王者地位。
网络结构:
AlexNet可分为8层(池化层未单独算作一层),包括5个卷 积层以及3个全连接层
输入层:AlexNet首先使用大小为224×224×3图像作为输入(后改为227×227×3)
第一层(卷积层):包含96个大小为11×11的卷积核,卷积步长为4,因此第一层输出大小为55×55×96;然后构建一个核大小为3×3、步长为2的最大池化层进行数据降采样,进而输出大小为27×27×96
第二层(卷积层):包含256个大小为5×5卷积核,卷积步长为1,同时利用padding保证 输出尺寸不变,因此该层输出大小为27×27×256;然后再次通过 核大小为3×3、步长为2的最大池化层进行数据降采样,进而输出大小为13×13×256
第三层与第四层(卷积层):均为卷积核大小为3×3、步长为1的same卷积,共包含384个卷积核,因此两层的输出大小为13×13×384
第五层(卷积层):同样为卷积核大小为3×3、步长为1的same卷积,但包含256个卷积 核,进而输出大小为13×13×256;在数据进入全连接层之前再次 通过一个核大小为3×3、步长为2的最大池化层进行数据降采样, 数据大小降为6×6×256,并将数据扁平化处理展开为9216个单元
第六层、第七层和第八层(全连接层):全连接加上Softmax分类器输出1000类的分类结果,有将近6千万个参数
VGGNet由牛津大学和DeepMind公司提出
相较于AlexNet,VGG-16(比较常用,结构规整,具有很强的拓展性)网络模型中的卷积层均使用 3 ∗ 3 3∗3 3∗3的卷积核,且均为步长为1的same卷积,池化层均使用 2 ∗ 2 2∗2 2∗2的池化核,步长为2
Inception Net 是Google公司2014年提出,获得ImageNet LSVRC-2014冠军。文章提出获得高质量模型最保险的做法就是增加模型的深度(层数)或者是其宽度(层核或者神经元数),采用了22层网络。
ResNet(Residual Neural Network),又叫做残差神经网络,是由微软研究院的何凯明等人2015年提出,获得ImageNet ILSVRC 2015比赛冠军,获得CVPR2016最佳论文奖。
随着卷积网络层数的增加,误差的逆传播过程中存在的梯 度消失和梯度爆炸问题同样也会导致模型的训练难以进行,甚至会出现随着网络深度的加深,模型在训练集上的训练误差会出现先降低再升高的现象。残差网络的引入则有助于解决梯度消失和梯度爆炸问题。
残差块
ResNet的核心是叫做残差块(Residual block)的小单元, 残差块可以视作在标准神经网络基础上加入了跳跃连接(Skip connection).
a l + 1 = σ ( W l + 1 a l + b l + 1 ) a_{l+1}=σ(W_{l+1}a_{l}+b_{l+1}) al+1=σ(Wl+1al+bl+1)
a l + 2 = σ ( W l + 2 a l + 1 + b l + 2 ) a_{l+2}=σ(W_{l+2}a_{l+1}+b_{l+2}) al+2=σ(Wl+2al+1+bl+2)
a l + 1 = σ ( W l + 1 a l + b l + 1 ) a_{l+1}=σ(W_{l+1}a_{l}+b_{l+1}) al+1=σ(Wl+1al+bl+1)
a l + 2 = σ ( W l + 2 a l + 1 + b l + 2 + a l ) a_{l+2}=σ(W_{l+2}a_{l+1}+b_{l+2}+a_{l}) al+2=σ(Wl+2al+1+bl+2+al)
DenseNet中,两个层之间都有直接的连接,因此该网络的直接连接个数为L(L+1)/2。
对于每一层,使用前面所有层的特征映射作为输入,并且使用其自身的特征映射作为所有后续层的输入
DenseNets可以自然地扩展到数百个层,而没有表现出优化困难。在实验中,DenseNets随着参数数量的增加,在精度上产生一致的提高,而没有任何性能下降或过拟合的迹象。
优点:
图像处理领域
语音识别领域
自然语言处理领域
TextCNN 模型是由 Harvard NLP 组的 Yoon Kim 在2014年发表的 Convolutional Neural Networks for Sentence Classification 一文中提出的模型,由于 CNN 在计算机视觉中,常被用于提取图像的局部特征图,且起到了很好的效果,所以该作者将其引入到 NLP 中,应用于文本分类任务,试图使用 CNN 捕捉文本中单词之间的关系。