您的位置:首页 > 理论基础 > 计算机网络

CS231N 卷积神经网络课程学习笔记

2015-08-21 14:59 591 查看
CS21N 是斯坦福大学教授李菲菲的课程,主要讲卷积神经网络相关内容,为了更好的记忆,整理下笔记。文中有些不对的术语和理解还请大家指正。

一、卷积神经网络的结构
传统的神经网络一般由输入,点乘,非线性变换组成,由于每一层和前一层都是全连接,网络的复杂度和输入的图像大小有很大的关系,如果图像过大,输入层的参数会非常多。卷积神经网络则利用输入图像的一些特征,可以更有效地学习同时也大大减小了学习的参数。一般的卷积单元可以用宽度,高度,深度来表示。常用的卷积神经网络层有:输入层,卷积层,池化层,全连接层和非线性层。一个卷积神经网络就是这些层数的不同排列。
1.输入层(input layer):输入的原始图像数据。
2.卷积层(convelotionallayer):将和神经元局部连接的输入与对应权重做点乘(dotproduct)。需要参数:权重和偏置。
3.非线性层(RELU layer):将神经元的输入通过非线性变换,如RELU输出。
4.池化层(poolinglayer):在宽度和高度方向做降采样。目的是在不改变网络性能的前提下,减小网络的大小。可能会有超参数(hyperparameter??)。
5.全连接层(fully-connectedlayer): 和前一层全连接,用于计算最终分类的得分。需要参数:权重和偏置。
二、卷积层
主要从神经元的连接,空间分布和参数共享这三个方面介绍。
1.局部连接性
对于像图像一样的高维输入(3维),通常全连接不是一个好的方法,所以我们考虑局部连接。通常一个神经元在空间上的连接范围被称为接收区域(receptive field),在深度方向的延伸通常等于输入数据的深度。例如,对于CIFAR-10数据集,输入为32*32*3,如果receptive field的大小为5*5,那么卷积层的每一个神经元有5*5*3+1=76个参数,包括了偏置,而卷积层的深度应该和输入图像的深度一样,都为3。



2.空间布局(spatialarrangement)
空间布局决定了每一卷积层输出的大小,它由卷积层深度(depth),跨步(stride)和补零(zero-padding)决定。

l 深度:深度控制了和同一个局部区域连接的神经元的个数,就如同传统的神经网络中,隐层有很多神经元连接到前一层,这些神经元会根据输入的不同(如有向边,颜色区域等)而激活与否。

l 跨步:简单理解为相邻receptive field之间的距离,如果stride比较小则两个receptive field之间的覆盖比较大,输出的维度比较大,反之。

l 补零:对输入的周边进行补零,一方面可以加大图像边界的影响(不补零的话,边界数据只使用少数次),另一方面可以影响输出的大小。

我们用W来表示输入数据的维数,F表示卷积层中receptivefield的神经元数目,每个field之间的间隔为S,边界上补零的个数为P,则该层神经元输出的大小为(W+2P-F)/S+1。这个结果需要是整数。

特别的是,当S=1时,若P=(F-1)/2,则输出的大小和输入的大小相同。

3.参数共享(parameter sharing)

假设,输入图像某一个位置可以看到的特征在另一个位置也可以看到,那么在不同的位置的卷积单元可以共享彼此的参数。这样大大减少了参数个数。但是有时,这种假设是略有问题的,对于一些中心在图片中间(即特征分布不均匀)的样本,卷积神经网络效果不是很好,也只能称之为局部连接网络了。
三、池化层(pooling layer)
通常会在连续的卷积层之间加入池化层,主要有两个目的,一是逐步减少神经网络的参数,二是可以防止过拟合。通常使用的是2*2,跨步为2的最大值池化方法。池化是在卷积层的每一个深度上面分别进行的。更一般化,输入图像大小为W1*H1*D1,池化模板为F,跨步为S,则输出的大小为W2*H2*D2。其中,W2=(W1-F)/S+1,H2=(H1-F)/S+1,D2=D1。池化层不需要额外的参数,通常也不对其做补零处理。需要
一般实际中使用最大值池化(即选择窗口中的最大值,需要记录最大值在的位置,在反向传播中会用到???),也有均值池化,L-2池化,F=3,S=2或者F=2,S=2。更大的池化会破坏整个网络。目前有新的池化方法,如fractional max-pooling, 或者不采用池化,只使用卷积神经网络。

四、全连接层

和传统的神经网络相似,与前一层所有的神经元相连接。也可以通过一定方法将全连接层转换为卷积层的样式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: