作者主页(文火冰糖的硅基工坊)
目录
第2章 卷积神经网络(CNNs / ConvNets)概述
第1章 CS321n卷积神经网络简介
1.1 CS321n的简介
CS321n是由李飞飞教授,Justin Johnson教师和Serena Yeung教授主讲的计算机视觉识别课程。本课程本深入研究深度学习架构的细节,重点是学习这些任务的端到端模型,特别是图像分类。
在为期10周的课程中,学生将学会实现、训练和调试自己的神经网络,并详细了解计算机视觉领域的前沿研究。
本文主要其对CNN文字讲解的解读。
1.2 CS321n连接
(1)英文链接
(3)卷积神经网图形解构
第2章 卷积神经网络(CNNs / ConvNets)概述
2.1 卷积神经网络和常规神经网络的非常相似性
它们都是由神经元组成,神经元中有具有学习能力的权重和偏差。
每个神经元都得到一些输入数据,进行内积运算后再进行激活函数运算。
整个网络依旧是一个可导的评分函数
该函数的输入是原始的图像像素,输出是不同类别的评分。
在最后一层(往往是全连接层),网络依旧有一个损失函数(比如SVM或Softmax),并且在神经网络中我们实现的各种技巧和要点依旧适用于卷积神经网络。
2.2 那么有哪些地方变化了呢?
卷积神经网络的结构基于一个假设,即输入数据是图像。
基于该假设,我们就向神经网络结构中添加了一些特有的性质。
这些特有属性使得前向传播函数实现起来更高效,并且大幅度降低了网络中参数的数量(卷积核)。
2.3 常规神经网络回顾
神经网络的输入是一个一维向量,然后在一系列的隐层中对它(一维输入向量)做变换。
每个隐层都是由若干的神经元组成,每个神经元都与前一层中的所有神经元连接。但是在一个隐层中,神经元相互独立不进行任何连接。
最后的全连接层被称为“输出层”,在分类问题中,它输出的值被看做是不同类别的评分值(平方值通常在[0,1]之间,输出值越大,是某个分类的可能性就越大,因此有时候也称为输出概率大小。
常规神经网络对于大尺寸图像效果不尽人意:
在CIFAR-10中,图像的尺寸是32x32x3(宽高均为32像素,3个颜色通道),因此,对应的的常规神经网络的第一个隐层中,每一个单独的全连接神经元就有32x32x3=3072个权重。
这个数量看起来还可以接受,但是很显然这个全连接的结构不适用于更大尺寸的图像。举例说来,一个尺寸为200x200x3的图像,会让神经元包含200x200x3=120,000个权重值。
而网络中肯定不止一个神经元,那么参数的量就会快速增加!显而易见,这种全连接方式效率低下,大量的参数也很快会导致网络过拟合。
2.3 卷积神经网络的基本结构
神经元的三维排列。
卷积神经网络针对输入全部是图像的情况,将结构调整得更加合理,获得了不小的优势。
与常规神经网络不同,卷积神经网络的各层中的神经元是3维排列的:宽度、高度和深度,这里的深度指的不是图片数的第三个维度,即通道,也不是整个网络的深度,整个网络的深度指的是网络的层数,而是卷积核神经元的个数,每个卷积核神经元代表一组卷积输出。
举个例子,CIFAR-10中的图像是作为卷积神经网络的输入,该数据体的维度是32x32x3(宽度,高度和深度),数据体的深度,是指图片的通道数。
我们将看到,层中的神经元将只与前一层中的一小块区域连接,而不是采取全连接方式。
对于用来分类CIFAR-10中的图像的卷积网络,其最后的输出层的维度是1x1x10,因为在卷积神经网络结构的最后部分:将会把全尺寸的图像压缩为包含每一种分类评分的一个向量(输出向量),向量是在深度方向排列的。
下面是例子:
左边是一个3层的神经网络。
右边是一个卷积神经网络,图例中网络将它的神经元都排列成3个维度,即3D(宽、高和深度/通道数)。
卷积神经网络的每一层都将3D的输入数据变化为神经元3D的激活数据并输出。
在这个例子中,红色的输入层装的是图像,所以它的宽度和高度就是图像的宽度和高度,它的深度是通道数3(代表了红、绿、蓝3种颜色通道)。
蓝色的是卷积核:Width * Height * Channels
卷积核的输出:Width * Height * Depth, 注意此处的Width * Heigh与卷积核的With * Heigh不是一回事。
卷积神经网络是由层组成的,该网络将输入的3D数据变换为3D的输出数据,在变换过程中,虽然维度没法发生变化,但是:
(1)每个维度方向上的长度得到的降低。
(2)三维维度方向的含义发生了变化。
- 输入:长 * 宽 * 通道数,他们定义的是图片三通道的像素值
- 卷积核:长 * 宽 * 通道数,长度和宽度比图形小很多,用这个小卷积核过滤原始图片的特征。
- 输出:长 * 宽 * 深度,长 * 宽反映了某一个卷积核过滤处来的三通道图片的特征,每个值代表一次卷积的输出。深度反映的是,用多少个卷积核充当过滤器,来过滤整个图片的特征,不同的卷积核,反映的不同方面的特征,比如,有些是颜色方面的特征,有些是图形方面的特性,有些是大小方面的特征。
2.4 组成构建卷积网络的各种层
一个简单的卷积神经网络是由各种层按照顺序排列组成。网络中的每个层使用一个可以微分的函数将激活数据从一个层传递到另一个层。
卷积神经网络主要由三种类型的层构成:卷积层,汇聚(Pooling)层和全连接层(全连接层和常规神经网络中的一样)。通过将这些层叠加起来,就可以构建一个完整的卷积神经网络。
一个用于CIFAR-10图像数据分类的卷积神经网络的结构可以是:
[输入层 -》卷积层 -》ReLU层 -》汇聚层 -》全连接层],如下图所示:
- 输入[32x32x3]存有图像的原始像素值,本例中图像宽高均为32,有3个颜色通道。
- 卷积层中,神经元与输入层中的一个局部区域相连,每个神经元都计算自己与输入层相连的小区域与自己权重的内积。卷积层会计算所有神经元的输出。如果我们使用12个滤波器(也叫作卷积核),得到的输出数据体的维度就是[32x32x12]。卷积会把三个通道的数据进行整合(求和)
- ReLU层将会逐个元素地进行激活函数操作,比如使用以0为阈值的作为激活函数。该层对数据尺寸没有改变,还是[32x32x12]。
- 汇聚层在在空间维度(宽度和高度)上进行降采样(downsampling)操作,数据尺寸变为[16x16x12]。降采样会对ReLU的特征输出,进行进一步的降低size的采用,降低size的规则有:选择某个小区域的最大特征输出、某个小区所有的特征了平均值输出等。
- 全连接层将会计算分类评分,数据尺寸变为[1x1x10],其中10个数字对应的就是CIFAR-10中10个类别的分类评分值。正如其名,全连接层与常规神经网络一样,其中每个神经元都与前一层中所有神经元相连接。全连接就是利用前面各层发现的特征数据作为全连接分类的输入,而不是原始的像素值作为输入,然后进行分类。
由此看来,卷积神经网络一层一层地将图像从原始像素值变换成最终的分类评分值(概率输出)。
其中有的层含有参数,有的没有,具体说来:
卷积层和全连接层(CONV/FC)对输入执行变换操作的时候,不仅会用到激活函数,还会用到很多参数(神经元的突触权值和偏差)。
而ReLU层和汇聚层则是进行一个固定不变的函数操作。
卷积层和全连接层中的参数会随着梯度下降被训练,
这样卷积神经网络计算出的分类评分就能和训练集中的每个图像的标签吻合了。
2.5 一个卷积神经网络的激活输出例子。
左边的输入层存有原始图像像素,右边的输出层存有类别分类评分。
在处理流程中的每个激活数据体是铺成一列来展示的。因为对3D数据作图比较困难,我们就把每个数据体切成层,然后铺成一列显示。
最后一层装的是针对不同类别的分类得分,这里只显示了得分最高的5个评分值和对应的类别。
作者主页(文火冰糖的硅基工坊)