一、全连接层
偏置:-1
将神经元按列排列,再将列与列进行连接,就得到BP神经网络
正向传播,从左到右,得到输出值。和期望输出值相比较就得到误差值。计算每个节点的偏导数就是每个节点的误差梯度。将损失值反向应用到误差梯度上达到反向传播过程。
输入什么?输出什么?
输入:彩色的RGB图(3个分量)->灰度化(一个分量)->二值化(黑白图)->滑动窗口滑动(五行三列的)变成一个5*5的矩阵->
将行向量 作为神经网络的 输入层
onehot编码标签编码的方式 ,希望输出0,1,2,3,4,5,6,7,8,9这几种分类,即为输出层。
二.卷积层(一个滑动窗口,在特征图上滑动,并计算(相乘再相加),目的是为了图像的特征提取 )
参数:连接层之间的权重参数
一张1480*470的图片,如果神经元个数1000的话,总1480*470*1000
若卷积核为5*5的则参数5*5*1000,
卷积核层数(深度、channel)由输入特征矩阵的层数决定。
输出特征矩阵的层数,由卷积核个数决定
为什么要使用激活函数?
线性过程必须要引入非线性因素,才能解决非线性问题
三、池化层(如:MaxPooling下采样层,目的是:对特征层进行稀疏处理,减少数据运算量)
没有参数
只改变特征矩阵的w和h,不改变深度
一般池化核大小poolsize和步距stride相同
二、AlexNet
在图中有上下两个部分是因为作者使用两块GPU进行并行训练,所以上下两个部分结构是一模一样的,我们直接看下面部分就行了。
分为上下两层,分别对应两个GPU的操作过程,除了中间某些卷积层和全连接层会有GPU间的交互外,其他层都是由两个GPU分别计算结果。
除去局部响应规范化操作(LRN),AlexNet一共包含8层,前5层由卷积层(其中卷积层1、2、5后含有下采样层)组成,(中间还夹带一个平均池化),剩下的3层为全连接层。最后一层全连接层输出,得到1000个图像分类标签对应的得分值。
除了GPU并行结构的设计,AlexNet网络结构和LeNet很相像。
3、输入
输入是(224,224,3)的图像数据
4、卷积层
(1)第一层
(224,224,3)->(55,55,64)->(27,27,64)
Note:本来这后面还接了个norm层,即LRN 局部响应归一化
(2)第二层
(27,27,64)->(27,27,192)->(13,13,192)
(3)第三层
(13,13,192) ->(13,13,384)
注:需要GPU交互
(4)第四层
(13,13,384) ->(13,13,256)
(5)第五层
(13,13,256) ->(13,13,256)->(6,6,256)
5、全连接层
(1)第六层
6*6*256 -> 4096
注:需要GPU交互
(2)第七层
4096 -> 4096
注:需要GPU交互
(3)第八层
4096 -> 1000,得到1000个图像分类标签对应的得分值
注:需要GPU交互
6、GPU交互
最早的AlexNet使用这种双数据流的GPU交互是因为早期显存的限制。现在的Alexnet的应用已经不需要这样的交互设计了。
三、AlexNet的亮点
该网络的亮点:
(1)首次利用 GPU 进行网络加速训练。
(2)使用了 ReLU 激活函数,而不是传统的 Sigmoid 激活函数以及 Tanh 激活函数。
(3)使用了 LRN 局部响应归一化。
(4)在全连接层的前两层中使用了 Dropout方法按一定比例随机失活神经元,以减少过拟合。
1、在多个GPU上进行模型的训练
不但可以提高模型的训练速度,还能提升数据的使用规模,解决当时的显存受限问题。
2、使用dropout
选择性地忽略训练中的单个神经元,减缓模型的过拟合问题。
3、使用ReLU作为激活函数代替了传统的Sigmoid
(1)ReLu的计算比较简单,速度更快
(2)sigmoid函数当输出接近0或者1的时候,梯度几乎为0,会导致反向传播无法继续更新部分模型参数,而ReLU在正区间的梯度恒为1。选择ReLu,避免了模型参数初始化不当,sigmoid函数可能会得到几乎为0的梯度的问题。
4、重叠最大池化
即池化范围z与步长s存在关系z > s(如最大池化下采样中核大小为3 × 3,步距为2)
这样可以避免平均池化的平均效应。
5、图像增广,数据增强
AlexNet引入了大量图像增广,如翻转,裁剪和颜色变化,从而进一步扩大数据集来缓解过拟合。
三、DeeplabV3+
DeepLab V3中ASPP结构。首先回顾下上篇博文中讲的DeepLab V2中的ASPP结构,DeepLab V2中的ASPP结构其实就是通过四个并行的膨胀卷积层,每个分支上的膨胀卷积层所采用的膨胀系数不同(注意,这里的膨胀卷积层后没有跟BatchNorm并且使用了偏执Bias)。接着通过add相加的方式融合四个分支上的输出。
DeepLab V3+中的ASPP结构。这里的ASPP结构有5个并行分支,分别是一个1x1的卷积层,三个3x3的膨胀卷积层,以及一个全局平均池化层(后面还跟有一个1x1的卷积层,然后通过双线性插值的方法还原回输入的W和H)。关于最后一个全局池化分支作者说是为了增加一个全局上下文信息global context information。然后通过Concat的方式将这5个分支的输出进行拼接(沿着channels方向),最后在通过一个1x1的卷积层进一步融合信息。
四、VGG
通过堆叠多个3x3的卷积层来替代大尺度卷积层(在拥有相同感受野的前提下能够减少所需参数)。
论文中提到,可以通过堆叠两层3x3的卷积层替代一层5x5的卷积层,堆叠三层3x3的卷积层替代一层7x7的卷积层。下面给出一个示例:使用7x7卷积层所需参数,与堆叠三个3x3卷积层所需参数(假设输入输出特征矩阵深度channel都为C)
如果使用一层卷积层大小为7的卷积所需参数(第一个C代表输入特征矩阵的channel,第二个C代表卷积核的个数也就是输出特征矩阵的深度):
7×7×C×C=49C×C