Skip to content

卷积神经网络总结

📅 发表于 2018/04/11
🔄 更新于 2018/04/11
👁️ 次访问
📝 0 字
0 分钟
深度学习
#卷积
#1*1卷积
#分组卷积
#可分离卷积
#LeNet
#AlexNet
#InceptionNet
#ResNet
#XceptionNet
#ShuffleNet

卷积基本概念和常见的卷积神经网络

卷积神经网络

全连接网络的两个问题:

  • 参数太多:训练效率低、容易过拟合
  • 局部不变形特征:全连接很难提取出图片的不变性特征

三个特性

1. 局部性

图片特征只在局部。图片特征决定图片类别,这些图片特征在一些局部的区域中。

局部连接。

2. 相同性

用同样的检测模式去检测不同图片的相同特征。只是这些特征出现在图片的不同位置。

参数共享。

3. 不变性

对于一张大图片,进行下采样,图片的性质基本保持不变。

下采样保持不变性。

卷积

  1. 一维卷积:卷积核、步长、首位0填充
  2. 三种卷积:窄卷积、宽卷积、等长卷积
  3. 二维卷积

1. 一维卷积

  • 卷积核:参数[1,0,1]就是一个卷积核 滤波器
  • 步长:卷积核滑动的间隔
  • 零填充:在输入向量两端进行补零
**2. 三种卷积**

输入n,卷积大小m,步长s,输入神经元各两端填补p个0

  • 窄卷积:s=1,不补0,输出长度为n-m+1
  • 宽卷积:s=1,两端补0,p=m1, 输出长度为n+m-1
  • 等长卷积:s=1,两端补0,p=m12, 输出长度为n

一般卷积默认为窄卷积。

3. 二维卷积

输入一张图片(假设深度为1),XRM×N, 卷积核WRm×n ,则卷积(互相关代替)结果为:

yij=u=1mv=1nwuvxi+u1,j+v1

一个卷积核提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器。

卷积后的结果称为特征映射(feature map)

卷积层

  1. 一个卷积核

    WpRm×n×D, 对D个通道做卷积,结果相加求和,过激活函数,得到一个特征图YpRM×N

  2. 多个卷积核:得到P个特征图

输入图片(feature map)是XRM×N×D,深度是D

1. 一个卷积核

  • 用1个卷积核WpRm×n×D(实际上是D个Rm×n)去卷积这张图片(所有深度)
  • 对各个深度的卷积结果进行相加求和,再加上偏置
  • 过激活函数,输出最终的FM,是Yp

2. 多个卷积核

多个卷积核可以提取出多种不同的特征。输入图片是XRM×N×D

  • 有P个不同的卷积核WpRm×n×D, 实际上是四维的[m, n, D, P],后两维是in_channelout_channel
  • 输出P个特征图RM×N×P
  • 对每一个卷积核WRm×n×D,对D个深度Rm×n分别做卷积,对D个卷积结果进行求和相加,经过激活函数,得到一个特征图 YpRM×N
  • 一共需要P×D×(m×n)+P个参数

卷积代替全连接

  1. 局部连接:卷积核只与输入的一个局部做连接,计算出FM中的一个值,局部性
  2. 权值共享:同一个卷积核与图片的各个位置进行连接,权值是一样的,提取出同样的特征

1. 局部连接

  • 卷积层的神经元只与输入数据的一个局部区域做连接
  • 因为图片的局部性,图片的特征在局部
  • FM中的每一个值,只与输入的局部相关。而不是与所有的相关

2. 权值共享

  • 一个卷积核会分多次对输入数据的各个部分做卷积操作
  • 对每个部分的连接参数实际上是相同的,因为是同一个卷积核
  • 因为图片的相同性,同样的卷积核可以检测出相同的特征,只是特征在不同的位置

汇聚层

  1. 卷积层的不足:FM的维数很高
  2. 汇聚层的作用:选择特征、降低特征数量、减少参数数量、避免过拟合
  3. 两种汇聚方式:最大和平均。

1. 卷积层的不足

  • 减少网络连接数量
  • 但是FM中的神经元个数依然很多
  • 如果直接接分类器全连接,则维数会很高,容易过拟合

2. 汇聚层的作用

