一、神经网络
先回顾一下多层神经网络:
多层神经网络包括一个输入层和一个输出层,中间有多个隐藏层。每层有若干个神经元,相邻两层之间的后一层的每个神经元都分别与前一层的所有神经元连接。在识别问题中,输入层(即网络的第一层)代表特征向量,其每一个神经元代表一个特征值。
多层神经网络在图像识别问题中,输入层的每一个神经元可能代表一个像素的灰度值。但这种神经网络用于图像识别有几个问题,一是没有考虑图像的空间结构,识别性能受到限制;二是每相邻两层的神经元都是全相连,参数太多,训练速度受到限制。
二、卷积神经网络的结构
CNN就可解决上面传统神经网络的问题。CNN是在多层神经网络基础上发展起来的针对图像分类和识别而设计的一种深度学习方法。CNN使用了针对图像识别的特殊结构,可以快速训练。因为速度快,使得训练多层神经网络变得容易,而多层结构在识别准确率上又很大优势。
CNN有三个基本概念:局部感知域(local receptive fields),共享权重(shared weights)和池化(pooling)。
局部感知域: 在上图中的神经网络中输入层是用一列神经元来表示的,在CNN中,不妨将输入层当做二维矩阵排列的神经元。
与常规神经网络一样,输入层的神经元需要和隐藏层的神经元连接。但这里不是将每一个输入神经元都与每一个隐藏神经元连接,而是仅仅在一个图像的局部区域创建连接。以大小为28X28的图像为例,假如第一个隐藏层的神经元与输入层的一个5X5的区域连接,如下图所示:
这个5X5的区域就叫做局部感知域。该局部感知域的25个神经元与第一个隐藏层的同一个神经元连接,每个连接上有一个权重参数,因此局部感知域共有5X5个权重。如果将局部感知域沿着从左往右,从上往下的顺序滑动,就会得对应隐藏层中不同的神经元,如下图分别展示了第一个隐藏层的前两个神经元与输入层的连接情况。
如果输入层是尺寸为28X28的图像,局部感知域大小为5X5,那么得到的第一个隐藏层的大小是24X24。
共享权重: 上面得到的第一隐藏层中的24X24个神经元都使用