首页 男生 其他 罗辑思维荐书集锦(套装共24册)

附录1:一个经典的5层神经网络LeNet-5

  附录1:一个经典的5层神经网络LeNet-5

  图附1.1是由人工智能大神之一岩·拉孔(CNN的发明人)提出的典型的卷积网络LeNet-5。这个网络的左边是输入的待识别的图像,最右边有10个输出,因此可以识别10种不同的图像,例如手写体的0,1,2,…,9。

  图附1.1岩·拉扎提出的卷积网络LeNet-5

  图片来源:http://yann.lecun.com/exdb/lenet/。

  输入图像的大小是32×32。网络的第一层是卷积层,所谓“卷积”就是拿着各种不同的小模板(图附1.1的模板大小是5×5)在一张大图上滑动找相似的图形(每个模板是一个特定的图形,例如三角、方块、直线、弧线等)。模板在大图中一个一个像素滑动,在每一个滑动位置,都把大图上的像素值和模板对应的像素值相乘再全部加起来,把这个加总之和作为一个新的输出像素。当模板滑动过所有像素时,这些新的像素就构成一张新的大图。在模板滑动过程中,每当碰上大图中有类似模板上的图形(即在大图上这个区域的图形和模板重合度高时),新的像素值就会很大。图附1.1的模板尺寸是5×5,因此在32×32的输入图像上横竖都只能滑动28次,所以卷积的结果是一张28×28的图片。在这个网络里,第一层使用了6个模板,所以第一层卷积后出来6张28×28的图片。

  卷积的结果出来后,对每一个像素还要做一个“非线性”处理。一种“非线性”处理方法就是把所有小于零的像素值用零来代替,这样做的目的是让网络增加复杂性,可以识别更复杂的图形。

  网络的第二层叫采样层(down-sampling)或汇集层(pooling),简单讲采样层就是把大图变小图。在这个网络里,采样的方法是用一个2×2的透明小窗在图片上滑动,每次挪动2个像素。每挪动一个位置,把小窗内的4个像素的最大值取出来作为下一层图片中的一个像素(除了取最大值,也可以有取平均值等其他方法)。经过这样的采样,就产生了下一层6张14×14的图片。

  这个网络的第三层又是一个卷积层,这次有16个5×5大小的模板,在14×14的图片上产生16张10×10的图片(5×5的模板在14×14的图片的横竖方向上都只能滑动10次)。

  第三层做完非线性处理后,第四层又是一个采样层,把16张10×10的图片变成16张5×5的图片。

  第五层再次用120个5×5模板对16张5×5的图片做卷积。每个模板同时对所有16张图片一起卷积,每个模板产生一个像素,一共产生120个像素,这120个像素就成为下一层的输入。从这里开始,原始的一张32×32的输入图片变成了120个像素。每个像素都代表着某个特征。从这一层开始下面就不再做卷积和采样了,而是变为“全连接”的标准神经网络,即第五层的120个神经元和第六层的80个神经元中的每一个都连接。(不要问为什么第六层是80个而不是79个或81个,答案是没太多道理。)

  第六层的80个神经元和第七层(最后一层,即输出层)的10个神经元的每一个都相连接。

  以上卷积+非线性+采样可以看成卷积网络的一个单元,这个单元的作用就是“提取特征+压缩”,在一个卷积网络中可以不断地重复使用这个单元。今天大型的卷积网络可能有几百次这样的重复,在这个例子里,只重复了一次。

  卷积网络为什么这样设计?为什么分为卷积和全连接两个不同的部分?简单说是省了计算。如果用全连接多层网络,那么输入层要有32×32=1 024个神经元,在LeNet中最后压缩到120个。压缩的原理就在于对识别一张图像来说,只有图像中的某些特征是相关的。例如识别人脸,主要是五官的特征有用,至于背景是蓝天白云还是绿树红花都无所谓。卷积的模板就是要提取出那些最相关的特征。注意,这里模板并不需要事先设计好,模板中的各像素的数值,就是神经网络各层的加权系数。根据训练数据的不同,通过前述的最陡下降法,模板各像素取值最终也不同(即训练数据都是人脸和训练数据都是动物最终演化出来的模板不同)。每一层使用多少个模板要在识别率和计算量之间找一个平衡,模板越多识别越准确,但计算量也越大。

目录
设置
手机
书架
书页
评论