1.2.2 多层感知机
为了进一步挖掘感知机的能力,20世纪80年代,多层感知机(Multilayer Perception,MLP)被提了出来。多层感知机是单个感知机的推广,用来克服感知机不能对线性不可分数据进行识别的弱点。多层感知机在单层感知机的基础上引入了一到多个隐藏层,基本结构由三层组成。第一层为输入层(Input Layer),第二层为隐藏层(Hidden Layer),第三层为输出层(Output Layer),如图1-4所示。
图1-4 多层感知机示例
多层感知机相比单个感知机,除层数多之外,还增加了激活函数(Activation Function)。类似于图1-3中的阶跃函数的作用,神经元节点对上层输入权重求和之后,经历一个函数变换后作为最终输出,这个变换称为激活函数。阶跃函数就是一种激活函数,除此之外,神经网络中常见的激活函数还有Sigmoid和线性整流(Rectified Linear Unit,ReLU)函数,如图1-5所示。下面分别介绍。
图1-5 激活函数
Sigmoid函数的表达式为
Sigmoid函数的输出值映射在(0,1)之间,单调连续,可求导数,如图1-5(a)所示。但是包含指数计算和除法计算,导致计算复杂度高,同时求导后容易产生梯度趋近于0的问题,不利于神经网络的训练。
ReLU函数可以有效解决梯度消失问题,其函数形式为
如图1-5(b)所示,当输入为正时,输出为正,当输入为负时,输出为0。
对于激活函数,需要注意的一点是,若每个神经元的激活函数都是线性函数,那么任意层数多层感知机都可被简化成一个等价的单层感知器。下面做简单证明,假设线性激活函数为f1(x)=k1x+c1,f2(x)=k2x+c2,那么隐藏层为
输出层为
下面用矩阵形式简化表达,令
则式(1.6)、式(1.7)可以简化为
其中,C为偏置参数矩阵。由于,则图1-4中的三层结构可以压缩为两层感知机,采用数学归纳法,可以证明对每个神经元的激活函数都是线性函数的多层神经网络,故压缩为单层感知机。