汇聚层(pooling layer),也作子采样层(subsampling layer)。作用是:

  • 进行特征选择
  • 降低特征数量
  • 进而减少参数数量、避免过拟合
  • 拥有更大感受野,大图片缩小,保持不变性

3. 两种汇聚方式

  • 最大汇聚:一个区域内所有神经元的最大值
  • 平均汇聚:一个区域内所有神经元的平均值

过大采样区会急剧减少神经元的数量,造成过多的信息损失!

典型的卷积网络结构

由多个卷积块组成,一个卷积块:

  • 连续2~5个卷积层,ReLU激活函数
  • 0~1个汇聚层

目前,趋向于使用更小的卷积核,比如1×1,3×3。汇聚层的比例也逐渐降低,趋向于全卷积网络。

常见卷积网络

LeNet

Alex Net

使用ReLU作为非线性激活函数、Dropout防止过拟合、数据增强提高模型准确率。

AlexNet分组卷积

  • 对所有通道进行分组,进行分组卷积,执行标准卷积操作
  • 在最后时刻才使用两个全连接融合通道的信息
  • 降低了模型的泛化能力

Inception Net

如何选择卷积核大小非常关键:

  • 一个卷积层同时使用多种尺寸的卷积核
  • 先过1×1卷积减少卷积层参数量

Inception Net由多个Inception模块堆叠而成。一个Inception同时使用1×13×35×5 的卷积,如下:

3×35×5 卷积前,先进行1×1卷积的作用:

  • 减少输入数据的深度
  • 减少各个深度的冗余信息,先进行一次特征抽取

后续还有各种各样的Inception Net,最终演变成Xception Net。

Inception Net的极限就是,对每个channel做一个单独的卷积。

Res Net

越深的网络可以用ResNet来训练。ResNet可以很深的原因

残差连接通过给非线性的卷积层增加直连边的方式

  • 提高信息的传播效率
  • 可以减小梯度消失问题

Xception

卷积需要同时考虑所有通道吗?

输入图片(feature map)是XRM×N×D,深度是D

1. 传统卷积核会同时考虑所有通道

  • 传统1个卷积核会对所有channel的FM做同样的卷积
  • 得到D个卷积结果
  • 对D个卷积结果进行相加求过激活函数得到一个FM

2. 深度可分离卷积核

Depth Separable Convolution

输入数据有D个FM,输出P个FM。深度可分离卷积(DepthWise Convolution) 如下:

  • X的每个channel,分别做一个单独的卷积,得到D个新的FM
  • 对D个新的FM,做1×1的传统卷积(PointWise Convolution),P×D×(1×1)
  • 最终输出P个FM (通道数变换)

卷积操作不一定需要同时考虑通道和区域。可分离卷积

3. 可分离卷积参数大大减小

输入通道D=3,输出通道P=256,卷积核大小为3×3

  • 传统卷积参数:256×3×(3×3)=6912
  • DepthWise卷积参数:3×3×3+256×3×(1×1)=795, 降低九分之一

同时,效果更好。

Shuffle Net

1. AlexNet分组卷积

  • 对所有通道进行分组,进行分组卷积,执行标准卷积操作
  • 在最后时刻才使用全连接融合通道的信息
  • 降低了模型的泛化能力

2. ShuffleNet 分组卷积

ShuffleNet = 分组卷积(通道分组)+ 深度可分离卷积(Depthwise+PointWise)

对通道进行分组卷积时

  • 每一个组执行深度可分离卷积,而不是标准传统卷积
  • 每一次层叠分组卷积时,都进行channel shuffle
  • 实际上每个组各取一个也能实现shuffle

SENet

Inception、ShuffleNet等网络中,对所有通道产生的特征都是不分权重直接相加求和的。

为什么所有通道的特征对模型的作用是相等的呢?

总结

参考自知乎卷积网络中十大拍案叫绝的操作

1. 卷积核

  1. 大卷积核用多个小卷积核代替
  2. 单一尺寸卷积核用多尺寸卷积核代替
  3. 固定形状卷积核趋于用可变形卷积核
  4. 使用1×1卷积核

2. 卷积层通道

  1. 标准卷积使用深度可分离卷积代替
  2. 使用分组卷积
  3. 分组卷积前使用channel shuffle
  4. 通道加权计算

3. 卷积层连接

  1. 使用skip connection,让模型更深
  2. densely connection,使每一层都融合其它层的特征输出
总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2025