卷积层
负责特征提取
原理
- RGB三个通道,或者叫做深度。
- 3D滤波器/卷积核的深度与输入特征一致,计算过程是两个三维矩阵的点积加上一个偏置,每一个卷积核对应一个输出层。所以输出有很多层(深度),每一层捕捉一种局部特征
- 卷积核需要自学习




-
感受野:在卷积神经网络CNN中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野receptive field
image.png
非线性激活函数
ReLU:分段线性,无饱和问题(是为了解决Sigmoid函数带来的梯度消失问题)
激活函数在神经网络中的功能即通过对加权的输入进行非线性组合产生非线性决策边界

池化层
特征融合,尺寸降维

全连接层
负责推断
相当于K个全局卷积,K是分类的数量。
有全连接层的结构输入图像的尺寸必须是固定的,因为最后一个卷积层的输出到第一个全连接层的卷积核的大小是固定的。
理解全连接层好文
例如经过卷积,relu后得到3x3x5的输出。
那它是怎么样把3x3x5的输出,转换成1x4096的形式?

从上图我们可以看出,我们用一个3x3x5的filter 去卷积激活函数的输出,得到的结果就是一个fully connected layer 的一个神经元的输出,这个输出就是一个值。因为我们有4096个神经元。我们实际就是用一个3x3x5x4096的卷积层去卷积激活函数的输出。

从上图我们可以看出,猫在不同的位置,输出的feature值相同,但是位置不同。
对于电脑来说,特征值相同,但是特征值位置不同,那分类结果也可能不一样。
这时全连接层filter的作用就相当于喵在哪我不管,我只要喵,于是我让filter去把这个喵找到,实际就是把feature map 整合成一个值,这个值大,有喵,这个值小,那就可能没喵和这个喵在哪关系不大了,鲁棒性有大大增强。
因为空间结构特性被忽略了,所以全连接层不适合用于在方位上找Pattern的任务,比如segmentation。
归一化层
Softmax 折算成概率
取log后,用于构建loss
工程技巧
图像像素中心化
每个通道上每个像素的灰度值减去各自通道的均值
数据增强
每张图片变成10张
dropout
随机失活,用于防止过拟合。训练中随机让一些神经元的输出为0,失活率一般设置为0.5。用于全连接层。
Weight Decay
权重衰减 L2正则 抑制每个权重的作用
AlexNet
CNN网络架构演进:从LeNet到DenseNet
AlexNet论文翻译对照
5 卷积层+3全连接层 + ReLU + MaxPool + Dropout
LRN - Local Response Normalization
跨通道方向上的归一化
n为领域值,N为通道数

Network-in-network (NiN) (bottleneck layer)
1x1的卷积层
特征降维
loss function 用的交叉熵 ,因为softmax的输出是概率分布
VGG
大卷积分解成多个小卷积,为了减少参数,降低计算,增加网络深度
7x7 -> 3个3x3
网络改造的首选
19层的效果最好
GoogLeNet
增加宽度、深度,减少参数,降低计算
Google Inception Net论文细读
Inception v1
-
Split-Merge
1x1 3x3 5x5 3x3池化
最后对四个成分运算结果进行通道上组合。
但是如果简单的将这些应用到feature map上的话,concat起来的feature map厚度将会很大,所以在googlenet中为了避免这一现象提出的inception具有如下结构,在3x3前,5x5前,max pooling后分别加上了1x1的卷积核起到了降低feature map厚度的作用。
增加对多尺度的适应,增加网络宽度 -
取消全连接
由全局平均池化代替
输入7x7x1024
输出 1x1x1024 (其实就是每个通道取平均值,将N个feature map降维成1N大小的feature map,再用class个11卷积核将1N的feature map卷成1class的向量) -
辅助分类器
解决前几层的梯度消失问题,帮助收敛
测试阶段不使用
Inception v1
其他:关于+1(S) +1(V)
V stands for a 'valid' convolution (output size = input size - filter size + 1), and S stands for a 'same' convolution (output size = input size). -> border_mode
Inception v2
-
Batch Normalization (BN批归一化)
在每一层输出的时候,针对每一个通道上的特征图,把这一批次所有的特征图求平均值和方差,然后把所有像素上的值减去均值,除以方差。这一步是算出来的。
配对使用一个Scale和shift。这一步的参数是学出来的。
一般是用在Activation之前。
解决Internal Covariate Shift问题
Internal Covariate Shift
白化:使每一层的输出都规范化到N(0,1)
BN博文
视频学习


-
5x5 变成两个3x3
Inception v3
-
非对称卷积 NxN分解成1xN 和 Nx1
V3核心组件
-
降尺寸前增加特征通道
320先变成640,再降维
- 取消浅层的辅助分类器
实验证明 完全无用
工程成本很大,因为每一层用的结构不一样
Inception v4
-
引入残差
v4
ResNet
直连 skip/shortcut connection
F(x)是残差映射,H(x)的梯度保证>1
推荐博文


- 步长为2的卷积代替池化
ResNeXt
-
提出第三个DNN维度cardinality
ResNeXt
DenseNet
PolyNet
SENet
AmoebaNet
GPIPE
CNN设计原则
感受野要大

网友评论