深度学习 学习笔记五

理论:

前馈神经网络的问题

 

卷积的作用和卷积的运算

https://www.cnblogs.com/shine-lee/p/9932226.html

函数角度:

从这个角度看,多层卷积是在进行逐层映射,整体构成一个复杂函数,训练过程是在学习每个局部映射所需的权重,训练过程可以看成是函数拟合的过程。

 

模板匹配角度:

即认为卷积核定义了某种模式,卷积(相关)运算是在计算每个位置与该模式的相似程度,或者说每个位置具有该模式的分量有多少,当前位置与该模式越像,响应越强。

 

一维卷积:一维卷积经常用在信号处理中,用于计算信号的延迟累积。

二维卷积:卷积也经常用在图像处理中。用于图像特征的提取。

卷积计算:

一维卷积:卷积核的移动,乘积,求和,即从原本的信号中加权平均求和得到新的信号序列。

二维卷积:卷积核的移动,乘积,求和,即对图像的每个像素的邻域(邻域大小就是核的大小)加权求和得到该像素点的输出值。最终得到新的图像。

 

 

 

卷积的变种

在卷积的标准定义基础上,还可以引入滤波器的滑动步长和零填充来增加

卷积的多样性,可以更灵活地进行特征抽取。

滤波器的步长(Stride)是指滤波器在滑动时的时间间隔

零填充(Zero Padding)是在输入向量两端进行补零

 

 

转置卷积(反卷积)

PyTorch: torch.nn.ConvTranspose2d()

转置卷积常常用于CNN中对特征图进行上采样,比如语义分割和超分辨率任务中。之所以叫转置卷积是因为,它其实是把我们平时所用普通卷积操作中的卷积核做一个转置,然后把普通卷积的输出作为转置卷积的输入,而转置卷积的输出,就是普通卷积的输入。

将转换矩阵W进行转置,就可以实现低维到高维的反向映射

 

空洞卷积

https://zhuanlan.zhihu.com/p/50369448

也叫做扩张卷积

常见的方法:在3*3卷积核中间填充0,有两种实现方式,第一,卷积核填充0,第二,输入等间隔采样。

作用:

从这里可以看出,空洞卷积可以任意扩大感受野,且不需要引入额外参数,但如果把分辨率增加了,算法整体计算量肯定会增加。

ps: 空洞卷积虽然有这么多优点,但在实际中不好优化,速度会大大折扣。

 

缺点:

空洞卷积gridding问题

其实就是网格效应/棋盘问题。因为空洞卷积得到的某一层的结果中,邻近的像素是从相互独立的子集中卷积得到的,相互之间缺少依赖。

 

 

 

卷积神经网络的重要性质

卷积:前端有卷积层

卷积层有两个重要的性质:

优点:卷积神经网络的稀疏连接具有正则化的效果,提高了网络结构的稳定性和泛化能力,避免过度拟合,同时,稀疏连接减少了权重参数的总量,有利于神经网络的快速学习,和在计算时减少内存开销

优点:权重共享和稀疏连接一样,减少了卷积神经网络的参数总量,并具有正则化的效果

 

表征学习

即能够从输入信息中提取高阶特征。卷积神经网络中的卷积层和汇聚层能够响应输入特征的平移不变性,即能够识别位于空间不同位置的相近特征。

 

生物学相似性

卷积神经网络中基于感受野设定的稀疏连接有明确对应的神经科学过程——视觉神经系统中视觉皮层(visual cortex)对视觉空间(visual space)的组织 [81]  [4]  。视觉皮层细胞从视网膜上的光感受器接收信号,但单个视觉皮层细胞不会接收光感受器的所有信号,而是只接受其所支配的刺激区域,即感受野内的信号。只有感受野内的刺激才能够激活该神经元。多个视觉皮层细胞通过系统地将感受野叠加完整接收视网膜传递的信号并建立视觉空间

 

 

 

 

 

pooling函数作用

在神经网络中,池化函数(Pooling Function)一般在卷积函数的下一层。在经过卷积层提取特征之后,得到的特征图代表了比像素更高级的特征,已经可以交给分类器 进行训练分类了。但是我们每一组卷积核  都生成 一副与原图像素相同大小的卷积图,节点数一点没少。如果使用了 多个卷积核还会使得通道数比之前多的多。

 

所以卷积之后我们需要进行池化,也就是进行降维。

 

池化操作是利用一个矩阵窗口张量上进行扫描,将每个矩阵中的通过取最大值或者平均值等来减少元素的个数(备注:最大值和平均值的方法可以使得特征提取拥有“平移不变性”,也就说图像有了几个像素的位移情况下,依然可以获得稳定的特征组合,平移不变形对于识别十分重要)。

池化的过程:如下图所示(左边红色区域里边的数据分别为2 2 2 4,有点不清晰),kernel size 就是矩阵窗口大小,Stides 就是移动的步长。

Max Pooling就找每个矩阵窗口中的最大值;

Mean Pooling就是对每个矩阵窗口中取平均值;

 

典型的卷积网络构成

一个典型的卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成。

卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特

征提取器。

汇聚层(Pooling Layer)也叫下采样层(Subsampling Layer),其作用是

进行特征选择,降低特征数量,并从而减少参数数量。

 

 

参数学习方式

 

 

卷积网络也可以通过反向传播算法进行参数学习,参数为卷积核中权重以及偏置,只需要计算卷积层中的参数的梯度。

 

卷积核大小、卷积核步长、填充方式、输入通道数、输出通道数

 

卷积神经网络有两种不同功能的神经层:卷积层和汇聚层。

假设对第 l 层为卷积层,他的特征映射净输入是通过第 l- 1 层的输入特征映射进行卷积得来的,卷积过程中的卷积核与偏值就是要学习的参数,可通过链式法则计算他们的梯度,即计算损失函数关于卷积核与偏值的偏导数

 

