深度学习算法第一篇--CNN
作为深度学习系列的第一篇,从CNN开始。
CNN(convolution neural network),即卷积神经网络,作为神经网络的一种,尤其在图像处理领域大放异彩,为大家所熟知。网上对CNN的介绍有很多,本篇文章作为自己的学习笔记,也参考了很多网上的资料,有些地方可能理解的不对或者不够透彻,如有发现,请积极指出,在此先谢谢各位大牛!
虽然作为第一篇,但神经网络的相关基础知识,这里就不再赘述,直接进入对cnn算法说明。
CNN作为神经网络的一种,尤其善于处理图像数据,主要是因为CNN通过引入卷积核(或过滤器filter)实现了“空间共享”的概念。因为卷积核的参数是对图像整体而言的,即在整个图片处理过程中的共享的,而非与图片中的每个像素进行关联,这样一来既可以降低模型的参数规模,也可以通过引入不同的卷积核来学习图像的不同feature(例如边缘,棱角等结构),另外通过引入池化层(maxpooling或者averagepooling),去掉卷积操作后的冗余信息,进一步降低参数规模。
CNN的结构如下图表示:
上图是第一个成功应用于手写字体识别的CNN模型结构。
可以看到原始图片首先经过卷积层进行特征提取(feature maps),之后进行池化操作(subsampling或pooling),之后又进行了卷积和池化操作,最后进入全连接层获得最后的分类结果。
当然随着卷积神经网络的不断发展,当前的CNN结构远比上图所示的复杂,但能处理更复杂的问题,获得更好的结果。
对CNN的大体结构进行了说明,比较粗糙,后续文章将对CNN的具体实现进行说明。
参考链接:
http://cs231n.github.io/convolutional-networks/#overview
https://zhuanlan.zhihu.com/p/27642620