卷积到底有什么作用?如何做到特征提取

马克-to-win @ 马克java社区:防盗版实名手机尾号:73203。经过前面的神经网络的基础学习,终于进入我们这章的核心部分,卷积神经网络(CNN, Convolutional Neural Networks)。很多同学学了半天卷积神经网络,但一直有一个最最根本的问题没有搞懂,他也知道怎么做卷积了,也知道怎么做池化了,就是不知道在为什么这么干?马克-to-win @ 马克java社区:一直云里雾里的。一般的视频或书中从来也不提及这件事,总是一步到位高大上的各种动图,显示怎么卷怎么卷。没办法,这任务落我肩上了,我尽量深入浅出地把它讲明白吧!卷积和池化怎么做,最重要的是为什么要这么做。




(购买完整教程)




马克-to-win @ 马克java社区:防盗版实名手机尾号:73203。现在的问题是如何区分这两个图案,辨别出哪个是C?哪个是D?想想我们人类是怎么做的?有的人很聪明,他只需要看一小块特征,就能辨别出来是D,比如图D左上角的3×3的区域,这是一个很聪明的方法,就是不管在图的任何位置,只要有图D左上角3×3的区域,完全可以判断结果肯定不为C而是D,前提是如果只有两个字母的话。马克-to-win @ 马克java社区:这就像有人脸上有个特殊的胎记,凭着它,就能大致判断出就是这个人。这就是所谓的特征。在我们卷积领域里,就叫卷积核。这里就是图D当中左上角3×3的图片。






           图-核
这里卷积计算的过程就是特征提取的过程。卷积核分别从两张图左上角到右下角滑动,相应的项相乘之后再求和。














拿图C和图-核第一步卷积为例,值为:0*1+0*1+0*1+0*1+0*0+1*0+0*1+1*0+0*0=0














拿图C和图-核第二步卷积为例,值为:0*1+0*1+1*1+0*1+1*0+0*0+1*1+0*0+0*0=2
下面就省了图:
拿图C和图-核第三步卷积为例,值为:0*1+1*1+1*1+1*1+0*0+0*0+0*1+0*0+0*0=3
拿图C和图-核第四步卷积为例,值为:1*1+1*1+1*1+0*1+0*0+0*0+0*1+0*0+0*0=3




换一行:
(见下图)拿图C和图-核第五步卷积为例,值为:0*1+0*1+1*1+0*1+1*0+0*0+0*1+1*0+0*0=1











拿图C和图-核第六步卷积为例,值为:0*1+1*1+0*1+1*1+0*0+0*0+1*1+0*0+0*0=3
拿图C和图-核第七步卷积为例,值为:1*1+0*1+0*1+0*1+0*0+0*0+0*1+0*0+0*0=1
拿图C和图-核第八步卷积为例,值为:0*1+0*1+0*1+0*1+0*0+0*0+0*1+0*0+0*0=0
再换一行:
拿图C和图-核第九步卷积为例,值为:0*1+1*1+0*1+0*1+1*0+0*0+0*1+0*0+1*0=1
拿图C和图-核第十步卷积为例,值为:1*1+0*1+0*1+1*1+0*0+0*0+0*1+1*0+0*0=1
拿图C和图-核第十一步卷积为例,值为:0*1+0*1+0*1+0*1+0*0+0*0+1*1+0*0+0*0=1
拿图C和图-核第十二步卷积为例,值为:0*1+0*1+0*1+0*1+0*0+0*0+0*1+0*0+0*0=0
再换一行:
拿图C和图-核第十三步卷积为例,值为:0*1+1*1+0*1+0*1+0*0+1*0+0*1+0*0+0*0=1
拿图C和图-核第十四步卷积为例,值为:1*1+0*1+0*1+0*1+1*0+0*0+0*1+0*0+1*0=1
拿图C和图-核第十五步卷积为例,值为:0*1+0*1+0*1+0*1+0*0+0*0+1*1+0*0+0*0=1
拿图C和图-核第十六步卷积为例,值为:0*1+0*1+0*1+1*1+0*0+0*0+0*1+1*0+1*0=1
图C和图-核卷积最后的结果:










现在我们做一下图D和图-核的卷积:











拿图D和图-核第一步卷积为例,值为:1*1+1*1+1*1+1*1+0*0+0*0+1*1+0*0+0*0=5




马克-to-win @ 马克java社区:防盗版实名手机尾号:73203。现在的问题是,为什么卷积的结果会如此的高?原来,卷积核所代表的特征和图片当中这一小块区域完全一样,产生了共振的效果,当然值会比较高。这就是一个很重要的证据,因为图D这一小块做卷积的值很高,所以可以帮助我们在一定程度上,下结论说图D就代表字母D。因为卷积核代表的特征图形完全是字母D所特有的。

拿图D和图-核第二步卷积为例,值为:1*1+1*1+0*1+0*1+0*0+1*0+0*1+0*0+0*0=2
拿图D和图-核第三步卷积为例,值为:1*1+0*1+0*1+0*1+1*0+0*0+0*1+0*0+1*0=1
拿图D和图-核第四步卷积为例,值为:0*1+0*1+0*1+1*1+0*0+0*0+0*1+1*0+0*0=1
换一行:
拿图D和图-核第五步卷积为例,值为:1*1+0*1+0*1+1*1+0*0+0*0+1*1+0*0+0*0=3
拿图D和图-核第六步卷积为例,值为:0*1+0*1+1*1+0*1+0*0+0*0+0*1+0*0+0*0=1
拿图D和图-核第七步卷积为例,值为:0*1+1*1+0*1+0*1+0*0+1*0+0*1+0*0+1*0=1
拿图D和图-核第八步卷积为例,值为:1*1+0*1+0*1+0*1+1*0+0*0+0*1+1*0+0*0=1
换一行:
拿图D和图-核第九步卷积为例,值为:1*1+0*1+0*1+1*1+0*0+0*0+1*1+0*0+0*0=3
拿图D和图-核第十步卷积为例,值为:0*1+0*1+0*1+0*1+0*0+0*0+0*1+0*0+1*0=0
拿图D和图-核第十一步卷积为例,值为:0*1+0*1+1*1+0*1+0*0+1*0+0*1+1*0+0*0=1
拿图D和图-核第十二步卷积为例,值为:0*1+1*1+0*1+0*1+1*0+0*0+1*1+0*0+0*0=2
换一行:
拿图D和图-核第十三步卷积为例,值为:1*1+0*1+0*1+1*1+0*0+0*0+1*1+1*0+1*0=3
拿图D和图-核第十四步卷积为例,值为:0*1+0*1+0*1+0*1+0*0+1*0+1*1+1*0+0*0=1
拿图D和图-核第十五步卷积为例,值为:0*1+0*1+1*1+0*1+1*0+0*0+1*1+0*0+0*0=2
拿图D和图-核第十六步卷积为例,值为:0*1+1*1+0*1+1*1+0*0+0*0+0*1+0*0+0*0=2

图D和图-核卷积最后的结果: