1.传统前馈神经网络和卷积神经网络
在上图中我们看到左图是没有深度的,而右图增加了深度。
左图:全连接神经网络(平面),组成:输入层、激活函数、全连接层
右图:卷积神经网络(立体),组成:输入层、卷积层、激活函数、池化层、全连接层
2.卷积层计算
fliter在原始输入上滑动,我们得到新的特征,滑动过程中有步长的概念。就上图而言输入时32x32x3,输出是5x5x3,我们每个fliter(单层)与每一个输入(单层)进行卷积操作,然后,得到28x28的输出层三个,我们需要对这三个进行求和,然后加上偏置项,最后得到28x28x1的卷积输出层。
步长:即fliter滑动的步长,步长越长,提取的特征越多,但是需要的计算时间也就越多。
输出层和输入层之间的关系:
stride是步长,pad是卷积的补偿,即是为了防止边缘的特征提取少于中间的特征提取,所以加入了补偿。如下图所示
上图中,我们看到多个fliter在输入上滑动,我们会得到多个输出,一般我们会使用多个fliter。
在卷积神经网络中,有一个非常重要的特性:权值共享。
所谓的权值共享就是说,给一张输入图片,用一个filter去扫这张图,filter里面的数就叫权重,这张图每个位置是被同样的filter扫的,所以权重是一样的,也就是共享。
3.池化层
上图显示,池化就是对特征图进行特征压缩,池化也叫做下采样。选择原来某个区域的max或mean代替那个区域,整体就浓缩了。下面演示一下pooling操作,需要制定一个filter的尺寸、stride、pooling方式(max或mean):
4.卷积神经网络组成
5.反向传播
6.卷积神经网络架构
VGGNet深度更多,有很多卷积层和池化层。一个版本有16层,另一个版本有19层(较常用)。
VGGNet的特点:
filter只有3*3的,意味着计算的特征较多,粒度更细。同时pooling的参数也有固定。
注意:传统的卷积神经网络层数越多并以意味着效果更好。而在2016年推出了深度残差网络达到了152层。后续讲介绍。
那么训练一个VGGNet有多少内存开销呢?
从图可得知,训练过程中一张224*224*3的图像会有138M个参数会占93MB的内存。因此每个batch中图像的数目应该受内存的约束,即 93*图像数目<内存总容量。