DL学习笔记-CNN 架构介绍

CNN的网络结构跟 TNN的网络结构是十分相似的。

TNN缺点:全连接,数据大 的时候参数极多,处理十分浪费。大多的参数也会导致网络过度拟合(why?)。

正因为这个缺点,CNN就出现了。CNN整体采用局部连接,实现参数共享。大量减少参数数目。

1.CNN的每一层神经元排列结构与TNN的区别?

CNN中每一层的的神经元排列成3个维度。

2.CNN中各个层的分布:

(1)输入层,输入的为原始数据大小。例如:32X32  像素,3通道。类似上图。

(2)卷基层,开始滤波,使用N个卷积核,输出的数据体维度是 32X32XN

(3)ReLU层将会逐个元素地进行激活函数操作,比如使用以0为阈值的max(0,x)作为激活函数。该层对数据尺寸没有改变,还是[32x32xN]。

(4)Pool层,在这一层对数据进行降采样。数据尺寸变成 16X16XN

(5)全连接层,变成1X1Xk(k为分的类别,)变成这样的平分向量。

3.在卷积层,数据流动的方式?

卷积层是多个滤波器也就是卷积核的集合,每个滤波器的尺寸大小。()长宽是两个超参数,也是相对于大脑中,神经元的感受野的大小)深度与输入数据的大小是一致的。每个卷积核在整个输入数据体上滑动,滑动的时候的步长也是超参数,为了使输出数据和输入数据大小一致,需要零填(zero-padding)充来补充。(W-F+2P)/2+1为输出数据体的大小。

4.CNN中为何能实现参数共享?

    作一个合理的假设:如果一个特征在计算某个空间位置(x,y)的时候有用,那么它在计算另一个不同位置(x2,y2)的时候也有用。基于这个假设,可以显著地减少参数数量。换言之,就是将深度维度上一个单独的2维切片看做深度切片(depth slice),比如一个数据体尺寸为[55x55x96]的就有96个深度切片,每个尺寸为[55x55]。在每个深度切片上的神经元都使用同样的权重和偏差。在这样的参数共享下,例子中的第一个卷积层就只有96个不同的权重集了,一个权重集对应一个深度切片,96x11x11x3=34,848个不同的权重,或34,944个参数(+96个偏差)。在每个深度切片中的55x55个权重使用的都是同样的参数。在反向传播的时候,都要计算每个神经元对它的权重的梯度,但是需要把同一个深度切片上的所有神经元对权重的梯度累加,这样就得到了对共享权重的梯度。这样,每个切片只更新一个权重集。
 
也正因为这样,每一个深度切片上的权重集合 与输入数据做卷积,这也是为何将这些权重集合叫做  滤波器 或者卷积核。

5.卷积层数据流动的方式,请解释:

6.汇聚层的作用,以及原理:

连续卷积层之间会有一个汇聚层,他的作用是降低数据体的空间尺寸,这样的话会减少网络中的参数数量。一般使用MAX操作,如果步长是2,使用2X2的滤波器,将丢掉百分之75的信息。汇聚层在输入数据体的每个深度切片上,独立地对其进行空间上的降采样。

    • 输入数据体尺寸W_1\cdot H_1\cdot D_1
    • 有两个超参数:
      • 空间大小F
      • 步长S
    • 输出数据体尺寸W_2\cdot H_2\cdot D_2,其中
 W_2=(W_1-F)/S+1
H_2=(H_1-F)/S+1
D_2=D_1
  • 因为对输入进行的是固定函数计算,所以没有引入参数
  • 在汇聚层中很少使用零填充

在实践中,最大汇聚层通常只有两种形式:一种是F=3,S=2,也叫重叠汇聚(overlapping pooling),另一个更常用的是F=2,S=2。对更大感受野进行汇聚需要的汇聚尺寸也更大,而且往往对网络有破坏性。

普通汇聚(General Pooling):除了最大汇聚,汇聚单元还可以使用其他的函数,比如平均汇聚(average pooling)L-2范式汇聚(L2-norm pooling)。平均汇聚历史上比较常用,但是现在已经很少使用了。因为实践证明,最大汇聚的效果比平均汇聚要好。




 

posted @ 2016-09-13 14:50  小萝、卜  阅读(837)  评论(0)    收藏  举报