chapter-5-卷积神经网络

卷积神经网络的历史


1957年,Frank Rosen Blatt发明了第一代感知器,它也用f=wx+b来计算结果,并根据结果修改w的值,但它只能输出0或1。

1960年,Widrow和Hoff发明了Adaline和Madaline,这是人们第一次尝试叠加线性层来得到复杂的多层神经网络。

1986年,Rumelhart首次提出了反向传播算法。

2006年,Geoff Hinton与Ruslan Salakhutdunov合作的一篇论文表示,神经网络可以高效地训练。

但这时的神经网络还有诸多缺陷,直到2012年,Geoff Hinton组利用深度神经网络进行声学建模和语音识别。这是卷积神经网络显现其威力的第一个领域。

随后,与他同组的Alex Krizhevsky发表了一篇里程碑式的文章,首次让卷积神经网络在ImageNet分类大赛中取得了明显优于其他竞争对手的成绩。自此之后,卷积神经网络的热潮开始了。

卷积


假设我们有一个32*32*3的图像,前面我们使用的方法是把它拉伸为一个一维向量进行计算,但卷积神经网络有不同的处理方法。

卷积神经网络使用一个称为卷积核的模板,这个模板的长宽随意设定(一般长宽相同),而深度与图像相同,其中每个栅格内存放一个W,且拥有一个总体的b。当卷积核进行计算时,它是贴在图像上,栅格与栅格对齐,分别计算对应栅格的乘积,并将结果与b相加,得出最终结果。当以某种方式遍历完图像后,即得到一个结果层。以下是一个实例:

chapter-5-卷积神经网络
我们注意到,结果层的长宽小于图像的长宽,当经历过多次数的卷积后,结果会变得很小而没有意义。一个可行的解决方案是在做卷积时在原图像外面加上任意(一般不超过卷积核的长/2)的栅格,以让结果相比原图像不减小或减小得足够慢。外加的栅格值可以是0,也可以是原图像的外层栅格(对于对角的值,可以设定规则选取),或者1和-1或其他值,这取决于算法的目的和图像或该卷积层的特征。

卷积究竟有什么用呢?我的猜测是,它的好处有两个:一是根据之前提到的研究,哺乳动物在观察物体时首先观察的是边缘和形状,而这正是卷积所擅长的。通过卷积强调特殊的形状,并一层层的向上浓缩,我们可以判断它是否具有某一形状;二是由于卷积是一个模板和模板间的乘法,这个过程看似很麻烦,但联想到深度学习需要很好的显卡,也许这个过程可以使用GPU来完成。而GPU的计算能力要比CPU强很多,这就提高了算法的执行速度。

池化


池化,简单来说,就是降采样。通过一定的方式,将大的栅格转化为小的栅格,如下图: ![在这里插入图片描述](https://img-blog.****img.cn/20190515223442338.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phY2hpbk1h,size_16,color_FFFFFF,t_70) 这样做的好处是可以减少参数的数量,进而减少运算。

池化的方式有以下几种:

一、最大池化法:

chapter-5-卷积神经网络
注意池化时,滤波器不会重叠。

最终我们得到一个FC层(fully connected layer),它通过前一层的结果,来判断输入的类别,就像普通的神经网络一样。