1.卷积神经网络的起源
1.1 神经认知机 (1980年)
日本福岛邦彦提出的一种假设的生物视觉系统的数学模型
U0层:输入图像数据。
UG层:负责图像对比度提取。
US层(简单细胞层):负责图像特征提取,如边缘、纹理、颜色等图像特征。
UC层(复杂细胞层):支持抗变形、畸变容错。
UC4层:输出识别结果。
1.2 卷积神经网络模型
卷积神经网络的基本结构
典型的卷积神经网络一般由卷积层(含激活函数)、池化层、全连接层和输出层构成,其中卷积层与池化层一般交替排列,之后接一层或者多层全连接层,最后是输出层
2.卷积层
2.1 卷积层运算和填充
2.1.1 卷积运算
卷积运算(Convolution)是数学中的常见运算,分为离散卷积与连续卷积
2.2.2 二维卷积运算
给定二维的图像I作为输入,二维卷积核K, 卷积运算可表示为:
卷积核需要进行上下翻转和左右反转;K是二维的3x3矩阵
卷积神经网络中的“卷积”实际上是互相关,不是矩阵乘法运算
卷积核相当于传统计算机视觉领域中的特征算子,用于提取图像特征。
不同步长示例:当步长为1和2时
2.2.3 数据填充
如果我们有一个 n×n 的图像,使用 f×f 的卷积核进行卷积操作, 在进行卷积操作之前我们在图像周围填充p层数据,输出的维度:
卷积的模式: 在使用PyTorch等深度学习框架时,卷积层有Padding参数,有三种选择:‘Full’ 、 ‘Valid’和‘Same’ 。 ‘Full’表示需要填充,当卷积核与输入开始接触时进行卷积操作, ‘Valid’表示不需要填充, ‘Same’表示需要填充并保证输出与输入具有相同的尺寸。
2.2.4 卷积输出维度
如果我们有一个 n×n 的图像,使用 f×f 的卷积核进行卷积操作, 在进行卷积操作之前我们在图像周围填充p层数据,步幅为s。输出的维度为:
2.2 卷积神经网络的感受野
2.2.1 感受野
卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小,即特征图上的一个点对应输入图上的区域
2.2.2 感受野计算
可以采用从后往前逐层计算
第i层的感受野大小和第i-1层的卷积核大小和步长有关系,同时也与第(i-1)层感受野大小有关
假设最后一层(卷积层或池化层)输出特征图感受野的大小(相对于其直 接输入而言)等于卷积核的大小
例如2个卷积层,第1层3x3卷积核,stride是2,第2层2x2卷积核
RF2=2;RF1=(2-1)*2+3=5;即输出在输入图片上的感受野为5x5
例如稍微复杂点的网络:
2.3 单通道卷积和多通道卷积
通道(Channel):一般指的图像的颜色通道。
单通道图像:一般指的灰度图像 。
多通道图像:一般指的基于RGB的图像,有R、G、B三个 通道。
特征图(Feature map):经卷积和激活函数处理后的图像。
2.3.1 单通道卷积:单通道图像的卷积
2.3.2 多通道卷积:多通道图像的卷积
多卷积核多通道卷积(卷积计算):求和+偏置
2.4 卷积层的作用
卷积层的深度指的是卷积核个数
浅层卷积层:提取的是图像基本特征,如边缘、方向和纹理等特征。
深层卷积层:提取的是图像高阶特征,出现了高层语义模式, 如 “车轮” 、 “人脸”等特征。
3.激活函数
激活函数的引入,增强了人工神经网络的非线性表达能力 ,从而提高了模型的学习能力。
在人工神经网络发展的初期,Sigmoid激活函数起到了十分 重要的作用,但随着人工神经网络层数的增加以及反向传播算法的使用,会产生梯度消失问题。
在卷积神经网络中,为了缓解梯度消失问题,常用的激活函数有ReLU、PReLU、ERU和Maxout
3.1 Sigmoid激活函数的定义
Sigmoid激活函数存在“梯度饱和效应”问题,即Sigmoid激活函数两端梯度都趋于0,因此在使用误差反向传播算法进行网络训练时,该区域的误差无法传递到前一层,从而导致网络训练失败
3.2 Tanh激活函数的定义
Tanh激活函数同样存在“梯度饱和效应”问题,即Tanh激活函数两端梯度也都趋于0,因此在使用误差反向传播算法进行网络训练时,该区域的误差也无法传递到前一层,从而导致网络训练失败
3.3 ReLU激活函数的定义
与Sigmoid激活函数相比,ReLU在x≥0部分消除了“梯度饱和效应” ,且计算更简单,速度更快。
但ReLU本身也存在缺陷,如果输入为负值,其梯度等于0,导致 “神经元死亡” ,将无法进行权重更新,进而无法完成网络训练。
即便如此,ReLU仍然是当前深度学习领域中最为常用的激活函数之一。
3.4 PReLU激活函数的定义
其中α是一个需要学习的参数,当指定α=0.01时,又称为Leakly ReLU,当α通过高斯分布随机产生时,又称为随机化的ReLU (Randomized ReLU,RReLU)
PReLU的优点是比Sigmoid激活函数收敛快,解决了ReLU 激活函数的“神经元死亡”问题。
PReLU激活函数的缺点是需要再学习一个参数α,工作量变大。
3.5 ELU激活函数的定义
ELU激活函数的优点是处理含有噪声的数据有优势,与Sigmoid激活函数相比更容易收敛。
ELU激活函数的缺点是计算量较大,与ReLU激活函数相比,收敛速度较慢。
3.6 Maxout激活函数的定义
Maxout函数增加一层神经网络,定义:
Maxout函数的优点:能够缓解梯度消失;规避了ReLU神经元死亡的缺点
Maxout函数的缺点:增加了参数和计算量
3.7 卷积神经网络中激活函数选择原则
CNN在卷积层尽量不要使用Sigmoid和Tanh,将导致梯度消失。
首先选用ReLU,使用较小的学习率,以免造成神经元死亡的情况。
如果ReLU失效,考虑使用Leaky ReLU、PReLU、ELU或者Maxout, 此时一般情况都可以解决
4.池化层
池化操作使用某位置相邻输出的总体统计特征作为该位置的输出,常用最大池化(max-pooling)和均值池化(average- pooling)
池化层不包含需要训练学习的参数,仅需指定池化操作的 核大小、操作步幅以及池化类型
4.1 池化的作用
对输入对象进行“降采样(Downsampling)”操作,一定程度上提高了模型的容错能力
保证了当输入出现少量平移时,输出近似不变,增强了网络对输入图像中的小变形、扭曲、平移的鲁棒性(输入里的微小扭曲不会改变池化输出)
池化核的指定相当于在空间范围内对特征图的特征进行了维度约减, 同时缩小了下一层输入的特征图尺寸,进而在一定程度上减少了网络的参数个数和计算量。
5.全连接层
全连接层一般由一到多层的全连接神经网络组成
对卷积层和池化层输出的特征 图(二维)进行降维
将学到的特征表示映射到样本标记空间的作用
可以将不同的区域特征合并为一个完整的特征
6.输出层
对于分类问题:使用Softmax函数
对于回归问题:使用线性函数