CNN卷积神经网络总结

	最近学习了CNN相关知识,这里来做个总结,当然本
文更多是从感性的角度来理解的,相信在读过本文的介绍
后去读其它更专业的文章或者读过其它文章来读本文都
能加深对CNN的理解。本文主要分为神经网络和CNN来
分别介绍,可以说CNN是神经网络的衍生版本。当然,由
于也是初步理解,可能有较多不足或者错误之处,望能够提出
相互进步。

一、神经网络
神经网络相比于之前的一些传统机器学习算法如支持向量机的特别之处就在于它能够实现直接对输入图像进行分类判别,也就是省去较多的的人工特征提取等繁琐操作,当然它也可以通过先提取特征来进行分类识别,但在本文为了体现其特别之处暂不考虑。如输入图像为28x28像素的灰度图,那么每个像素作为一个输入神经元(若换成提取特征,那么各特征向量的展开集合就是每个输入神经元),则有784个输入神经元,如下图所示,该图引自Michael Nielsen更详细的神经网络介绍也可以从这里来学习了解。
在这里插入图片描述
其实神经网络就是一个对输入神经元的多层加权和,大家可以想象下感知机,感知机就是没有隐藏层的“神经网络”,不过就目前为止它多了个激活函数也就是这里的符号函数,但是感知机只能分类线性可分的。所以神经网络引入多层就是为增强其分类能力,也就是说在二维来看,多层带来的效果是可以比拟成任何一条曲线,当然此处的神经网络的神经元是带了激活函数的。
综上,可以用数学公式表示为下图,就第一层隐藏层而言,第一个神经元就等于所有输入神经元的加权和,然后再通过f()激活函数来增强其非线性能力(如果没有激活函数那么无论多少层最终都只是一条直线就二维而言)。以此类推第二神经元也等于所有输入神经元的加权和,只不过权重W及偏置b不同而已。最终的输出结果就是多层函数的嵌入结果,常常其取值较大则说明分为该类别。
在这里插入图片描述
由此,介绍完了神经网络的主体部分,那么就该考虑它的优化部分,这就引出损失函数,我们的目的就是使这个损失函数尽可能小,也就是这成了一个最优化问题。损失函数常常用预测的分类与实际的分类值相减求取平方 最后取所有训练集的和,不妨我们称之为LOSS。为了优化LOSS,这就引入了梯度下降法,但是由于神经网络计算量巨大,如果按照平常的方法去对各个w、b分别就偏导,那么这样计算机实在受不了,而且计算量是超级超级大,这就根据微积分的链式法则引入了大名鼎鼎的BP算法即反向传播算法,其实BP算法就是适合计算机并且能提高效率的一种计算梯度的算法,大家也可以就把它当成一个求梯度的东西。然后根据求取梯度就可以不断优化来,最后再设计个阈值或者什么作为停止条件,就训练成了神经网络。当然在这个过程中,为了提高模型的泛化能力,常常在LOSS函数增加正则项,或者引入批量优化等工作。
二、CNN卷积神经网络
考虑到神经网络计算量庞大,优化参数太多,就引入了CNN。**CNN其实就是带特征提取的神经网络,只不过这种特征提取不是依靠人工选取的,而且是通过训练的参数来进行提取的,其中的载体就是卷积核。**具体结构如下:
在这里插入图片描述
由上图可知,CNN系统结构主要包括卷积层、汇聚层(池化或者下采样)以及全连接层。
对于卷积层,其就是利用一个卷积核模板提取出一个特征(卷积核常常是一个3x3的,至于为啥,因为这是前人通过大量实践总结出来的。对于其中具体的数值如何确定,其实卷积核中的数值就是w,这是需要训练得出的,刚开始一般给它个高斯随机数)对输入图像进行卷积,以提取出对应特征。通过卷积层可以有两个好处,一是降低参数量也就是w,二是提取特征
①降低参数量
这是主要因为它实现了权值共享和局部连接。
权值共享,就是你一个3x3的卷积核共9个参数,那么这个卷积核对原图(如32x32=1024个)进行卷积,按常理神经网络来说如果对各个像素进行加权和,那么一个输出就有1024+1(1是偏置)个参数,而此处不管你怎么加权,其权值只有w1,w2…w9等九个权值,这就大大降低了参数量;
局部连接,按常理神经网络来说如果对各个像素进行加权和仅一个输出神经元就需要参数1024+1,那么如果有1024个输出神经元,那么就需要(1024+1)x1024个参数,也就是一个输入神经元对每个输出神经元都有作用即1对1024个,而在此处,由于卷积核的作用,1个输入神经元只对其和卷积核覆盖的输出神经元作用,或许是1对3个这样的。由此可以大大减小输入神经元与对应输出神经元对应的参数作用关系。
②提取特征
这里的提取特征就是利用卷积,这里的思想有点类似于
一维的互相关函数
,当两个函数越相同时,两个函数乘积积分就越大。卷积提取特征也是利用了这样的性质。当卷积核与原图的覆盖区域很像时,那么卷积结果就越大,由此说明原图具备该卷积核代表的特征,为
了提高系统的非线性常常在卷积层加一个激活函数
。由于卷积核在原图处处遍历,这样它的作用就有点只想看看原图是否具有它这样一个特征而不是注重特征所在的位置。比如一个卷积核为
0 0 1
0 1 0
0 0 1
这代表了个类似小弧线的特征,我们就抽象点这就是个耳朵特征。那么它在原图就是不断遍历看看原图有没耳朵这个特征,有就输出就比较大。这样的话,如何为n个卷积核,那么就代表其有n个提取特征,对应于卷积层深度就为n。
**对于汇聚层,其就相当于下采样,**核常常为2x2,常常取最大值或者平均值,也就是对核覆盖像素中取最大的或者取平均,这样一般不仅不回丢失原来特征,而且还会大大有利于后续进一步卷积层提取参数量的减少。为了更有效地提取出各个尺度的特征,常常级联多个卷积层核池化层。
对于全连接层,其就相当一个神经网络,输入就是将各个层次的卷积层提取的特征展开作为输入神经元进行判别,全连接层可以为一层隐藏层也可以是多层隐藏层。
至于优化CNN和神经网络的优化差不多。

总之,CNN就相当于一个带特征提取的神经网络,而恰好这种特征提取不是人工提取,而是依靠训练来获取的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值