深度学习 | 卷积神经网络

1. 整体结构

  1. 卷积神经网络(CNN):多了卷积层(Convolution层)和池化层(Pooling层)。
  2. 全连接(fully-connected):相邻层的所有神经元之间都有连接。另外,我们用Affine层实现了全连接层。
  3. 基于全连接层(Affine层)的网络:
    全连接层的网络
    全连接的神经网络中,Affine层后面跟着激活函数ReLU层(或者Sigmoid层)。这里堆叠了4层“Affine-ReLU”组合,然后第5层是Affine层,最后由Softmax层输出最终结果(概率)。
  4. 基于CNN的网络:基于CNN的网络
    CNN 的层的连接顺序是“Convolution - ReLU -(Pooling)”(Pooling层有时会被省略)。这可以理解为之前的“Affine - ReLU”连接被替换成了“Convolution - ReLU -(Pooling)”连接。
    靠近输出的层中使用了之前的“Affi ne - ReLU”组合。此外,最后的输出层中使用了之前的“Affine - Softmax”组合。

2. 卷积层

2.1 全连接层存在的问题

  1. 全连接层的问题:数据的形状被“忽视”了。比如,输入数据是图像时,图像通常是高、长、通道方向上的3维形状。但是,向全连接层输入时,需要将3维数据拉平为1维数据。
  2. 卷积层:可以保持形状不变。。当输入数据是图像时,卷积层会以3维数据的形式接收输入数据,并同样以3维数据的形式输出至下一层。因此,在CNN中,可以(有可能)正确理解图像等具有形状的数据。
  3. 特征图:CNN中,卷积层的输入输出数据。卷积层的输入数据称为输入特征图(input feature map),输出数据称为输出特征图(output feature map)。

2.2 卷积运算

卷积运算
输入大小是(4, 4),滤波器大小是(3, 3),输出大小是(2, 2)。有的文献中也会用“核”这个词来表示这里所说的“滤波器”。
计算:各个位置上滤波器的元素和输入的对应元素相乘,然后再求和(有时将这个计算称为乘积累加运算)。
偏置:向应用了滤波器的元素加上某个固定值。

2.3 填充

  1. 在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0等),这称为填充(padding)。
  2. 使用填充主要是为了调整输出的大小。比如,对大小为(4, 4)的输入数据应用(3, 3)的滤波器时,输出大小变为(2, 2),相当于输出大小比输入大小缩小了 2个元素。这在反复进行多次卷积运算的深度网络中会成为问题。为什么呢?因为如果每次进行卷积运算都会缩小空间,那么在某个时刻输出大小就有可能变为 1,导致无法再应用卷积运算。
    为了避免出现这样的情况,就要使用填充。
    在刚才的例子中,将填充的幅度设为 1,那么相对于输入大小(4, 4),输出大小也保持为原来的(4, 4)。因此,卷积运算就可以在保持空间大小不变的情况下将数据传给下一层。

2.4 步幅

  1. 应用滤波器的位置间隔称为步幅(stride)。
    步幅为2
  2. 增大步幅后,输出大小会变小。而增大填充后,输出大小会变大。
  3. 已知填充和步幅,计算输出大小:
    假设输入大小为(H, W),滤波器大小为(FH, FW),输出大小为
    (OH, OW),填充为P,步幅为S。此时,输出大小可通过下式进行计算:
    输出大小

2.5 3维数据的卷积运算

  1. 图像是3维数据,除了高、长方向之外,还需要处理通道方向。
  2. 在3维数据的卷积运算中,输入数据和滤波器的通道数要设为相同的值。

3. 池化层

  1. 池化是缩小高、长方向上的空间的运算。
  2. Max池化:从目标区域获取最大值。
    在这里插入图片描述
    Average池化:是计算目标区域的平均值。
  3. 池化层的特征:
    1)没有要学习的参数
    池化层和卷积层不同,没有要学习的参数。池化只是从目标区域中取最大值(或者平均值),所以不存在要学习的参数。
    2)通道数不发生变化
    经过池化运算,输入数据和输出数据的通道数不会发生变化。
    3)对微小的位置变化具有鲁棒性(健壮)
    输入数据发生微小偏差时,池化仍会返回相同的结果。因此,池化对输入数据的微小偏差具有鲁棒性。

4. 具有代表性的CNN

  1. 在1998年首次被提出的CNN元祖LeNet
    LeNet
    和“现在的CNN”相比,LeNet有几个不同点:
    ①LeNet中使用sigmoid函数,而现在的CNN中主要使用ReLU函数。
    ②原始的LeNet中使用子采样(subsampling)缩小中间数据的大小,而现在的CNN中Max池化是主流。

  2. 2012年被提出的AlexNet。
    AlexNet
    与LeNet的不同:
    1)激活函数使用ReLU。
    2)使用进行局部正规化的LRN(Local Response Normalization)层。
    3)使用Dropout。(权值衰减,为了抑制过拟合。Dropout是一种在学习的过程中随机删除神经元的方法。)

小结

• CNN在此前的全连接层的网络中新增了卷积层和池化层。
• 使用im2col函数可以简单、高效地实现卷积层和池化层。
• 通过CNN的可视化,可知随着层次变深,提取的信息愈加高级。
• LeNet和AlexNet是CNN的代表性网络。
• 在深度学习的发展中,大数据和GPU做出了很大的贡献。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值