b站吴恩达卷积神经网络学习笔记随笔:P1-P9
视频地址:https://www.bilibili.com/video/BV1F4411y7o7?from=search&seid=16850777765372298719
卷积神经网络与普通的神经网络
为什么需要卷积神经网络呢?因为普通的神经网络哪里没那么好吗?
想想如何对神经网络输入一个RGB三通道的图像:
将图像m* n* 3展开,展开成一个一维的列向量(那么这个向量有m* n* 3行,1列),里面全是图像RGB通道的的对应值。
将这个向量输入到神经网络中就好了,完成任务!
很可惜,这样不行。
一个1000* 1000的图像,不大吧,展开之后,这个列向量行数是多少呢?3* 1000* 1000 = 三百万。可以想象这个网络里面的隐藏层得有多少参数,训练个锤子。怎么办?卷积来了。
怎么卷积神经网络
很显然,根据上文的这个逻辑,减少需要训练的参数就可以了,卷积可以做到这一点。上吴恩达老师的一个图:
一张图像(6* 6* 3)可以分开三层来看,现在设计一个滤波器:卷积核,他也是三层(就像图中的黄色3* 3* 3和橙色3* 3 * 3)
这样好了,图像卷积核大家都是三层嘛:
图像的第一层找卷积核的第一层做卷积,
图像的第二层找卷积核的第二层做卷积,
图像的第三层找卷积核的第三层做卷积,
最后得到又三层的输出?不了,这三个卷积的结果按照对应位置相加起来吧,最后只输出一个4*4的紫色图
同理,橙色的卷积核同样操作。那么就能得到紫色和浅蓝色的两个卷积结果。
回想普通神经网络中的非线性函数,卷积神经网络也要用的呀。
看紫色和浅蓝色那里,他先给紫色和浅蓝色各自加了偏置b1,b2,再输入到非线性函数中,至此完成第一层卷积
我们看看第一层卷积之后得到什么:
一张图像(6* 6* 3)—>紫色和浅蓝色组合起来的卷积结果(4* 4 *2)
一个卷积核3层,一层9个参数,因此有27个参数,加上偏置b1,28个参数。
第二层呢?
输入刚刚的卷积结果(4* 4 *2)然后再设置几个卷积核,得到另外的一个卷积结果(输入的图像的数据组成,也类似于卷积结果嘛)。论文中总是用立方体来表示这些卷积结果和卷积核。
上吴恩达老师的图。
可以看出,每做一次卷积,正面的面积都会变小,随着神经网络的深入,立方体越来越“深”。
回到原先的问题,参数少了?
肯定啊,就调几个卷积核的参数,一个卷积核28个参数,给你10个,也才280个参数,美滋滋。
为什么是卷积,为什么是你
回想图像处理的课,卷积能做啥?嗯…当时用卷积做了?水平边缘检测,垂直边缘检测,浮雕效果等等等等。
其实这是什么呢?这是提取图像的一些特征(水平边缘,垂直边缘)
第一层卷积神经网络提取一些简单的特征是吧?那我再做好几层卷积神经网络呢?
是图像特征的特征,也就是一些高阶的特征。
简单的特征,就是物体的点线组合,举个例,输入一个自行车的图像,简单的特征是圆形(轮子),直线(车架);高级一点的特征,是一个物体的某个部分,例如自行车的车把车架,轮子;再高级一点呢?直接识别出这是个自行车。
全连接
全连接也是一个很简单的概念。
卷积神经网络不是把原本应该化成一个列向量的图像,当作一个立方体来操作吗。
全连接就是把立方体变回一个列向量…
池化
吴老师的ppt很直观了,就是取平均值(平均值池化),进行简单的压缩。
还有最大值池化,就是提取上面四个方块中的最大值,而不是平均值。
最大值池化的物理意义是,一般数字最大的,是代表了某个突出特征的,因此把最大值拿出来。