摘要
CNN是一种前馈神经网络,每个神经元只与其之前一段距离之内的神经元相连。它具有强大的特征提取能力和权值共享机制,可以帮助识别出图像、音频和文本中的重要特征。CNN将输入图像分成若干个子区域,每个子区域被称为卷积核,每个卷积核由若干个神经元组成。每个卷积核得出一个特征图,这些特征图被拼接起来形成下一层的输入。
CNN在应用中通常包含卷积层、池化层、全连接层和Softmax层等。卷积层用于提取图像特征,池化层用于减少特征数量,全连接层用于分类,Softmax层用于输出最终分类结果。
Abstract
CNN is a feedforward neural network with powerful feature extraction ability and weight sharing mechanism, which can help identify important features in images, audio and texts. Each neuron is only connected with neurons within a certain distance from it. CNN divides the input image into several sub-regions, each sub-region is called convolution kernel, and each convolution kernel consists of several neurons. Each convolution kernel gets a feature map, which is spliced to form the input of the next layer.
CNN usually includes convolution layer, pooling layer, full connection layer and Softmax layer in application. The convolution layer is used to extract image features, the pooling layer is used to reduce the number of features, the fully connected layer is used for classification, and the Softmax layer is used to output the final classification results.
CNN
卷积网络与传统网络的区别
CNN输入是例如28x28x1的图像,NN输入的是一维像素。
整体架构包括输入层、卷积层、池化层、全连接层。·
卷积提取特征,池化压缩特征,全连接层加权重。卷积神经网络还是一个学习找最优权重参数的过程。
卷积层
将图像分成很多小区域,对于整个原始输入图像按照一个区域进行加权得到特征图,每个特征图的每个元素是相应位置卷积的结果。
32323,其中3表示RGB三个颜色通道,多通道分别卷积得到输出再相加。利用filter权重参数进行特征提取,通过特征参数卷积和得到一个值(特征值),filter前两个值大小表示在原始图像数据中每多大的区域对应一个特征值。不同颜色通道对应的filter要不一样。
利用内积(对应位置相乘)进行计算,注意加上一个偏置项Bias b。
选择不同特征矩阵(同一次卷积过程中规格必须相同)得到的特征图不同,每一次卷积选择的和是一致的,这样就导致结果有多个,称为特征图的深度,深度=filter的个数=特征图的个数。
以下仅是一个通道的简单演示且忽略bias:
整个卷积层特征提取过程:
将输入图像分隔成很多个像素点以及RGB三个颜色通道(例如32323,分隔成长为32宽为32,RGB三个颜色通道channel),选择fliter以及移动距离进行相应位置卷积加权,将三个计算结果以及偏置加起来可以得到特征图中第一个元素,重复可以得到整个特征图;改变初始权重值可以得到不同的特征图,称为深度。
Filter的channel数与输入图片一致(例如RGB通道数为3,对应的Filter的尺寸为3x3x3):
圈出的“3”计算过程如下:
卷积层涉及参数
-
滑动窗口步长(能移动越多得到的特征图越大,提取的特征越细腻,图像任务步长为1)
-
卷积核尺寸(选择区域的大小—最后得到结果个数的大小,一般3×3)
-
边缘填充(由于步长选择,有些元素重复加权贡献的,越往里的点贡献多,越往外的点贡献少,使得边界点贡献多些,在外面加上一圈0,可以弥补一些边界特征缺失)
一般使用zero padding 以0为值进行边缘填充。 -
卷积核个数:最后要得到多少个特征图(每个卷积和都是不一样的)
实际计算公式
举例:
卷积参数共享
用同样一组卷积和对图像中每一个区域进行特征提取。
例如:图像大小为32323,用10个553的filter来进行卷积操作,
所需要的权重参数:
每个卷积核尺寸为553,表示一个卷积核只需要75个参数,
75*10+10bias=760,故只需要760个权重参数。
卷积参数量远小于全连接网络。
池化层
有时经过卷积得到的特征太多了,但并不是都是有用的,因此要进行压缩(下采样),选择重要的留下,不重要的丢弃,只会对特征图长和宽进行缩减,不会改变特征图的深度,没有涉及到矩阵的计算。
Max Pooling(最大池化)
整个卷积神经网络的框架
每次卷积结束后需要加上一个非线性变换(核bp神经网络一致),执行几次(比如两次)卷积得到一个比较大的特征图就进行一次池化,最后的结果要转化为分类的概率值(全连接层)
VGG网络
卷积大小都是3*3,经过池化层后会损失一部分信息,在下一次卷积过程中使得特征值翻倍(用特征图的个数来弥补长宽的损失)
Resnet残差网络
并不是层数越多越好,在堆叠层数时可能有不好的进行影响,需要设计一个方案进行剔除。
可以理解为经过卷积层后学的不好把原来学的好的覆盖了,现在重新构建堆叠原始学的好的那部分,及时之前不好的部分有影响,但只要学习使得该部分权值为0即可(好的用,不好的权重会学成0,相当于白做。没用的也加上,最后效果至少一定不会比原来差)
感受野
当前这个值是由前面多少个值参与计算得到的,一般希望感受野越大越好。3个33卷积层需要的参数比一个大的77的需要的参数少一些,实际效率更快一些。
计算速度与参数个数挂钩,卷积越多越细腻,加入的非线性变换野随着增多。
总结
本周对CNN具体细节进行补充学习,着重学习了卷积的实现方式,并对其中一些内容进行推算。