一、简介
B-P(Back Propagation)反向传播网络在感知机的基础上,添加了一层或多层隐层,所以也可以将此模型称为多层感知机(MultiLayer Perception MLP)。它有着以下三个显著的特点:
包含隐层
• 反向传播
• 激活函数采用Sigmoid函数
接下来,我们将分别从这三个方面对B-P神经网络展开深入学习。
二、B-P反向传播网络
隐层的作用
首先需要明确,隐层位于模型中的输入层和输出层之间,它主要的作用是用来实现非线性样本的线性转化。在实际问题中,非线性样本是普遍存在的,下图的数据就是一个典型的二维非线性样本:
如何解决这一类型数据的分类问题呢?其实基本思想在支持向量机的学习中就曾提到过——那就是将观测点放置在更高维的空间中,使其转化为线性样本,然后再进行分类。
神经网络的解决方法也是将原空间的非线性样本放置在一个新空间中来实现线性转化,具体的途径为:将多个感知机模型按层次结构连接起来,形成隐层,然后让隐节点完成数据的线性转化任务。
以上图数据为例,设网络结构:两个输入节点x1、x2;一个隐层,包含两个隐节点y1、y2;一个输出节点z以及三个偏差节点。激活函数采用阶跃函数,连接权重如下图所示:
以观测点为例,有以下计算过程:
• 隐节点y1:U(y1) = 1*(-1)+11+10.5=0.5,激活值为1
• 隐节点y2:U(y2) = 1*(-1)+11.5+1(-1.2)=-0.7,激活值为0
• 输出节点:,激活值为0
因此,观测点(1,1)经过隐节点的作用,最终节点z的输出为0,实现了正确分类。
根据上面的逻辑,隐节点y1和y2分别代表两个超平面,经过若干次迭代后,特征空间的变换如下图所示:
首先,左侧图表示在x1和x2的特征空间中,y1、y2将样本点划分在3个区域内:
• 点(0,0)和(0,1)落在直线y1、y2的中间区域,隐节点输出均为1,0;
• 点(1,0),(0,1)落在直线y1、y2的外侧区域,隐节点输出分别为0,0和0,1
于是,原特征空间中的观测点(0,0)和(1,1)合并为右侧图中的点(1,0),另外两点转换为(0,0)和(1,1),直线z将这两类样本进行分类:
(0,0)和(1,1)点最终分类结果为1;
点(1,0)最终分类结果为0。
同理,多个隐节点和隐层可以实现更为复杂的非线性样本的线性转化。
反向传播
反向传播是B-P反向传播网络的重要特点。在学习感知机模型时我们已经知道,输入输出节点之间连接权重的调整依据之一就是预测误差。在没有隐层时,由于输出变量的实际值已知,因此预测误差可以直接计算并利用连接权重调整。但这种方法在多层神经网络中就不适用了,因为模型中隐层的实际输出是未知的,误差没法计算,所以输入层与隐层之间的权重调整也就无从下手。针对这个问题,B-P反向传播网络就需要引入一种新机制来实现权重调整,这就是我们所要学习的“反向传播”。
反向传播网络包含两个阶段,首先是“正向传播”,它是指,样本从输入层开始,由上至下逐层经隐节点计算处理,上层节点的输出就是下层节点的输入,最终样本信息被传送到输出层节点,得到预测的结果。并且在整个传播期间,所有的连接权重均保持不变。
在预测误差计算出后就进入反向传播阶段,虽然B-P反向传播网络无法直接计算隐节点的预测误差,但却可以利用输出节点的预测误差来逐层估计隐节点的误差,也就是将输出节点的预测误差反方向传播到上层隐节点,逐层调整连接权重,直至输入节点和隐节点的权重全部得到调整,使得网络输出值越来越逼近实际值。B-P反向传播网络正得名于此。
sigmoid激活函数的运用
在B-P反向传播网络中,激活函数选用了(0,1)型sigmoid函数,节点的输出被限制在0~1的范围内。对于分类问题,输出节点给出的是预测类别的概率值;对于回归问题,输出节点给出的标准化处理后的预测值,只需还原处理即可。