实用机器学习笔记十五:卷积神经网络
前言:
本文是个人在 B 站自学李沐老师的实用机器学习课程【斯坦福 2021 秋季中文同步】的学习笔记,感觉沐神讲解的非常棒 yyds。
从全连接层到卷积层:
如果用一层隐藏层的 MLP 来对 ImageNet(每个图片 300x300,有 1000 个类别)做分类处理。且隐藏层的神经元个数为 10000。
在全连接层中,输入数据与隐藏层的每一个神经元都有一个连接通路。那么隐藏层这一层权重参数个数就有 300x300x10000=个参数,太大了吧也。
在全连接层中,每一个输出都会对所有的输入做权重和处理。
因此如果纯用 MLP 对图片进行分类的话,数据量太大,计算和存储也是需要很高的成本。因此在对图片进行分类时,有哪些先验信息可以使用到,当在设计神经网络时,可以把这些先验信息放进去。
在对图片进行识别时,有两个原则可以使用:
Translation invariance(平移不变性): 即物体经过变换之后,不会发生改变。不管这个物体是在哪,总会得到相似的结果。是不是有点懵逼呢?
如下图,任务是要找到左上角这个带红帽子的人,如果这个人从左上角移动到了右下角,只要是同一个模型,不管这个人在哪,这个模型都可以找到这个人,这就是平移不变性。
本地性:通常找一个东西,不需要看特别远的像素,像素和其周围的像素相关性是比较高的,因为图片中物体都是连续的,是在一小块区域中。
卷积层:
卷积层正是用了以上介绍的两个原则。根据下图进行介绍。前方高能,李沐老师讲的真是太好了。
前提:假设下图像素为 400,全连接层和卷积层的输出都是 2。
利用本地性:卷积层的每一个输出都是通过一个的窗口来计算的。这个窗口就是卷积核,的取值可以使 2,3,5 等值。看下图的左边全连接的列子:每一个输出需要对图片所有像素做就加权和。黄色的是一组可以学习的权重,蓝色的也是一组可以学习的权重。再看右边的卷积层的例子:黄色的输出对应的是图片左下角的东西,而且选择的是 2x2 的窗口,那么黄色输出如何得出:是左下角 2x2 像素块输入和权重做加权和,其他的就不再进行计算,不再关心。那么这个黄色输出对应的参数就从 nxn(图片的宽 x 高)个变成了 2x2 个参数。不管图片都多大,只要 k 定好,这个权重参数就确定了。
变换不变性:还是看下图的右边,黄色的权重学习好了,把左下角的东西移动到右上角,这个权重依然可以识别到这个东西。也就是说在计算蓝色输出的值时,不用再次学习一套新的权重,直接使用黄色的这套权重就行,这就是权值共享。
一个卷积核学习图片的一个特征(比如纹理,颜色等等),多个卷积核就可以学习到多种特征,而且通常做多个通道的卷积(红绿蓝三通道)。
因此,卷积层可学习的参数和输入大小和输出大小无关了,只和 k 有关。
卷积的问题:
卷积层对位置特别敏感,因为卷积层的每一个输出都是与对应的输入位置后面一块区域有关,一个物体不会总是出现在同一个位置,因此需要有对未知移动的鲁棒性。
pooling layer:
卷积的问题可以使用池化层来解决,现在叫它汇聚层更加合适一点。
汇聚层的也是使用一个的窗口对输入数据进行求平均或者取最大值。
卷积神经网络:
卷积层同样需要激活函数进行非线性化,如果没有激活函数的话同样是一个线性模型,和全连接层没什么区别,只是关注的区域更小,参数更少,权值共享。卷积神经网络(CNN)的结构如下:
版权声明: 本文为 InfoQ 作者【打工人!】的原创文章。
原文链接:【http://xie.infoq.cn/article/b1cde2c53bccc1888ebb5e14c】。文章转载请联系作者。
评论