CNN卷积神经网络

一、卷积神经网络的定义

卷积神经网络由一个或多个卷积层、池化层以及全连接层等组成。与其他深度学习结构相比,卷积神经网络在图像等方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他浅层或深度神经网络,卷积神经网络需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。
在CNN的一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。卷积神经网络的基本结构如图所示:

二、CNN的构成

1. 卷积层:

首先,介绍卷积的定义。卷积是通过两个函数f 和g 生成第三个函数的一种数学算子。在这里就是指的卷积核和输入项进行运算得到新的输出项。

激活映射(特征映射):如果输入的是一个32×32×3的像素值数组,过滤器(有时候也被称为神经元(neuron)或核(kernel))作用于感受野(receptive field),过滤器是一个数组(其中的元素被称为权重或参数),重点在于过滤器的深度必须与输入内容的深度相同(这样才能确保可以进行数学运算),因此过滤器大小为 5 x 5 x 3。过滤器首先在图像左上角,向右以每次一个像素滑动,每次滑动前过滤器中的值会与图像中的原始像素值相乘(又称为计算点积)。这些乘积被加在一起得到一个数。由于这种过滤器能得到28×28个结果,因此结果可以表示为一个28×28的数组。
在这里插入图片描述
当我们使用两个而不是一个 5 x 5 x 3 的过滤器时,输出总量将会变成 28 x 28 x 2。采用的过滤器越多,空间维度( spatial dimensions)保留得也就越好。每个卷积核检验的特征不同。

2. 完全连接层:

完全连接层观察上一层的输出(其表示了更高级特征的激活映射)并确定这些特征与哪一分类最为吻合。完全连接层观察高级特征和哪一分类最为吻合和拥有怎样的特定权重,因此当计算出权重与先前层之间的点积后,你将得到不同分类的正确概率。
(说白了全连接就是一个分类器。将上层抽取出来的特征向量在里面做一个权重计算,输出各个类别的概率,就是这个,没了。)

另外,全连接层是将前面得到的Feature map整合为一个值,如果这个值大,说明符合我们要找的特征,和位置无关。全连接层之前的部分作用是提取特征,全连接层的作用是分类。
(例如,全连接层是一个1001000的矩阵,1000个数字每个数代表了一个基本特征,得到1000个具体特征的值(值越大,说明特征越明显),然后后面的全连接层就可以对这些特征进行进一步分类,比如分为狗,猫,鸡,就会通过一个10003的矩阵来得到一个1*3向量,用于分类。)

3. 池化层:

一旦我们知道了原始输入(这里会有一个高激活值,即特征明显的表现)中一个特定的特征,它与其它特征的相对位置就比它的绝对位置更重要。这一层大幅减小了输入卷的空间维度(长度和宽度改变了,但深度没变),叫做池化层。
两个主要目的:

权重参数的数目减少到了75%(在池化层是2x2的前提下),因此降低了计算成本。
控制过拟合。
池化层有多种选择:

最大池化:采用了一个过滤器(通常是 2x2 的)和一个同样长度的步幅。然后把它应用到输入内容上,输出过滤器卷积计算的每个子区域中的最大数字。
平均池化。
L2-norm池化。

4. Dropout层:

防止神经网络的权重与训练样本太过匹配以至于在处理新样本的时候表现平平。
Dropout 的概念在本质上非常简单。Dropout 层将「丢弃(drop out)」该层中一个随机的激活参数集,即在前向通过(forward pass)中将这些激活参数集设置为 0。
好处是该网络将能够为特定的样本提供合适的分类或输出,即使一些激活参数被丢弃。此机制将保证神经网络不会对训练样本「过于匹配」,这将帮助缓解过拟合问题。
另外,Dropout 层只能在训练中使用,而不能用于测试过程,这是很重要的一点。

三、CNN的使用

训练(TRAIN):
计算机通过一个名为反向传播的训练过程来调整过滤器值(或权重)。
(训练的过程就是一个刚出生的小孩子逐渐成长的过程。CNN 经历的便是一个介绍图片与分类标记的训练过程。在深入探讨之前,先设定一个训练集,在这里有上千张狗、猫、鸟的图片,每一张都依照内容被标记。反向传播分为四部分:前向传导,损失函数,后向传导以及权重更新。损失函数用最常用的MSE。)
这里写图片描述

我们训练时优化的目标是预测标记(卷积网络的输出)与训练标记相同(意味着网络预测正确)。为了做到这一点,我们想要将损失数量最小化。将其视为微积分优化问题的话,也就是说我们想要找出是哪部分输入(例子中的权重)直接导致了网络的损失(或错误)。
这里写图片描述

学习速率不能太大也不能太小,高学习速率意味着权重更新的动作更大,因此可能该模式将花费更少的时间收敛到最优权重。然而,学习速率过高会导致跳动过大,不够准确以致于达不到最优点。这一点可以通过下图形象地展现:
这里写图片描述

总的来说,前向传导、损失函数、后向传导、以及参数更新被称为一个学习周期。对每一训练图片,程序将重复固定数目的周期过程。

测试(TEST):
准备另一组测试样本,以及样本对应的标记集合(TEST和Training要使用不同的数据集),使其通过CNN。输出与实际情况相比较,来检测网络是否有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值