卷积神经网络初探
一、 什么是卷积神经网络?
说到神经网络,大家可能会想到这个:
神经网络由输入层、隐藏层、输出层组成,每个箭头代表着过程中数据的流向,图中的关键不是代表神经元的“圆圈”,而是代表神经元间链接的连接线。每个连接线都对应一个权值,这些权值是需要经过训练得到的。
卷积神经网络依旧是神经网络,只是层的功能和形式有了变化,可以理解为对传统神经网络的层级作出改进。如下图,多了许多传统神经网络没有的层次:
卷积神经网络(CNN),是一种深度学习模型,或者说,是一种类似于人工神经网络的多层感知器,常用于计算机视觉中的图像分析 ,我们这次主要讲其在自然语言处理中的应用。
第一个问题:什么是卷积(convolution)?
由内卷产生的原始积累,称为初代卷积(哈哈,开个玩笑)
图没看太明白?没关系,下面还有更详细的:
input、kernel、bias,这三个缺一不可,当然,光有这仨还不够,缺一个步长(stride)
- input 无需多说,就是输入矩阵
- kernel 又叫做卷积核,具体作用待会儿说
- bias 我理解为偏差值,对最后结果进行修正
- stride 可以理解为kernel对应的子矩阵每次滑动经过的像素
计算流程大致明白了?
对于输入矩阵,每次扫描与kernel对应大小的子矩阵,子矩阵的每个元素乘以kernel中对应位置的权值的结果之和,再加上偏差值(bias),即为最终结果,放入输出矩阵的相应位置。这只是输出矩阵中的一个元素,还早呢。
这里就差不多完成了。这是单通道单核卷积。
还有单通道多核卷积:
单通道多核卷积,无非就是多出几个输出矩阵,计算输出矩阵的流程和上面的单通道单核卷积一样。
那么,想必还有多通道单核卷积、多通道多核卷积喽?
bingo!
关于卷积,讲到这里就差不多了。
最后来个不那么严肃的说明:
图来!
现在能看懂了吗?
看不懂就对了
第二个问题:什么是pooling(池化)?
简单地讲,池化又称为降采样,本质就是采样。对数据进行降维压缩,在尽可能保留重要特征的基础上加快计算速度。
这回皮不动了哈
不太明白?来看图!
池化的方法有很多,先来一个max pooling(最大池化)压压惊:
filter是啥?stride又是啥?
( ̄ ii  ̄) 吸溜~( ̄" ̄;)
filter,刚才忘说了,是卷积核的另一种英文表示~~(还记得什么是卷积核吧?就是刚才的kernel)~~
stride,即是步长。
最大池化,相信聪明的同学们已经看出来了,就是取filter选取的子矩阵的最大元素作为输出元素。
还有一种方法叫平均池化,是不是也懂了?(相视一笑.jpg)
总结
到这里,突然有几个问题:
卷积神经网络注重相邻位置之间的关系呢,还是注重图形边缘在图中的精确位置?
面对放大、缩小、旋转、平移后的图像,卷积神经网络还能有一样好的效果吗?