资源描述
有P个训练样本,即P个输入输出对(Xk,Tk),k = 1,2,…,P。
Xk为第k个样本输入向量,Xk =(xk1,…,xkM),M为输入向量维数;
Tk为第k个样本输出向量(期望输出),Tk =(tk1,…,tkN),N为输出向量维数。
网络的实际输出向量为:Ok =(ok1,…,okN),当神经元为输入层单元时,Ok = Xk
wji为前一层第j个神经元输入到后一层第i个神经元的权重。
对于第k个样本,第i个神经元的状态定义为:
则第i个神经元的输出为:
当神经元激发函数为半线性函数,且训练指标函数取:,时,对于具有隐层的多层前向神经网络,可以证明,下述网络学习规则将使E在每个训练循环中按梯度下降:
对于网络输出层:
对于网络中间层:
再将代入上面两式,即可。
从以上公式中可以看到,在计算具有隐层的前馈多层神经网络的训练误差δki时,应先从输出层开始,逐层向后进行。这就是“误差反向传播”算法名称的由来。
学习过程中,学习速率η对学习过程的影响很大。η是按梯度搜索的步长,η越大,权值变化越剧烈。
实际应用中,通常是以不导致振荡的前提下取尽量大的η值。
为了使学习速度足够快而不易产生振荡,往往在权值调整公式中,再加上一个“势态项”,即:
α是一个常数,它决定过去权重的变化对目前权值变化的影响程度。
算法步骤如下:
(1) 置各权值或阈值的初始值:wji(0),θi(0)为小的随机数值。
(2) 提供训练样本:输入矢量Xk,k = 1,2,…,P,期望输出Tk,k = 1,2,…,P,对每个输入样本进行下面(3)到(5)的这代。
(3) 计算网络的实际输出及隐层单元的状态:
(4) 计算训练误差:
对于网络输出层:
对于网络中间层:
(5) 修正权值和阈值:
(6) 当k每经历1至P后,判断指标是否满足精度要求:E ≤ ε
(7) 结束。
利用BP算法求解模式分类问题。
图4.1 三层BP网络
训练网络为一个三层BP网络,输入层、输出层均有3个神经元。学习的目的是使网络能将3种不同形状的输入模式正确分类,即相应下图中每个不同类型的点分布,有且仅有一个输出单元响应。
给定训练模式对如下图所示,样本对(Xk,Tk),k = 1,2,3,有以下的矢量形式:
图4.2 训练模式
展开阅读全文