单层感知机结构
神经网络最简单的结构就是单输出的单层感知机,单层感知机只有输入层和输出层,分别代表了神经感受器和神经中枢。下图是一个只有2个输入单元和1个输出单元的简单单层感知机。在图中,x 1、w2代表神经网络的输入神经元受到的刺激,w1、w2代表输入神经元和输出神经元间连接的紧密程度,w3代表输出神经元的兴奋阈值。Y是输出神经元受到的刺激总和,y为输出神经元的输出。
(单层感知机)
如果整形函数(如sigmoid)确定,网络拓扑和连接权重就足以表示一个网络。在网络拓扑确定的情况下,利用训练数据修改连接权重的过程就是BP算法。我们利用一个例子说明单层感知机的训练过程。有一个单层感知机的网络拓扑如下图所示,权重wi(i=1,2,3)被初始化为0~1之间的随机小数。一个训练的样本我们用式子[(x1, x2),T]表示,x1,x2为输入神经元的兴奋值,T教师信号,即期望输出神经元产生的输出,T取值一般为0或者1。
(单层感知机的错误信号)
单层感知机的BP训练分为三个过程:前向过程、错误反向传导过程和连接权重修改过程。
(1)前向过程
利用当前的权重和输入兴奋计算Y和y的过程就是BP训练的前向过程,前向过程模拟的是脑神经的工作过程。Y和y的计算满足公式3。
(2)错误信号反向传播过程
(单层感知机的错误信号)
Err(Y) = y * (1-y) * (T-y)
Err(y) = T-y
对于未经训练的网络,y往往和期望输出T不一样,y和T的差值构成整个神经网络的源错误信号,该信号要用来指导网络权重的修正。我们按照定义输出神经元的输入错误信号Err(Y)和输出错误信号Err(y)。
(3)连接权重的修改
方法1:
权重的修改,有两个感性直观的方法:
a.某个输出神经元的错误越大,与之相关的连接(w)就需要越多的修改;例如:Err(Y)很大,说明w修改量delta(w)也应该很大。
b.在输入神经元中,谁的兴奋值越大,对错误产生的责任就越大,其与输出神经元的连接就需要越多的修改。
例如:x1=0.1,x2=0.8。Err(Y)的出现,x2的责任更大,连接权重w2的修改量delta(w2)要比delta(w1)要更大。
基于以上两点,我们把一条连接权重的修改量定为该连接的前层神经元的输出x乘以后层神经元的Err(Y),用公式表示:
我们可以得到各权重修改量为:
算出delta(w)之后,我们通过如下公式完成对网络的更新:
方法2:
我们可以从多元函数求极值角度解释上述过程。模型的训练的理念是经验风险最小化,也就是要使训练数据的错误|Err(y)|最小,但是由于|Err(y)|带有绝对值的目标不方便求导,我们把模型训练目标用函数lossFun表示。lossFun定义如下公式:
对于一个样本[(x1,x2),T],特征为x1、x2;类别或输出目标为T。lossFun是一个以[(x1,x2),T]为常量,以[w1,w2,w3]为变量的多元函数。模型的训练优化可看成一个多元函数求极值的问题。
已知条件为:
同理可得:
训练样本[(x1,x2),T]时,网络参数按照梯度下降的方向求解。偏导数算出的是lossFun上升最快的方向,W的修改量delta(W)是lossFun下降最快的方向,所以delta(W)方向与梯度方向相反。