CS231n lecture 5 Convoluntional Neural Networks 卷积神经网络

lecture 5 Convoluntional Neural Networks 卷积神经网络

卷积层

卷积神经网络可以保留输入图像的结构。滤波器的深度和输入图像的深度是一样的。

CS231n lecture 5 Convoluntional Neural Networks 卷积神经网络_第1张图片

在卷积层,滤波器会对图片进行扫描,类似于网格平移一样的,每次扫描就是直接相乘求和再加上bias得到一个值。最后可以得到一个28281的activation map

如果有6个5*5的滤波器,那么会得到6层activation map

卷积神经网络包括了一系列的卷积层和激活函数。

CS231n lecture 5 Convoluntional Neural Networks 卷积神经网络_第2张图片

前面的卷积层会提取出低级特征,中间的卷积层根据低级特征提取出中级特征,后面的卷积层根据中级特征提取在高级特征,再通过全连接神经网络得到分数和损失函数。

CS231n lecture 5 Convoluntional Neural Networks 卷积神经网络_第3张图片

在我的理解里面,卷积层更像是一个自动特征提取器。根据大量的数据提取出他们不同类别的特征,然后把这些特征放到FC里面进行分类。

CS231n lecture 5 Convoluntional Neural Networks 卷积神经网络_第4张图片

步长、滤波器的shape、padding填充

有的时候我们希望图像在经过卷积层后,大小不发生变化。因此就可以在图像的周围加上padding,最后得到的还是和原图像大小相同的输出。

CS231n lecture 5 Convoluntional Neural Networks 卷积神经网络_第5张图片

参数共享

假设输入的图像是300x300x3大小

传统神经网络:将图像展开,变成(1,270000)的向量。假设我们需要把它分成10类,(假设只是单层神经网络)。那么在全连接层,则我们需要270000x10=2700000个参数(不考虑偏置)。

卷积神经网络:假设我们采用5x5x3的filter,对于不同的区域,我们都共享同一个filter,因此就共享这同一组参数,一个filter有75个参数,假设我们使用10个filter,则需要750个参数(不考虑偏置),

由此我们可以看出卷积神经网络的参数数量大大减少了。 参数共享机制让我们的网络的参数数量大大地减少。这样,我们可以用较少的参数,训练出更加好的模型,可以事半功倍,而且可以有效地避免过拟合。 同样,由于filter的参数共享,即使图片进行了一定的平移操作,我们照样可以识别出特征,这叫做 “平移不变性”。因此,模型有更好的鲁棒性了。

池化层 Pooling Layer

池化层就是降采样,一般会使用2*2的接收域使用最大池化,步幅为2.

由于我们输入的图片可能会特别大,这样的话,会需要更多的参数,这会加大没有必要的训练时间,还可能出现过拟合的问题。

因此,池化层的最主要的作用是降低下一层待处理的数据量,其次是剔除了许多参数,防止过拟合。

在激活函数激活后,进入池化层。

CS231n lecture 5 Convoluntional Neural Networks 卷积神经网络_第6张图片

最大池化

CS231n lecture 5 Convoluntional Neural Networks 卷积神经网络_第7张图片

也有人并不喜欢池化层,所以可以去掉。 Striving for Simplicity: The All Convolutional Net 这篇论文中,并没有池化层,使用的是由重复的卷积层组成的体系结构。

由于卷积也可以通过调整步长和过滤器(感受野)大小来让输出图像变小,因此可以去掉池化层。丢弃池化层对于训练良好的生成模型(例如变分自动编码器(VAE)或生成对抗网络(GAN))非常重要。未来的体系结构似乎将具有很少甚至没有池化层的功能。

ConvNet架构

INPUT -> [[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC

对于架构方面,在百分之90以上的应用程序上,不必研究自己的体系结构来解决问题,可以查看当前在ImageNet挑战上最有效的体系结构,下载经过预训练的模型并在数据上进行微调,就可以得到一个表现得很好的模型了。

你可能感兴趣的:(CS231n,学习笔记)