CNN-卷积神经网络

【思想】CNN卷积神经网络是什么

作者 : 老饼 发表日期 : 2024-01-17 13:32:23 更新日期 : 2024-02-23 08:53:09
本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com



卷积神经网络是深度学习中用于图像识别的主要模型,是深度学习中的核心成员之一

本文讲解为什么需要卷积神经网络,卷积神经网络的思想是什么,以及卷积神经网络的基本结构

通过本文可以对卷积神经网络有个初步的认识,知道卷积神经网络是个什么东西,用于解决什么问题




    01. 卷积神经网络的背景    



本节讲解卷积神经网络诞生的背景,即为什么会有卷积神经网络




      卷积神经网络的背景    


BP神经网络的困境
在卷积神经网络之前,比较火的是BP神经网络,因为BP神经网络只要隐神经元足够多,就能拟合任意曲线
但是,BP神经网络在应用于图象识别时,却难以进行,效果也并不太好
因为图象识别的输入比较多,就导致隐神经元也必须足够多,这样模型中的参数比较多,
 
 例如224*224的图像,就有5W个输入,如果用1W个隐节点,也有5亿以上个权重
参数过多,训练就非常困难,而且模型的拟合能力也过强,导致模型预测效果往往不佳
 卷积神经网络的诞生
可以注意到,图像的每个像素并非是孤立的,它与周边的像素紧密相连
传统的全连接神经网络显然没有利用这一信息,于是卷积神经网络CNN诞生了
 
CNN引入了卷积层与池化层,先对输入进行信息融合与降维,
在将输入个数压缩得更少后,再使用传统的全连接神经网络进行拟合
 例如,224*224的图像经过压缩后就成为了30*30,此时再使用全连接神经网络进行拟合时就不会有太大的压力







     02. CNN的卷积与池化   



本节介绍CNN的卷积运算与池化运算,两者都是CNN的核心内容




    CNN的卷积运算      


  CNN的卷积运算
 CNN引入的卷积运算就是使用一个卷积核窗口(卷积核就是一个矩阵)对输入进行逐步扫描,
并将窗口覆盖的元素与卷积核进行加权求和作为输出,具体如下:
 
经过卷积核的运算后,输入的每个像素都与周围的像素加权为一个新像素,
卷积就相当于把输入的信息进行加权融合后作为输出(一般把输出称为FeatureMap)
  卷积层的意义
     卷积层的意义如下:
 卷积层的生物意义:接收野                                                                                               
 从生物角度来看,卷积层就是模仿人的眼睛看东西,一块一块的看                   
 卷积层的数学意义:合并周围元素的信息,构建像素间的关联性                                         
                 从数学角度上来看,卷积层的作用是合并周围元素的信息,使得图像每个元素与周围元素紧密相关




    CNN的池化运算    


池化层将输入的每一小块的信息压缩为一个信息,
池化层主要用于减小FeatureMap的大小,经过池化之后,传给下一层的输入将减少

 池化运算
常用的池化层有均值池化与最大值池化,
 以一个2x2,步幅也为2的均值池化为例,它的运算例子如下图所示:
 
可以看到,2x2,步幅也为2的均值池化就相当于将图像按2x2的窗口大小进行均值压缩,
 2x2,步幅也为2的池化窗口是最常用的,此时输出的高和宽都将是输入的一半






     03. CNN的模型思想与结构   



本节初步介绍CNN模型的思想、结构,并辨识什么是卷积神经网络




        卷积神经网络的整体思想       


总的来说,卷积神经网络的核心就是卷积层与池化层,卷积层用于综合像素的周边信息,池化层用于压缩变量个数
通过反复使用卷积与池化,就可以将原始图像的每个像素不断与周边像素进行综合并压缩成更小的FeatureMap
 
经过这样的处理后,在FeatureMap变得较小时,再会用传统的全连接神经网络来拟合输出
由于此时FeatureMap较小,所以传统神经网络的求解压力将减小,将不再存在太大的难题
 值得注意的是,池化层是没有参数的,而卷积层的参数个数只受卷积核大小的影响,
由于它们不直接受输入图片大小的影响,所以利用卷积层与池化层将图片Size进行压缩的代价相对是较小的
为什么要卷积后再降维
可以看到,卷积神经网络真正降维的运算发生在池化中,卷积部分仅是起到信息融合的作用
那么为什么要先进行卷积运算再进行池化降维,而不直接用池化运算不断地降维呢
这主要是因为直接池化降维会令信息损失过于严重,所以需要先用卷积运算将每个输入的信息进行共享,再进行降维
也就是说,"卷积+池化"的信息损失会比"直接池化"要小一些,所以卷积神经网络一般通过卷积+池化交替的方式来实现输入的降维





    如何理解“什么是卷积神经网络”    


什么是卷积神经网络
卷积神经网络并非指某个具体特定的神经网络模型,而是指带有"卷积运算"的一类型神经网络
狭义上来说,它是指使用"卷积+池化"来压缩特征,再用全连接神经网络来拟合样本类别的这一类用于图像识别的模型
比较经典的具体的模型有:LeNet,AlexNet,VGG,GoogLeNet/InceptionNet,ResNet等
 什么是基础卷积神经网络
基础CNN模型并非某个人独立提出的模型结构,而是随着各种CNN模型(LeNet,AlexNet,VGG,....ResNet)的提出,
逐渐在领域内形成一种公认的Base结构,从而就有了"基础CNN模型结构"
基础CNN模型结构最早成型于LeNet,然后在AlexNet中成熟,并在其它模型中丰富与完善
 其中AlexNet是CNN的最大转折点,虽然早在1998年LeNet就提出了雏形并解决手写字识别问题
但直到AlexNet在2012年将它优化并在ImageNet2012挑战赛上取得显著成功,才掀起了CNN的研究高潮以及一举奠定CNN在图像识别中的地位
总的来说,不管是“卷积神经网络”还是“基础卷积神经网络”,都不是指某个公认的、唯一的模型
而是符合“使用了卷积运算”的都叫卷积神经网络,同理,“只使用了卷积神经网络的基础技术”的都叫“基础卷积神经网络”





好了,对于卷积神经网络CNN的初步讲解就到这里了~








 End 








联系老饼