全连接神经网络存在的问题
- 权重矩阵的参数过多
- 参数量会随图像尺寸的增大而激增,带来巨大的计算消耗。
- 对图像的延展性差
- 忽略了输入数据的局部不变性特征
- 局部不变性特征:某些特则对一定范围内的变形、旋转、缩放等操作不敏感。
- 自然图像中的物体具有局部不变性特征,如尺度缩放、平移、旋转等。
- 全连接网络很难提取到这些局部不变特征
全连接神经网络难以提取局部不变性特征的主要原因是它们忽略了输入数据的本地结构,即每个输入节点只和输出层中的一个节点相连,无法模拟数据中的空间关系,也就无法捕获图像、视频等数据的局部结构,从而难以提取局部不变性特征。
此外,全连接神经网络的参数非常多,因此容易发生过拟合问题,导致网络泛化能力下降,更容易识别过去曾经见过的数据,但是对于新数据集却没有很好的泛化表现。
相比之下,卷积神经网络(Convolutional Neural Network, CNN)采用卷积层和池化层对输入数据进行特征提取,可以有效地提取数据的空间结构信息,从而能够更好地实现图像、视频等数据的分类和识别,能够较好的处理局部不变性特征。
卷积神经网络(CNN)
前言
卷积神经网络(CNN)是一种深度学习技术,广泛应用于计算机视觉、语音识别等领域。
CNN专为具有类似网状(grid—like)的数据而生
* 1-D grid:时间序列化数据
* 2-D grid:图像数据
* 3-D grid:视频数据
CNN主要由卷积层(Convolutional Layer)、池化层(Pooling Layer)、全连接层(Fully Connected Layer)组成。其中,卷积层是CNN的核心组成部分,它通过卷积操作提取图像的特征信息,并且能够保留空间上的相关性。接下来,我们来看一下卷积操作的具体实现。
概述
- 局部连接:每个神经元不再和上一层的所有神经元相互连接,而只是和一小部分神经元连接,从而显著降低了参数量。
- 权值共享:不同位置处的神经元共享同一组权重(即卷积核中的权重),可进一步降低参数量。
- 平移不变性:滤波器可以捕获与图像空间位置无关的区域特征。
卷积操作
卷积操作是CNN中最基础的操作之一,它可以用来提取图像的特征。假设有一个输入图像 x x x和一个大小为 k × k k \times k k×k的卷积核 w w w,那么它们的卷积结果 y y y可以表示为:
y i , j = ∑ p = 0 k − 1 ∑ q = 0 k − 1 w p , q x i + p , j + q y_{i,j} = \sum_{p=0}^{k-1} \sum_{q=0}^{k-1} w_{p,q} x_{i+p,j+q} yi,j=p=0∑k−1q=0∑k−1wp,qxi+p,j+q
其中, i i i和 j j j表示 y y y中的位置, p p p和 q q q表示 w w w中的位置。
卷积层
卷积层是CNN的核心组成部分,它通过卷积操作提取图像的特征信息,并且能够保留空间上的相关性。卷积层通常包括一个或多个卷积核,每个卷积核可以提取出不同的特征。
超参数:
-
卷积核大小 k × k k \times k k×k,滤波器个数 m m m,步幅 S S S、填充 P P P
-
输入为 n 1 × n 2 × n 3 n_1 \times n_2 \times n_3 n1×n2×n3的图像经过该卷积层后的输出为 ( n 1 − k + 2 P S + 1 ) × ( n 2 − k + 2 P S + 1 ) × m (\frac{n_1-k+2P}{S}+1) \times (\frac{n_2-k+2P}{S}+1)\times m (Sn1−k+2P+1)×(Sn2−k+2P+1)×m
其中, n 1 , n 2 , n 3 n_1,n_2,n_3 n1,n2,n3分别表示图像的高、宽和通道数。下面是卷积层的计算公式:
y
i
,
j
,
k
=
∑
l
=
1
n
3
∑
p
=
0
k
−
1
∑
q
=
0
k
−
1
w
p
,
q
,
l
,
k
x
i
+
p
,
j
+
q
,
l
+
b
k
y_{i,j,k} = \sum_{l=1}^{n_3} \sum_{p=0}^{k-1} \sum_{q=0}^{k-1} w_{p,q,l,k} x_{i+p,j+q,l} + b_k
yi,j,k=l=1∑n3p=0∑k−1q=0∑k−1wp,q,l,kxi+p,j+q,l+bk
其中,
w
p
,
q
,
l
,
k
w_{p,q,l,k}
wp,q,l,k表示第
k
k
k个卷积核的第
l
l
l个通道上的第
p
p
p行
q
q
q列的权重,
b
k
b_k
bk表示第
k
k
k个卷积核的偏置。
- 可知参数量为 ( k 2 × n 3 + 1 ) × m (k^2\times n_3+1)\times m (k2×n3+1)×m
激活层
对于卷积层的输出,还可以通过非线性激活函数来进一步提取特征。常见的非线性激活函数包括ReLU、sigmoid和tanh等。下面是ReLU的计算公式:
y i , j , k = m a x ( 0 , x i , j , k ) y_{i,j,k} = max(0, x_{i,j,k}) yi,j,k=max(0,xi,j,k)
激活后的输出组成一张新的图像,称作“特征图”(Feature map)
激活层的作用:
- 增强网络的非线性建模能力,对卷积层的输出特征进行过滤。因为卷积处理的操作可视为对各像素点赋予一个权值,显然是线性的。
池化层
池化层可以减小图像的尺寸,同时保留重要的特征信息,从而减少模型的复杂度,并且增大了网络的感受野,进一步减少了后续层的参数量。常见的池化操作包括最大池化和平均池化。下面是最大池化和平均池化的计算公式:
y i , j , k = max p = 0 M − 1 max q = 0 N − 1 x i + p , j + q , k y_{i,j,k} = \max_{p=0}^{M-1} \max_{q=0}^{N-1} x_{i+p,j+q,k} yi,j,k=p=0maxM−1q=0maxN−1xi+p,j+q,k
y i , j , k = 1 M × N ∑ p = 0 M − 1 ∑ q = 0 N − 1 x i + p , j + q , k y_{i,j,k} = \frac{1}{M \times N} \sum_{p=0}^{M-1} \sum_{q=0}^{N-1} x_{i+p,j+q,k} yi,j,k=M×N1p=0∑M−1q=0∑N−1xi+p,j+q,k
其中, M M M和 N N N分别表示池化窗口的大小。
- 假设池化层的超参数为: 滤波器大小: k × k k\times k k×k、步幅: S S S
- 假设输入大小为 W 1 × H 1 × C W_1\times H_1\times C W1×H1×C
- 池化后的输出大小为$(\frac{W_1-k}{S}+1)\times (\frac{W_2-k}{S}+1) $
全连接层
全连接层对整个网络进行分类或回归,将前面层的特征信息转化为最终输出结果。全连接层的计算公式如下:
y i = ∑ j = 1 n w i , j x j + b i y_{i} = \sum_{j=1}^{n} w_{i,j} x_{j} + b_i yi=j=1∑nwi,jxj+bi
其中, w i , j w_{i,j} wi,j表示第 i i i个神经元与第 j j j个神经元之间的权重, b i b_i bi表示第 i i i个神经元的偏置。
其余常用网络层
除此之外,CNN网络还包括其它常用的网络层:
- 批标准化层(Batch Normaization Layer)
- 反卷积层(Deconvlutional Layer)
- 上池化层(Unpooling Layer)
- 空洞卷积层(Dilated/Atrous Convolutional Layer)