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