【总结】关于CNN
脑图:
一、动机篇
- 全连接网络:任意一对输入与输出神经元间都存在连接,现成稠密结构
- 局部特征存在相关性
二、CNN 卷积层篇
2.1 卷积层的本质是什么?
- 稀疏交互
- 动机:全连接网络,任意一对输入与输出神经元间都存在连接,现成稠密结构
- 思路:卷积核尺度远小于输入维度,每个输出神经元仅与前一层特定局部区域内的神经元存在连接
- 优点:全连接层的 参数 为 mn;卷积层为 kn (m为输入,n为输出,k 为 卷积维度)
- 参数共享
- 思路:在同一模型的不同模块中使用相同参数,为卷积运算的固有属性
- 区别
- NN:计算每层输出时,权值参数矩阵中每个元素只作用于每个输入元素一次
- CNN:卷积核中每个元素将作用于每个局部输入的特定位置上
- 物理意义:使卷积层具有平移不变性 (满足 f(g(x)) = g(f(x)) 时,称 f(x) 关于g 具有等变性)
2.2 CNN 卷积层与全连接层的联系?
- 卷积核中的权值每次滑动计算时只是局部连接,且在卷积列中的神经元共享参数——计算局部信息,而全连接层神经元的权值与所有输入相连——计算全局信息。
- 两者都是采用的矩阵点积运算,具有相似的计算形式,能够实现互相转化。
- 卷积——>全连接: 权重矩阵参数增大,权重补0,由于参数共享性质,在其中大部分块中,存在大量相等参数。
- 全连接——>全卷积: 将卷积核的尺寸设置为和输入数据体的尺寸一致(NxWxHxC)。除第一层全连接外,其他通道数都为1,N表示本层神经元的个数,为一个提前设定的超参数,结果与初始的那个全连接层一致。
- 一个深度卷积神经网络模型通常由若干卷积层叠加若干全连接层组成,中间也包含各种非线性操作以及池化操作。卷积层的作用是从输入数据中采集关键数据内容。全连接层在深度卷积神经网络中的作用是将前面经过多次卷积后高度抽象的特征进行整合。最后一层作归一化,然后输出概率。卷积层提供了一个有意义、低维度且几乎不变的特征空间,然后全连接层在这个空间里学习一个非线性的方程。通俗的说,卷积层是特征提取器,全连接层执行分类操作。
- 全连接层可以视作一种特殊的卷积。考虑下面两种情况:
- (1) 特征图和全连接层相连,AlexNet经过五次池化后得到7*7*512的特征图,下一层全连接连向4096个神经元,这个过程可以看作有4096个7*7*512的卷积核和7*7*512的特征图进行卷积操作,最终得到1*1*4096的特征图,等价于全连接得到4096个神经元。
- (2) 全连接层和全连接层相连,AlexNet的再下一层依然是4096个神经元,即4096个神经元和4096个神经元全连接,由(1)得到了1*1*4096的特征图,本次全连接过程可以看作存在4096个1*1*4096的卷积核,依次和1*1*4096的特征图进行卷积操作,等价于全连接。
2.3 channel的含义是什么?
在卷积神经网络中,channel的含义是每个卷积层中卷积核的数量。卷积层的卷积个数就等于卷积层输出的out_channels。这个值也与下一层卷积的in_channels相同。下面举例说明。
如下图,假设现有一个为 6×6×3 的图片样本,使用 3×3×3 的卷积核(filter)进行卷积操作。此时输入图片的 channels
为 3 ,而卷积核中的 in_channels
与 需要进行卷积操作的数据的 channels
一致(这里就是图片样本,为3)。
接下来,进行卷积操作,卷积核中的27个数字与分别与样本对应相乘后,再进行求和,得到第一个结果。依次进行,最终得到 4×4的结果。
上面步骤完成后,由于只有一个卷积核,所以最终得到的结果为 4×4×1, out_channels
为 1 。
在实际应用中,都会使用多个卷积核。这里如果再加一个卷积核,就会得到 4×4×2 的结果。
总结一下, channels
分为三种:
- 最初输入的图片样本的
channels
,取决于图片类型,比如RGB; - 卷积操作完成后输出的
out_channels
,取决于卷积核的数量。此时的out_channels
也会作为下一次卷积时的卷积核的in_channels
; - 卷积核中的
in_channels
,就是上一次卷积的out_channels
,如果是第一次做卷积,就是样本图片的channels
。
三、CNN 池化层篇
3.1 池化层针对区域是什么?
池化层针对区域是非重叠区域。
3.2 池化层的种类有哪些?
- 均值池化
- 思路:对领域内特征值取平均
- 优点:抑制由领域大小受限造成的估计值方差增大现象
- 特点:对背景的保留效果好
- 最大值池化
- 思路:取领域内最大值
- 优点:抑制网络参数误差造成估计均值偏移问题
- 特点:更好提取纹理信息
3.3 池化层的作用是什么?
除降低参数量外,能够保持对平移、伸缩、旋转操作的不变性
3.4 池化层 反向传播 是什么样的?
- 动机:由于 Pooling 操作容易改变 feature map 的 尺寸大小,使得 Pooling 层不可导;
- 举例说明:假定 22 的 池化,会生成 2222 = 16 个梯度,即梯度无法传递到对应的位置;
- 方法:将一个像素的loss (梯度) 传递给4个像素,且需要保证传递的 loss (梯度)总和不变。
3.5 mean pooling 池化层 反向传播 是什么样的?
- mean pooling 前向传播介绍:将 patch 中的值求平均来做 pooling;
- mean pooling 反向传播介绍:将值的梯度均等分为 n*n 份 分配给上一层,以保证 池化 前后 梯度之和保存不变;
3.6 max pooling 池化层 反向传播 是什么样的?
- max pooling 前向传播介绍:将 patch 中的值取 max 来做 pooling 结果 传递给下一层;
- max pooling 反向传播介绍:把梯度直接传给前一层 值最大的一个像素,而其他像素不接受梯度,也就是为0;
四、CNN 整体篇
4.1 CNN 的流程是什么?
- s1 输入变长的字符串或单词串
- s2 利用滑动窗口加池化的方式将原先的输入转化为固长的向量表示
4.2 CNN 的特点是什么?
CNN 能够捕获文本中的局部特征
4.3 卷积神经网络为什么会具有平移不变性?
平移不变性:即目标在空间内发生平移,但是结果(标签)不变
平移不变性=卷积+最大池化。卷积层具有平移等变性,池化层具有平移不变性。卷积神经网络的平移不变性,是池化层赋予的。
如果一个函数满足“输入改变,输出也以同样的方式进行改变”这一性质,我们就说该函数是等变的(equivariant)。形式化地,如果函数 f ( x ) f(x) f(x)与 g ( x ) g(x)