说说有哪些卷积?
1.标准卷积
标准卷积核与目标图像矩阵进行卷积运算,多少数量的卷积核,就会对应多少特征图。
2.反卷积
是一种特殊的正向卷积,先按照一定的比例通过补0来扩大输入图像的尺寸,接着旋转卷积核(矩阵转置),再进行正向卷积。反卷积的操作只是恢复了矩阵X的尺寸大小,并不能恢复X的每个元素的原始值。
反卷积是一种特殊的正向卷积,先按照一定的比例通过补0来扩大输入图像的尺寸,接着旋转卷积核(转置),再进行正向卷积。
但是,如果你代入数字计算会发现,反卷积的操作只是恢复了矩阵X的尺寸大小,并不能恢复X的每个元素的原始值
3.空洞卷积
空洞卷积或者膨胀卷积是在标准的卷积核里注入空洞,以此来增加感受野。相比原来正常的卷积,空洞卷积多了一个超参数"空洞率",指的是核的间隔数量。(标准卷积的空洞率是1)。优点是保持同等计算量的情况下可以扩大感受野,缺点是存在网格效应
4.深度可分离卷积
深度可分离卷积是将一个完整的卷积运算分解为两步运行,即逐通道卷积和逐点卷积。
逐通道卷积:不同于常规的操作,逐通道卷积的一个卷积核只负责一个通道,即一个通道只能被一个卷积核卷积。
逐点卷积:是常规的卷积运算,他的卷积核的尺寸是1x1xm,m为需要得到的最终feature map数量,这里的卷积运算也会将上一步的map在深度方向做加权组合,生成新的feature map,总共为M维度,操作方法就是concate,然后再用1x1的卷积形成1维的map(也可以用1x1先卷积,然后将不同feature map进行add)。
5.分组卷积
最早在AlexNet中出现,由于当时的硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个gpu处理,因此作者把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合。(就是把特征图分为两半或几部分,卷积后再组合,组合方式一般是concate)
反池化
**反池化(Unpooling)**:在池化过程中,记录下max-pooling的max元素值在对应kernel中的**坐标**,在反池化过程中,根据之前的坐标将max元素填写回去,其他位置补0 。一句话总结就是,**在下采样的时候记录max的位置,上采样的时候最大值的位置还原,其它位置填0**,如下图所示
为什么逐通道卷积之后还要进行逐点卷积?
Depthwise Convolution完成后的Feature map数量与输入层的depth相同,但是这种运算对输入层的每个channel独立进行卷积运算后就结束了,没有有效的利用不同map在相同空间位置上的信息。因此需要增加另外一步操作来将这些map进行组合生成新的Feature map,即接下来的Pointwise Convolution。
1*1卷积有什么作用
1.实现跨通道的交互和信息的整合
2.进行卷积核通道数的降维和升维
3.对于单通道feature map用单核卷积即为乘以一个参数,而一般情况都是多核卷积多通道,实现多个feature map的线性组合。
4.可以实现和全连接层等价的效果。
cnn有什么特点和优势
CNN的使用范围是具有局部空间相关性的数据,比如图像、自然语言、语音。
局部连接(稀疏连接):可以提取局部特征
权值共享:减少参数数量,降低训练难度,避免过拟合,提升模型“平移不变性”
降维:通过池化或卷积stride实现
多层次结构:将低层次的局部特征组合成较高层次的特征,不同层级的特征可以对应不同任务
常用的池化方法有哪些?
最常用的有三种:
1.平均池化;
2.最大池化
3.随机池化
pooling层的作用
1.不变性:包括 平移、旋转、尺度不变性。
2.保留主要特征的同时减少参数的计算量,防止过拟合,提高模型的泛化能力。
3.减少计算量。
注:池化层在反向传播时,是不可导的。因为它是对特征图进行下采样会导致特征图变下,比如一个2*2的池化,在l+1层是输出的特征图是16个神经元,那么对应l层就会有64个神经元,两层之间经过池化操作后,特征图尺寸改变,无法一一对应,这使得梯度无法按位传播。那么如何解决池化层不可导却要参与反向传播呢?
在反向传播时,梯度是按位传播的,那么一个解决办法,就是如何构造按位的问题,但一定要遵守传播梯度总和不变
特征提取的误差有哪些因素
邻域大小受限造成估计值方差增大;
卷积层参数误差造成估计均值偏移;
一般来说,平均池化能减小第一种误差,更多的保留图像的背景信息,最大池化,能减小第二种误差,更多保留文理信息。