您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iProcess 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
  
每天15篇文章
不仅获得谋生技能
更可以追随信仰
 
     
   
 订阅
  捐助
卷积神经网络知识学习笔记
 
151 次浏览     评价:  
 2019-9-29
 
编辑推荐:

本文来自简书,本文主要讲解了卷积神经网络知识,包括卷积层和池化层的介绍,希望对您的学习有所帮助。

卷积神经网络(CNN)是含有卷积层(convolutional layer)的神经网络,二维卷积层有高和宽两个空间维度,常用来处理图像数据。

卷积层

虽然卷积层得名于卷积(convolution)运算,但我们通常在卷积层中使用更加直观的互相关(cross-correlation)运算。关于卷积运算和互相关运算的关系可以查看这里。

二维互相关

二维卷积层输出的二维数组可以看作是输入在空间维度(宽和高)上某一级的表征,也叫特征图(feature map)。影响元素 的前向计算的所有可能输入区域(可能大于输入的实际尺寸)叫做 的感受野(receptive field)。

填充(padding)是指在输和宽的两侧填充元素(通常是0元素),每次滑动的数和列数称为步幅(stride)。

彩图像在和宽2个维度外还有RGB(红、绿、蓝)3个颜通道,假设彩图像的和宽分别是h和w(像素),那么它可以表为个3 × h × w的多维数组,我们将小为3的这维称为通道(channel)维。

池化层

池化(pooling)层的提出是为了缓解卷积层对位置的过度敏感性。不同于卷积层计算输和核的互相关性,池化层直接计算池化窗口内元素的最值或者平均值,该运算也分别叫做最池化或平均池化。

最大池化

池化层填充和步幅与卷积层填充和步幅的作机制样,池化层在处理多通道输数据时是对每个输通道分别池化,而不是像卷积层那样将各通道的输按通道相加。

代表性卷积神经网络

卷积神经网络(LeNet)

LeNet分为卷积层块和全连接层块两个部分。

卷积层块里的基本单位是卷积层后接最大池化层:卷积层用来识别图像里的空间模式,例如线条和物体局部,之后的最大池化层则用来降低卷积层对位置的敏感性。卷积层块由两个这样的基本单位重复堆叠构成。

卷积层块的输出形状为(批量大小,通道,高,宽)。当卷积层块的输出传入全连接层块时,全连接层块会将小批量中每个样本变平(flatten)。也就是说,全连接层的输入形状将变成二维,其中第一维为小批量中的样本,第二维为每个样本变平后的向量表示,且向量长度为通道、高和宽的乘积。

LeNet交替使卷积层和最池化层后接全连接层来进图像分类。LeNet的详细结构可以查看这里。

深度卷积神经网络(AlexNet)

计算机视觉流程中真正重要的是数据和特征,使用较干净的数据集和较有效的特征甚至比机器学习模型的选择对图像分类的结果影响更大。

2012 年,AlexNet 横空出世。AlextNet 与 LeNet 的设计理念非常相似,但也有显著的区别。

第一,与相对较小的 LeNet 相比,AlexNet 包含 8 层变换,其中有五层卷积和两层全连接隐含层,以及一个全连接输出层。

第二,AlextNet 将 sigmoid 激活函数改成了更加简单的 ReLU 激活函数。

第三,AlextNet 通过丢弃法来控制全连接层的模型复杂度。

第四,AlextNet 引入了大量的图像增广,例如翻转、裁剪和颜色变化,从而进一步扩大数据集来缓解过拟合。

AlexNet 跟 LeNet 结构类似,但使用了更多的卷积层和更大的参数空间来拟合大规模数据集 ImageNet。它是浅层神经网络和深度神经网络的分界线。AlextNet 的详细结构可以查看这里。

使重复元素的网络(VGG)

VGG 提出了可以通过重复使用简单的基础块来构建深度模型的思路。VGG 块的组成规律是:连续使用数个相同的填充为 1、窗口形状为 3×3 的卷积层后接上一个步幅为 2、窗口形状为 2×2 的最大池化层。卷积层保持输入的高和宽不变,而池化层则对其减半。VGG的原始论文可以查看这里。

网络中的网络(NiN)

NiN是指串联多个由卷积层和“全连接”层构成的小络来构建个深层络的思路。NiN 使用 1×1 卷积层来替代全连接层,下图对比了 NiN 同 AlexNet 和 VGG 等网络在结构上的主要区别。

NiN为右边的结构

NiN 块是 NiN 中的基础块。它由一个卷积层加两个充当全连接层的 1×1 卷积层串联而成。NiN 去除了容易造成过拟合的全连接输出层,而是将其替换成输出通道数等于标签类别数的 NiN 块和全局平均池化层。NiN的原始论文可以查看这里。

含并连结的网络(GoogLeNet)

GoogLeNet 吸收了 NiN 中网络串联网络的思想,并在此基础上做了很大改进,在随后的几年里,研究人员也对 GoogLeNet 进行了数次改进。

GoogLeNet 中的基础卷积块叫做 Inception 块,这个基础块在结构上更加复杂。

GoogLeNet中的Inception块

Inception块相当于一个有四条线路的子网络。它通过不同窗口形状的卷积层和最大池化层来并行抽取信息,并使用 1×1 卷积层减少通道数从而减小模型复杂度。GoogLeNet目前经历了四个版本,我之前写过一篇关于Inception-v3的学习笔记,关于Inception改进的历史可以查看这里。

Inception-v1的结构图

批量归一化

在模型训练时,批量归一化利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使得整个神经网络在各层的中间输出的数值更稳定。对全连接层和卷积层做批量归一化的方法稍有不同。

残差网络(ResNet)

在实践中,添加过多的层后训练误差往往不降反升,即使利用批量归一化带来的数值稳定性使得训练深层模型更加容易,这个问题仍然存在,针对这一问题提出了残差网络(ResNet)。

在残差块中,输入可通过跨层的数据线路更快地向前传播。ResNet 沿用了 VGG 全 3×3 卷积层的设计,而残差块通过跨层的数据通道从而能够训练出有效的深度神经网络。ResNet的原始论文可以查看这里。

稠密连接网络(DenseNet)

ResNet 中的跨层连接设计引申出了数个后续工作,其中稠密连接网络(DenseNet)与 ResNet 的主要区别如下图所示。

DenseNet 的主要构建模块是稠密块(dense block)和过渡层(transition layer)。前者定义了输入和输出是如何连结的,后者则用来控制通道数,使之不过大。DenseNet 的原始论文可以查看这里,DenseNet 的算法详解可以查看这里。

 

   
151 次浏览  评价: 差  订阅 捐助
相关文章

我们该如何设计数据库
数据库设计经验谈
数据库设计过程
数据库编程总结
 
相关文档

数据库性能调优技巧
数据库性能调整
数据库性能优化讲座
数据库系统性能调优系列
相关课程

高性能数据库设计与优化
高级数据库架构师
数据仓库和数据挖掘技术
Hadoop原理、部署与性能调优
每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
 

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号