
神经网络概述
前面说到感知器(或者逻辑回归分类器)是神经网络的一个神经元。神经网络是由多个神经元组成的网状结构,如下图所示,标准的神经网络由输入层x,输出层y和多个隐藏层h堆叠而成,隐藏单元hi(c),c表示层数,i表示层内的神经元序号。

深度学习是指通过样本训练来构造层数比较深(多)的神经网络。神经网络实际是用网络来逼近输入与输出之间的关系函数y=f(x),使神经网络的输出可以无限接近于函数的输出,神经网络几乎可以拟合任何函数。神经网络的不同结构表示该函数的不同结构,是根据输入输出之间的大致含义人为构造的,权重值wij是通过样本训练得到的。
深度学习目前比较多的应用是视觉识别系统。跟传统的支持向量机、贝叶斯等机器学习比,深度学习的核心是特征学习,旨在通过分层网络获取分层次的特征信息(即上一层的输出是下一层需要输入的特征向量),从而解决以往需要人工设计特征的重要难题。
比如在图像识别的处理方法上。
² 神经网络之前的做法是:通过人工设计操作将输入的数据转化成一种紧凑抽象的表征,同时还要根据当前任务的需要手动设计一些变量。通过这种转化,将输入数据表征成一种更容易分离或识别的形式,有利于后续的识别分类。转化后的数据作为分类器(比如支持向量机)训练的输入信号。人为提取的特征数值质量影响分类表现。
² 多层神经网络不仅能够训练目标分类器,还能从输入数据中直接学习所需要的数据变换操作,即上述需要人为设计的表征,可通过网络自动学习提取表征(特征)。一般神经网络的前几层用于特征提取,最后一层用于最终的分类。
卷积神经网络概述
卷积神经网络是神经网络中的一种特殊结构,它的特点是利用卷积层来提取特征,达到降维目的。
它模仿人类视觉的加工原理,较低层的识别初级的图像特征(边角线);若干底层特征组成更上一层的特征(轮子、眼睛、躯干等);最终通过多个层级的组合,在顶层做出分类(区分物体)。实际上是通过多层网络,成功的将庞大的原始输入数据不断的降维,最终使其能够被分类训练。
卷积神经网络由卷积层、池化层、全连接层组成。其中卷积层与池化层配合,组成多个卷机组,逐层提取特征,最终通过若干个全连接层完成分类。
卷积层
图像最底层由最基本的元素组成,同一图像或不同图像可能包含同样的元素片段。我们可以用比如10*10这样大小的过滤器来识别这些基本元素。也就是说用各种大小的过滤器可以描述整幅图片上的底层特征。这些过滤器实际上就是卷积核。
卷积层是指以上一层的输出作为输入,以卷积核作为权值,通过特定的规则进行乘积累加后得到的特征图层。
卷积计算操作如下:
1) 针对输入特征图,确定卷积核大小。
如下图A为输入特征图(在图像识别中,第1次卷积时,A为原始图表的像素点值),B为卷积核。

2) 以卷积核同等大小的窗口在输入特征图上进行从左到右、上到下滑动。
滑动的步长可灵活设定,可以每次滑动1格,或者2格,下图为每次滑动1格,即步长为1。滑动的窗口横向为4个,纵向为4个。

3) 每个滑动窗口内的数分别与卷积核内对应位置的数进行相乘,再将所有相乘结果相加,得到的结果存在目标特征图对应的位置。
如下图C为目标特征图,它是一个存储卷积计算后特征值的矩阵,大小跟上述滑动窗口的数量一致,为4*4。目标特征图矩阵列数的计算公式为:(m-n+2)// a
(m:输入特征图列数;n:卷积核列数;a:窗口滑动步长)

卷积层的输入A存储的是神经网络中上一层的节点值,卷积核B的数据是上层节点到当前节点的权重值(通常用w表示),C存储的是当前节点的信息。卷积层跟全链层的区别在于卷积层通过权值共享来降低网络参数的量级。将卷积计算表示成神经网络的层级结构,如下图所示:

卷积层完成的操作,是受局部感受野概念的启发,CNN通过卷积来模拟特征区分。可以理解为每个卷积核代表了一种图像样式,如果原图层的某个图像块跟此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。
当然在神经网络训练好之前,卷积核是未知的,卷积神经网络的样本训练,实质上就是根据要识别的样本图片来确定各层级的卷积核。
池化层
池化层主要是为了降低数据维度,可以使得网络有更大的感受野,从而能够接受更大的输入。允许网络在更深层学习到更加抽象的特征表征。
池化计算属于下采样,是指将原图层一个区块内的特征点进行合并处理。需要确定采样窗口大小、采样步长、合并计算方式。
如下图,采样窗口大小为2*2,是指将四个特征值合并成一格;步长为2,是指窗口每次向左或向下移动2格;合并计算有求平均、取最大值等多种方式,下图为求平均。

步长小于池化窗口宽度的称为重叠池化,重叠池化有助于缓解过拟合现象。
激活函数
激活函数用于对特征数值进行非线性转化。使特征数值在保留特征属性含义的同时,更方面计算处理。
常用的激活函数有:sigmoid、relu、softmax,其中relu训练更快,梯度消失现象相对较弱,有助于训练更深的网络。
归一化
归一化是指将数值转化为0到1之间的小数,在图像识别中,归一化处理可以减少由于光线不均匀造成的干扰,可以加快训练网络的收敛性。也可以防止净输入绝对值过大引起的输出神经元饱和现象。
LeNet神经网络结构介绍
LeNet是第一个真正的神经网络,主要应用在手写数字、交通标识、路网等识别。
LeNet的网络结构包括7层:3个卷积层、2个下采样层、1个全连接层、1个输出层。


C1层:输入为32*32像素的原图,分别跟6个5*5的卷积核进行卷积操作,得到6张28*28大小的特征图。卷积层节点与输入层节点之间的参数为156个,连接数是12304个;
156=(5*5+1)*6。5*5是卷积核表示的权重w,1是指偏置项
S2层:下采样层,也叫池化层。只是简单的将卷积层的输出特征图4个值合并成1个值。所以得到特征图的大小是14*14,特征图数还是6张。每张特征图的参数是2,其中1个参数是指偏置,另一个参数是指池化操作参数的自由度为1。
C3层:输入特征图有6张,输出特征图有16张。这16张输出特征图同一位置的16个神经元中:有6个神经元与S2层的3个特征图存在局部连接,有9个神经元与S2层的4个特征图存在局部连接,有1个神经元与S2层的6个特征图存在局部连接。
S4层:下采样层,采样窗口也是2*2,输出的特征图大小5*5,张数还是16。
C5层:输入特征图的大小为5*5,卷积核为5*5,120个卷积核,输出的特征图大小为1*1,每个特征图只有一个神经元,共有120张特征图。
F6层:是全链层,包含84个神经元,每个神经元与C5层的所有神经元相连,其值有C5层的输出向量与F6的权重向量内积,加上一个偏置,再经过尺度化双曲正切函数的挤压作用得到,有10164个可训练参数。
其它图像检测卷积神经网络
在LeNet之后的改良神经网络,用于图像识别的网络主要从加深、跨链等方向发展。
AlexNet:使用Relu激活函数,梯度消失现象较弱,有助于训练更深的网络;使用GPU训练,提高性能;局部响应归一化,提高精度;重叠池化,有助于缓解过拟合。
SPPNet:卷积网络的应变模型,一种采用空间金字塔池化的网络。用以灵活适应输入图像各种大小不固定的情况。
主要特点是在最后一个卷积和第一个全连层之间接入一个空间金字塔池化层。无需对图像裁剪或变形就可以处理输入图像不同大小的情况。该池化层的输入特征图大小不一,但经过该池化层的转化,输出特征图的大小是一样的。所以池化层的窗口大小和步长是不固定的,跟输入图像的大小成正比。
池化层的实质是对不同大小的图片进行不同比例的缩小,使得到同样大小的特征图。
VGGNet、Google Net为神经网络的加深、加宽、嵌套模型,网络结构更灵活丰富,适用场景也更广泛。另外还有各种跨连、密连模型,可以解决梯度受阻等问题。
当然在目标检测、语义分割等任务中有更复杂的网络结构。(后续分别单独介绍)