每一层的参数的梯度又依赖于误差项

误差项的计算是不一样的:

汇聚层:第l 层的一个特征映射的误差项δ(l,p),只需要将l + 1层对应特征映射的误差项δ(l+1,p) 进行上采样操作(和第l 层的大小一样),再和l 层特征映射的激活值偏导数逐元素相乘,就得到了δ(l,p)。

卷积层:将l + 1层对应特征映射的误差项δ(l+1,p)与第;l+1层的转置后的卷积核进行宽卷积操作,再和l 层特征映射的激活值偏导数相乘。

 

典型网络结构:

https://blog.csdn.net/liuxiao214/article/details/79588844

AlexNet

 

AlexNet的结构如图5.12所示,包括5个卷积层、3个全连接层和1个softmax层。

 

 

贡献

从直觉来说,最大池化获得的是每个2x2位置的最具代表性特征,最后输出整个图像各个区域的典型特征,这样做可以在避免重复的同时保留足够的特征用于分类,所以池化可以避免过拟合。

图像分类的样本都是将分类对象置于中心的,虽然池化考虑到了特征的相对空间关系,但是物体有太大的平移或旋转时分类效果难以保证,所以有时候训练时需要做数据扩增。在物体检测和分割等任务中还需要设计特殊的网络结构来探测不同位置的感兴趣对象。

从AlexNet之后,深度学习就变成了一种叫做"解决任务的更大规模的神经网络"的技术。

 

 

VGGNet

VGG是2014年的ImageNet分类的亚军,物体检测冠军,使用了更小的卷积核(3x3),并且连续多层组合使用。

贡献

VGG论文的一个主要结论就是深度的增加有益于精度的提升,这个结论堪称经典。

连续3个3x3的卷积层(步长1)能获得和一个7x7的卷积层等效的感知域(receptive fields),而深度的增加在增加网络的非线性时减少了参数(3*3^2 vs 7^2)。从VGG之后,大家都倾向于使用连续多个更小的卷积层,甚至分解卷积核(Depthwise Convolution)。

但是,VGG简单的堆叠卷积层,而且卷积核太深(最多达512),特征太多,导致其参数猛增,搜索空间太大,正则化困难,因而其精度也并不是最高的,在推理时也相当耗时,和GoogLeNet相比性价比十分之低。

 

ResiNet

残差网络(Residual Network,ResNet)是通过给非线性的卷积层增加直 连边的方式来提高信息的传播效率。

随着网络的加深,出现了训练集准确率下降的现象,我们可以确定这不是由于Overfit过拟合造成的(过拟合的情况训练集应该准确率很高);所以作者针对这个问题提出了一种全新的网络,叫深度残差网络,它允许网络尽可能的加深,其中引入了全新的结构如图1; 

 

 

残差单元由多个级联的(等长)卷积层和一个跨层的直连边组成,再经过ReLU激活后得到输出。

残差网络就是将很多个残差单元串联起来构成的一个非常深的网络。

随着网络深度加深,参数的作用对后面的网络作用越来越小,因为各种误差等原因,最终可能还会导致损失升高。如下图:

 

 

最后,Resnet的一些其他特征:

  • 网络较深,控制了参数数量。
  • 存在明显层级,特征图个数层层递进,保证输出特征的表达能力。
  • 使用较少池化层,大量采用下采样,提高传播效率。
  • 没有使用dropout,利用BM和全局平均池化进行正则化,加快训练速度。
  • 层数较高时减少了3x3卷积核的个数,用1x1卷积核控制3x3卷积的输入输出特征map的数量。
  • 更深
  • 使用了更小的卷积核,连续多个3x3的卷积层
  • 使用ReLU作为非线性激活函数(引入)
  • 数据扩增:训练时随机从256x256截取224x224,并进行水平翻转;预测时,取四个角和中间位置并进行左右翻转(共10张),取平均预测效果。
  • 使用最大池化
  • 使用dropout,随机抑制一部分神经元避免过拟合
  • batch
  • 使用GPU减少训练时间
  • 可学习的参数:卷积层和全连接层的权重、bias、BatchNorm的γβ等
  • 不可学习的参数(超参数):学习率、batch size、weight decay、模型的深度宽度分辨率等。
  • 权值共享:特征图同一通道内的所有像素共享一组卷积核权重系数(作为参数的滤波器对于第l层的所有的神经元都是相同的)。
  • 局部连接:卷积层中的每一个神经元都只和下一层中某个局部窗口内的神经元相连,构成一个局部连接网络。
  • 局部信息丢失:由于空洞卷积的计算方式类似于棋盘格式,某一层得到的卷积结果,来自上一层的独立的集合,没有相互依赖,因此该层的卷积结果之间没有相关性,即局部信息丢失。
  • 远距离获取的信息没有相关性:由于空洞卷积稀疏的采样输入信号,使得远距离卷积得到的信息之间没有相关性,影响分类结果。
  • 扩大感受野:在deep net中为了增加感受野且降低计算量,总要进行降采样(pooling或s2/conv),这样虽然可以增加感受野,但空间分辨率降低了。为了能不丢失分辨率,且仍然扩大感受野,可以使用空洞卷积。这在检测,分割任务中十分有用。一方面感受野大了可以检测分割大目标,另一方面分辨率高了可以精确定位目标。
  • 捕获多尺度上下文信息:空洞卷积有一个参数可以设置dilation rate,具体含义就是在卷积核中填充dilation rate-1个0,因此,当设置不同dilation rate时,感受野就会不一样,也即获取了多尺度信息。多尺度信息在视觉任务中相当重要啊。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值