CNN

CNN中新出现了卷积层(Convolution)和池化层(Pooling)

  • 卷积层用于提取输入数据的局部特征
  • 池化层用于降维,增加鲁棒性并防止过拟合
  • 全连接层用于整合特征并输出结果

卷积层

​ 在全连接层中,相邻层的神经元全部连接在一起,输出的数量可以任意决定,但是却忽视了数据的形状。比如,输入数据为图像时,图像通常是长、宽、通道方向上的3维数据,但是向全连接输入时却需要将其拉平为1维数据,这种情况下3维形状的数据中的空间信息可能被全连接层忽视掉。

​ 而卷积层可以保持数据形状不变,即接受3维形状的输入数据后同样以3维形状将数据输出至下一层。在CNN中,卷积层的输入输出数据也称为特征图(feature map)

卷积运算:对于输入数据,卷积运算以一定间隔滑动卷积核的窗口并应用。将各个位置上卷积核的元素和输入的对应元素相乘,然后求和(也就是乘积累加求和、矩阵内积)

填充:在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0)。主要目的是为了调整输出数据的形状大小,避免多次卷积后数据形状大小过小导致无法继续进行卷积运算。运用填充可以令数据形状在经过卷积运算后保持不变。

步幅:应用卷积核的位置称之为步幅

假设输入数据形状为(H,W),卷积核大小为(FH,FW),填充为P,步幅为S,输出数据形状为(OH,OW)
$$
OH=\frac{H+2P-FH}{S}+1
$$

$$
OW=\frac{H+2P-FW}{S}+1
$$

池化层

池化层缩小长、宽方向上的控件来进行降维,能够缩减模型的大小并提高计算速度。

例如,对数据进行步幅为2的2x2的Max池化,就是取池子中的最大值

除了Max池化,还有Average池化

和卷积层不同,池化层没有要学习的参数,并且池化运算按通道独立进行,经过池化运算后数据的通道数不会发生变化。

深层卷积神经网络

  • AlexNet
  • VGG
  • GoogleNet
  • ResNet:为了解决深度网络的梯度消失问题,引入恒等映射称为“残差连接”(或者“跳跃连接”)