【CS231n笔记】07 Convolutional Neural Networks

1.卷积层(Convolution Layer)
2.池化层(Pooling Layer)
3.CNN经典架构

1.卷积层(Convolution Layer)
a.卷积层介绍
以CIFAR10中的图像为例,它的大小为32*32*3,CNN处理的就是如同图像结构的数据,CNN中的各层以这种结构的数据为输入,经过处理后输出的数据也是同样的组织形式,所以CNN操作的数据是如同图像一样的立体结构,而不是传统神经网络处理的向量形式。
这里写图片描述
这种立体结构有三个维度(长度、宽度、深度),在整个CNN中数据都要保持这些三维特征。
注:这里的深度并非“深度神经网络”中“深度”的含义,它只是数据的第三个维度。

卷积层工作流程:使用若干滤波器(filter)对图像进行卷积。具体的,每个滤波器以固定步长对图像进行遍历,计算每个数据块(维度同滤波器一致)与滤波器的点乘得到一个数值,同一滤波器的结果组成一个激活图,将多个不同滤波器生成的激活图在深度维度上堆叠,即得到该卷积层的输出。
这里写图片描述
滤波器的维度一般很小,常用的有3*3、5*5等,注意滤波器的深度维度要同输入数据的一致。
卷积神经网络就是使用一系列卷积层对数据进行处理,另外中间穿插使用激活函数(如ReLU),具体结构如下图:
这里写图片描述
经过多个卷积层处理的数据会构建成具有层次结构的特征表示,如下图所示,将各层的特征图进行可视化:
这里写图片描述
可以看到,第一层中基本都是边缘或者色块,那么该层的滤波器就会在原始图像中寻找这些特征,随着网络的深入,将底层特征组合成为更高层更抽象的特征。
这与Hubel和Weisel的层次特征理论相一致,底层特征经过组合得到更加复杂的特征表示。
这里写图片描述

另举例如下图,每个滤波器对应一个激活图。可以看到第一个滤波器注重于检测相应反向的纹理,而第二个滤波器注重于检测橙色特征。
这里写图片描述

卷积神经网络的大体布局如下:
这里写图片描述
主要有卷积层(CONV)、非线性变换层(如ReLU)、池化层(POOL),这三种类型的层经过若干次堆叠,会得到越来越抽象的表示,最后接若干全连接层(FC),用来判定输入图像在不同类别上的得分。

在进行卷积操作之前,会在输入数据边界进行零值填补,这样经过卷积操作的输出数据与输入数据的长宽会保持一致。
这里写图片描述
一般的,如果卷积层滤波器滑动步长为1,大小为F*F,那么零值填充的需要(F-1)/2,这样就可以保证输入输出数据的长宽一致。

输出数据的维度一般根据下列公式进行计算,影响输出数据维度的因素有滤波器数量K、滤波器大小F*F、滑动步长S、零值填充P。滤波器数量一般是2的幂,常用的有32、64、128、512等,大小一般取1*1、3*3、5*5,步长一般为1或2,零值填充根据前面的设置来决定。
这里写图片描述
每个激活图由一个滤波器生成,即卷积层采用了参数共享策略,所以每个卷积层中的参数数量为(F*F*D1)*K,另外还有K个偏置。

采用1*1大小的滤波器的卷积层也是有意义的,虽然滤波器在长宽维度上为1,但在深度维度并非如此,所以1*1卷积层中的滤波器进行1*1*D的点乘运算。
这里写图片描述
1*1卷积层一般可以用于降维。

b.卷积层在不同软件中的配置
(1) Torch
这里写图片描述
(2) Caffe
这里写图片描述
(3) Lasagne
这里写图片描述

c.从大脑/神经元的角度看卷积层
这里写图片描述
滤波器在某位置的点乘操作可以看作一个固定在此位置的神经元,它只与输入数据中的一小部分相连接(局部连接),对该区域的输入进行操作。
这里写图片描述
但是同一个激活图中的滤波器参数是相同的,也就是说生成同一个激活图的神经元共享参数,但是它们的局部连接区域不同,F*F大小的滤波器也意味着每个神经元具有F*F大小的感受区域(receptive field)。
这里写图片描述
但是在深度维度上,局部连接区域相同的神经元具有不同的参数,所以神经元只与生成同一激活图的神经元共享参数。
由此可以看出,卷积层中的神经元具有共享参数和局部连接的特点。共享参数使得每个激活图由相同特征组成,并且可以减少参数数量,避免过拟合。局部连接即使用小的滤波器而非全局连接,这样也可以减少参数数量。

2.池化层(Pooling Layer)
由于采用零值填充,卷积层一般不会减小长宽维度的尺寸,而是池化层通过下采样(downsampling)进行尺寸减小,下采样处理在每个激活图中独立进行。
这里写图片描述
最常用的是最大值池化(max pooling),即选取滤波器中的最大值作为输出。
这里写图片描述
另外常用的还有平均值池化,取滤波器中数据的平均值作为输出。

池化层的输出维度计算如下
这里写图片描述
池化层中没有参数,另外注意池化层一般不使用零值填充处理。

卷积神经网络演示(ConvNetJS)
http://cs.stanford.edu/people/karpathy/convnetjs/demo/cifar10.html

3.CNN经典架构
a. LeNet-5
这里写图片描述

b. AlexNet
这里写图片描述

c. ZFNet
这里写图片描述

d. VGGNet
这里写图片描述

e. GoogLeNet
这里写图片描述

f. ResNet
这里写图片描述
具体地
这里写图片描述

模型规模与准确率
这里写图片描述

总结
— 卷积神经网络一般由卷积层、池化层、全连接层组成
— 发展趋势:
滤波器尺寸变小;
网络架构变深;
不再使用池化层和全连接层,仅使用卷积层构成整个网络
— 典型架构为 [(CONV-RELU)*N-POOL?]*M-(FC-RELU)*K,SOFTMAX
N一般大于5,M较大,0 <= K <= 2;
近期如ResNet和GoogLeNet并没有采取这种形式

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值