
2.4.2 前馈神经网络
把多个神经元模型按照一定的层次结构连接起来,就得到了前馈神经网络模型,也叫作多层感知机。如图2.12所示为一个具有基本结构的三层神经网络模型,包含一个输入层、一个输出层和一个中间层,输入层和中间层各有两个神经元,并带有一个权值向量。输入层神经元接收外界输入,中间层和输出层对信号进行加工计算,最后由输出层输出结果。

图2.12 三层神经网络示意图
表示输入层的值,y表示输出层的值,
表示中间层,
和
分别表示输入层和中间层的偏置量。为了求出最后的输出值y,需要求出前面每一层神经元的输出值,而每一层的值都是上一层神经元经过类似对数概率回归模型的计算得来的。用
表示第k层第i个神经元到第j个神经元的权值,
表示中间层的计算结果,有

g()表示激活函数,写成矩阵形式可以表示为

对于第i层第j个神经元,神经元的带权输出值和激活输出值
可以表示为

事实上,神经网络的本质就是通过参数与激活函数来拟合特征与目标之间的真实函数关系。矩阵和向量相乘,本质上就是对向量的坐标空间进行一个变换。因此,隐藏层的参数矩阵的作用就是使得数据的原始坐标空间从线性不可分,转换成了线性可分。
有研究证明,加入一层神经元数量足够多的中间层,神经网络就可以无限逼近任意连续函数。不过也正因为如此强大的表达能力,神经网络经常遭遇过拟合,训练误差持续降低,因此在使用的时候应提前考虑这一情况。
在设计一个神经网络时,输入层的节点数需要与特征的维度相匹配,输出层的节点数与目标维度相匹配,而中间层的节点数,由设计者自己指定。但是,节点数的设置,会影响到整个模型的效果。至于中间节点数及其他参数的确定,目前还没有完善的理论,一般是根据经验来设置的,先预先设定几个可选值,然后通过切换这几个值来查看整个模型的预测效果,选择效果最好的值作为最终选择。这也就是所谓的网格搜索(Grid Search)。