20世纪八九十年代,常用的是一种两层的神经网络,也称为多层感知机(Multi-Layer Perceptron,MLP)。图2.6中的多层感知机由一组输入、一个隐层和一个输出层组成 。由于该多层感知机包含两层神经网络,其参数比上一节的感知机增加了很多。
图2.6 两层神经网络——多层感知机
我们以图2.6中的多层感知机为例介绍其工作原理。该感知机的输入有3个神经元,用向量表示为 x =[ x 1 ; x 2 ; x 3 ];隐层有2个神经元,用向量表示为 h =[ h 1 ; h 2 ];输出层有2个神经元,用向量表示为 。每个输入神经元到每个隐层神经元之间的连接对应一个权重,因此输入向量对应6个权重,用矩阵表示为
从输入计算隐层的过程为,权重矩阵 W (1) 的转置乘以输入向量 x 得到两个数(即隐层没有进行非线性激活之前的值),再加上偏置(bias)向量 b (1) ,然后由非线性激活函数 G 进行计算,得到隐层的输出 。从隐层计算输出层的过程与计算隐层的过程基本类似,权重矩阵为
权重矩阵的转置乘以隐层的输出 h ,再加上偏置 b (2) ,然后通过非线性激活函数,得到输出 。
图2.6中多层感知机的模型参数包括2个权重矩阵和2个偏置向量:权重矩阵 W (1) 有6个变量,偏置 b (1) 有2个变量,第一层共有8个变量;权重矩阵 W (2) 有4个变量,偏置 b (2) 有2个变量,第二层共有6个变量,该多层感知机总共只有14个变量需要训练,因此训练所需的样本量不太多,训练速度非常快。
只有一个隐层的多层感知机是最经典的浅层神经网络。浅层神经网络的问题是结构太简单,对复杂函数的表示能力非常有限。例如,用浅层神经网络去识别上千类物体是不现实的。但是,20世纪八九十年代的研究者都在做浅层神经网络,而不做深层神经网络。其主要原因包括两方面。一方面,K.Hornik证明了理论上只有一个隐层的浅层神经网络足以拟合出任意的函数 [33] 。这是一个很强的论断,但在实践中有一定的误导性。因为,只有一个隐层的神经网络拟合出的任意函数可能会有很大的误差,且每一层需要的神经元的数量可能非常多。另一方面,当时没有足够多的数据和足够强的计算能力来训练深层神经网络。现在常用的深度学习可能是几十层、几百层的神经网络,里面的参数数量可能有几十亿个,需要大量的样本和强大的机器来训练。而20世纪八九十年代的计算机的算力是远远达不到需求的,当时一台服务器的性能可能远不如现在的一部手机 。受限于算力,20世纪八九十年代的研究者很难推动深层神经网络的发展。