李宏毅2020机器学习课程笔记--CNN

卷积神经网络

  • 为什么用CNN来处理影像
  • CNN的结构
    • Convolution部分
    • Max pooling部分
    • Flatten

为什么用CNN来处理影像

当我们直接用一般的fully connected feedforward network来做图像处理的时候,往往会需要太多的参数。

CNN做的事情其实是,来简化这个neural network的架构,我们根据自己的知识和对图像处理的理解,一开始就把某些实际上用不到的参数给过滤掉。

在图像分类上,按照一般的思维,我们分辨一个图像里是什么,就根据有辨识度的特征来对这个物种进行判断。例如:鸟嘴,车轮胎等等,也就是说图片上的特征并不是都有用,我们只选出那些有用的进行操作即可。在此基础上,以下面这三个方面引出了CNN

李宏毅2020机器学习课程笔记--CNN_第1张图片
当你处理的数据,符合能有共同的特征,且这些特征可以处在图像中的不同区域,最后在图像中任意的删减(下采样),不会影响分类结果这三个属性时,你完全可以用CNN来减少参数,提高效率。

CNN的结构

李宏毅2020机器学习课程笔记--CNN_第2张图片
根据上述的三个特性,也就构成我们CNN的核心部分Convolution和 Max pooling。其中Convolution主要解决前两个属性,Max pooling解决第三个属性。

Convolution部分

李宏毅2020机器学习课程笔记--CNN_第3张图片
卷积层中会定义一堆Filter来提取图像中我们想要的特征,非常方便的是这些特征都是机器自己学来的,也就是说,机器自己学了一堆Fileter(特征)来说明你的数据集。

李宏毅2020机器学习课程笔记--CNN_第4张图片
利用上图中的Filter 1来对这个6*6的图像进行卷积可得到图像右侧的Matrix,可以看到和Filter 1符合的特征就是蓝色框圈住得部分,并且其值是所有数值里边最大的值,这就是Filter 想要找到的特征。

多个Filter 卷积之后的结果就是多个额上图这样Matrix的合集,我们称这个集合为 Feature Map。
李宏毅2020机器学习课程笔记--CNN_第5张图片
还需要特别注意的是,在处理一张有颜色的图片时,图像的数据被处理为三个通道上的数据,也就是一个立体形状的数据集,对应的,我们的Filter 也就是一个立体形状的。
李宏毅2020机器学习课程笔记--CNN_第6张图片
视觉到网络的映射关系(没有全部连接),每个“neuron”只检测image的部分区域,“neuron”之间共享参数

李宏毅2020机器学习课程笔记--CNN_第7张图片
对于convolution layer来说,首先它是对image的一部分做detection。因此它的neuron只需要连接到image的部分pixel上,对应连线所需要的weight参数就会减少;其次由于是用同一个filter去检测不同位置的pattern,所以这对convolution layer来说,其实是同一件事情,因此不同的neuron,虽然连接到的pixel对象各不相同,但是在“做同一件事情”的前提下,也就是用同一个filter的前提下,这些neuron所使用的weight参数都是相同的,通过这样一张weight share的方式,再次减少network所需要用到的weight参数。

Max pooling部分

李宏毅2020机器学习课程笔记--CNN_第8张图片

根据filter 1,我们得到一个4*4的matrix,根据filter 2,你得到另外一个4*4的matrix,接下来,我们要做什么事呢?

我们把output四个分为一组,每一组里面通过选取平均值或最大值的方式,把原来4个value合成一个 value,这件事情相当于在image每相邻的四块区域内都挑出一块来检测,这种subsampling的方式就可以让你的image缩小!

CNN的核心部分就是卷积层和上采样层
李宏毅2020机器学习课程笔记--CNN_第9张图片
在具体的训练过程中,可以随意添加这个basic的个数。

Flatten

这个操作就是把我们采样之后的结果展开形成一维的原始“数据集”来扔给一个Fully connected forward network继续进行处理。

例如:

李宏毅2020机器学习课程笔记--CNN_第10张图片

你可能感兴趣的:(机器学习&深度学习,人工智能,机器学习,深度学习,神经网络)