李宏毅机器学习笔记5:CNN卷积神经网络

李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL很是好的入门资料,在YouTube、网易云课堂、B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及本身对这些知识内容的理解与补充。(本笔记配合李宏毅老师的视频一块儿使用效果更佳!)html


Lecture 7: CNN

目录git

1、CNN的引入github

2、CNN的层次结构算法

3、CNN的小Demo加深对CNN的理解网络

4、CNN的特色机器学习

 

在学习本节课知识以前,先让咱们来了解一下有关CNN的知识,让咱们对CNN有一个大概的认知。卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具备深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的表明算法之一,被大量应用于计算机视觉、图片处理等领域。在CNN中,卷积层的神经元只与前一层的部分神经元节点相连,即它的神经元间的链接是非全链接的,且同一层中某些神经元之间的链接的权重 和偏移 是共享的(即相同的),这样大量地减小了须要训练参数的数量。ide

卷积神经网络CNN的结构通常包含这几个层:函数

输入层:用于数据的输入学习

卷积层:使用卷积核进行特征提取和特征映射spa

激励层:因为卷积也是一种线性运算,所以须要增长非线性映射

池化层:进行下采样,对特征图稀疏处理,减小数据运算量。

全链接层:一般在CNN的尾部进行从新拟合,减小特征信息的损失

输出层:用于输出结果

以上是最主要的层次结构,固然中间还可使用一些其余的功能层:

归一化层(Batch Normalization):在CNN中对特征的归一化

切分层:对某些(图片)数据的进行分区域的单独学习

融合层:对独立进行特征学习的分支进行融合


接下来就进入咱们的正题!

1、看完上面的介绍,确定有人会有一下的疑问:

为何CNN对图片处理有那么好的效果呢?

计算机又是如何识别咱们人工输入的图片呢?

机器识图的过程:机器识别图像并非一会儿将一个复杂的图片完整识别出来,而是将一个完整的图片分割成许多个小部分,把每一个小部分里具备的特征提取出来(也就是识别每一个小部分),再将这些小部分具备的特征汇总到一块儿,就能够完成机器识别图像的过程了。

Why CNN for Image:CNN与全链接神经网络相比,其所用的参数少的多,那为何CNN可以作到用更少的参数做图像处理反而获得更好的表现结果呢?这是由于图像具备如下三点特征: 

(1)一些模式比整张图片小得多,例如“鸟喙”就比整张图片小得多;

(2)一样的模式可能出如今图像的不一样区域,例如“鸟喙”可能出如今图片的左上方也可能出如今图像的中间;

(3)对图像的降采样不会改变图像中的物体。

CNN的卷积层的设计对应着前两点,池化层的设计对应着第三点。

 

 

 

 

2、CNN的层次结构

 1.卷积层

卷积说白了其实就是一种神经网络的链接方式,就是由于这种卷积的方式,才使得CNN的参数要比全链接神经网络的参数少得多。

(1)对于黑白,通道数为1的图片,卷积方式以下:

(2)对于彩色,通道数为3的图片

 

具体卷积过程(能帮助你更好的理解):http://cs231n.github.io/assets/conv-demo/index.html

(3)卷积和全链接方式的对比,体现出利用卷积的链接方式比全链接方式所需的参数更少。

接下来,让咱们换个角度去看待卷积的链接方式

 (4)卷积层和激励层一般合并在一块儿称为“卷积层”

激励层主要对卷积层的输出进行一个非线性映射,而后把映射结果输入到池化层,由于卷积层的计算仍是一种线性计算。使用的激励函数通常为ReLu函数:卷积层和激励层一般合并在一块儿称为“卷积层”。

2.池化层

池化层又称下采样,它的做用是减少数据处理量同时保留有用信息

当输入通过卷积层时,若感觉视野比较小,布长stride比较小,获得的feature map (特征图)仍是比较大,能够经过池化层来对每个 feature map 进行降维操做,输出的深度仍是不变的,依然为 feature map 的个数。

池化层也有一个“池化视野(filter)”来对feature map矩阵进行扫描,对“池化视野”中的矩阵值进行计算,通常有两种计算方式:

  • Max pooling:取“池化视野”矩阵中的最大值
  • Average pooling:取“池化视野”矩阵中的平均值

以Max pooling为例,见下图:

3.全链接层

做用:把全部局部特征结合变成全局特征,用来计算最后每一类的得分

换句话说全链接层就是把卷积层和池化层的输出展开成一维形式,在后面接上与普通网络结构相同的回归网络或者分类网络,通常接在池化层后面,如图所示;

4.输出层

输出层就不用介绍了,就是对结果的预测值,通常会加一个softmax,其损失函数通常为cross entropy

3、了解了CNN的层级结构,如今让咱们经过一个Demo加深对CNN的理解

CNN做用于手写数字识别,有关这个Demo我博客有一篇有详细的介绍,欢迎跳转浏览。

4、CNN的主要特色

这里主要讨论CNN相比与传统的神经网络的不一样之处,CNN主要有三大特点,分别是局部感知、权重共享和多卷积核

 1.局部感知

局部感知就是咱们上面说的感觉野,实际上就是卷积核和图像卷积的时候,每次卷积核所覆盖的像素只是一小部分,是局部特征,因此说是局部感知。CNN是一个从局部到总体的过程(局部到总体的实现是在全连通层),而传统的神经网络是总体的过程。具体以下图所示

2.权重共享

传统的神经网络的参数量是很是巨大的,好比1000X1000像素的图片,映射到和本身相同的大小,须要(1000X1000)的平方,也就是10的12次方,参数量太大了,而CNN除全链接层外,卷积层的参数彻底取决于滤波器的设置大小,好比10x10的滤波器,这样只有100个参数,固然滤波器的个数不止一个,也就是下面要说的多卷积核。但与传统的神经网络相比,参数量小,计算量小。整个图片共享一组滤波器的参数。

3.多卷积核

一种卷积核表明的是一种特征,为得到更多不一样的特征集合,卷积层会有多个卷积核,生成不一样的特征,这也是为何卷积后的图片的高,每个图片表明不一样的特征。

 

 

参考资料:https://blog.csdn.net/soulmeetliang/article/details/73188417

     https://blog.csdn.net/xzy_thu/article/details/69808817

 


以上就是有关CNN的基础知识介绍,欢迎交流

相关文章
相关标签/搜索