之前做车牌识别的时候,在字符识别(OCR)时,使用的是人工神经网络(ANN),这里总结介绍一下人工神经的相关知识。
1.神经网络
1.1 定义
人工神经网络(ANN)又称神经网络(NN),是一种模拟人脑的学习系统的生物模型。神经网络的由大量相互连结的节点构成一个复杂的网络结构,每个节点都有多个输入和一个输出,并且每个输入对应有一个权重因子,节点的输出就是所有这些输入与权重乘积的耦合。
通俗的来讲,神经网络就是一个学习器,给它一组输入,它会得到一组输出,神经网络里的节点相互连结决定了输入的数据在里面经过怎么样的计算。神经网络具有这个功能:通过大量的输入,神经网络通过调整自身的连接情况,给出我们的预期输出。
1.2 神经网络的作用
神经网络对于逼近真实数值、离散值或向量值的目标函数提供了一种健壮性很强的方法,现已被广泛应用到视觉场景分析、手写字符识别、语音识别、人脸识别等。计算机识别物体的过程可以描述为:对象-特征-类别,理论上都可以使用神经网络来解决。
2.感知器
2.1感知器结构
一个感知器的结构图如下:
这里的感知器,也就是我们上面说的神经网络中的节点。感知器是以一组实数向量作为输入,计算这些输入的线性组合,如果结果大于设定的阈值就输出1,否则输出-1.上图的感知器就可以表示为:
这里把 - w0 看成是上面提到的阈值,w1到wn是对应的权重,o(x)简单来说就是将输入向量按一组权重进行线性加权求和后做的一个符号函数。
我们可以把感知器看成是n维实例空间(点空间)中的超平面的决策面,平面一侧的所有实例输出1,对另一侧的实例输出-1。决策平面方程为:
也就是说,当我们输入两类不同的实物的时候(2类样本数据),对已一类实物,感知器输出为1,而另一类则输出-1.但是这里有一个限制:并不是任意的样本都可以找到这样的决策超平面,只有线性可分的样本空间才可以找到超平面或者找到一组权值。
由上面的分析,我们希望找到一组这样的权值,对于我们输入的每一组向量,总能够得到一个我们期望的值。但是单个感知器只能得到2个结果,输出1和-1。
在实际的应用当中,我们输入的数据样本往往不是线性可分的,即使是2维的数据,也可能不是线性可分的:
对于非线性可分的样本数据,上诉的感知器则无能为力了。于是乎,提出一种非线性映射,产生了激活函数的概念。激活函数是一种非线性函数同时是可微的,可微是为了后面的权重调整。因为我们需要知道权重是怎么影响最终的输出的,我们要根据输出来调节那些权重向量,也就是后面讲到的梯度下降法则。
2.2 激活函数
激活函数有很多种,这里我们选用的是S型激活函数,它将一维空间映射到[0,1]和[-1,1]。S型激活函数sigmoid函数和它的导数为:
经过这样的非线性映射后