CNN算法中BP算法权重调整过程
- 格式:docx
- 大小:182.39 KB
- 文档页数:6
bp使用方法
BP(Back Propagation)是一种常用的神经网络训练算法,用于训练多层感知器(MLP)等神经网络。
以下是BP的用方法:
1.初始化神经网络:首先,需要初始化一个神经网络,包括输入层、隐藏层和输出层。
每个层包含一定数量的神经元,每个神经元都通过权重与其他神经元相连。
权重初始化为随机值。
2.前向传播:输入数据通过输入层进入神经网络,然后依次经过隐藏层和输出层,最终得到输出结果。
在前向传播过程中,每个神经元将输入值与其权重相乘,加上偏置项,然后通过激活函数得到输出值。
3.计算误差:根据实际标签和神经网络的输出结果,计算误差。
误差是实际标签与输出结果之间的差异,通常使用平方误差或交叉熵误差等函数计算。
4.反向传播:根据计算出的误差,通过反向传播算法更新神经网络的权重。
反向传播算法将误差从输出层逐层反向传播到输入层,并根据梯度下降法更新权重。
5.迭代训练:重复步骤2-4多次,直到神经网络的输出结果收敛或达到预设的训练轮数。
在每次迭代中,权重都会被更新以减小误差。
6.测试与预测:训练完成后,可以使用测试数据对神经网络进行测试或进行预测。
将测试数据输入神经网络,得到输出结果,并根据输出结果进行评估和比较。
BP算法是一种监督学习算法,需要使用已知标签的数据进行训练。
在训练过程中,需要注意选择合适的激活函数、学习率和迭代次数等参数,以获得最佳的训练效果。
同时,为了避免过拟合和欠拟合等问题,可以使用正则化、Dropout 等技术来优化神经网络的性能。
卷积神经网络(CNN)一、简介卷积神经网络(Convolutional Neural Networks,简称CNN)是近年发展起来,并引起广泛重视的一种高效的识别方法。
1962年,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的局部互连网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络[1](Convolutional Neural Networks-简称CNN)7863。
现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。
Fukushima在1980年基于神经元间的局部连通性和图像的层次组织转换,为解决模式识别问题,提出的新识别机(Neocognitron)是卷积神经网络的第一个实现网络[2]。
他指出,当在不同位置应用具有相同参数的神经元作为前一层的patches时,能够实现平移不变性1296。
随着1986年BP算法以及T-C问题[3](即权值共享和池化)9508的提出,LeCun和其合作者遵循这一想法,使用误差梯度(the error gradient)设计和训练卷积神经网络,在一些模式识别任务中获得了最先进的性能[4][5]。
在1998年,他们建立了一个多层人工神经网络,被称为LeNet-5[5],用于手写数字分类,这是第一个正式的卷积神经网络模型3579。
类似于一般的神经网络,LeNet-5有多层,利用BP算法来训练参数。
它可以获得原始图像的有效表示,使得直接从原始像素(几乎不经过预处理)中识别视觉模式成为可能。
然而,由于当时大型训练数据和计算能力的缺乏,使得LeNet-5在面对更复杂的问题时,如大规模图像和视频分类,不能表现出良好的性能。
因此,在接下来近十年的时间里,卷积神经网络的相关研究趋于停滞,原因有两个:一是研究人员意识到多层神经网络在进行BP训练时的计算量极其之大,当时的硬件计算能力完全不可能实现;二是包括SVM在内的浅层机器学习算法也渐渐开始暂露头脚。
bp算法流程
bp算法流程
bp(back propagation)反向传播算法是一种深度学习算法,它可以让神经网络快速的进行学习和预测。
该算法通过调整权重,让神经网络能够达到最佳性能。
BP算法的基本流程如下:
(1)设定网络结构
首先,根据需要设定神经网络的结构,包括神经元的数量,隐层的数量,以及连接权重。
(2)初始化权重
然后,初始化权重,一般使用随机数或者0作为权重。
(3)正向传播
将输入信号传递到隐层,使用反向传播算法对网络中的权重进行调整。
(4)反向传播
反向传播是BP算法的核心部分,它的过程如下:
a. 计算输出层的误差
b. 计算每一层的误差,并将误差反向传播回输入层
c. 根据计算得到的误差,调整权重
(5)重复前面步骤
重复前面步骤,直到网络达到最优性能或者达到最大迭代次数。
(6)测试网络
使用测试集,测试网络的性能,确定是否达到最优性能。
BP算法的基本原理是将输入信号传递到隐层,使用反向传播算法对网络中的权重进行调整,使神经网络能够达到最佳性能。
该算法是深度学习算法中最常用的算法,用于处理各种不同类型的问题,其中包括图像处理、文本分类、语音识别、机器翻译等。
BP 算法的优点在于它能够有效地计算误差,并且能够快速进行权重调整,使神经网络能够达到最佳性能。
但是,BP算法也有一些缺点,其中包括易受局部最小值的影响,可能导致算法无法收敛,以及容易受到噪声的影响。
因此,在使用BP算法时,要尽可能避免这些问题,以便达到最佳性能。
BP算法程序实现BP(Back Propagation)神经网络是一种常见的人工神经网络模型,是一种监督学习算法。
在BP算法中,神经网络的参数通过反向传播的方式得到更新,以最小化损失函数。
BP神经网络的实现主要分为前向传播和反向传播两个步骤。
首先,我们需要定义BP神经网络的结构。
一个典型的BP神经网络包括输入层、隐藏层和输出层。
输入层接收原始数据,隐藏层进行特征提取和转换,输出层进行最终的预测。
在实现BP神经网络时,我们首先需要进行初始化。
初始化可以为神经网络的权重和偏置添加一些随机的初始值。
这里我们使用numpy库来处理矩阵运算。
前向传播的过程实际上就是将输入数据通过神经网络的每一层,直到输出层。
在每一层中,我们将对应权重和输入数据进行点乘运算,并加上偏置项,然后通过一个激活函数进行非线性转换。
这里我们可以选择sigmoid函数作为激活函数。
在反向传播中,我们根据损失函数对权重和偏置进行调整。
首先,我们计算输出误差,即预测值与真实值之间的差异。
然后,我们根据链式法则来计算每一层的误差,并将误差传递回前一层。
根据误差和激活函数的导数,我们可以计算每个权重和偏置的更新量,然后使用梯度下降法对权重和偏置进行更新。
实现BP算法的程序如下:```pythonimport numpy as npclass NeuralNetwork:def __init__(self, layers):yers = layersself.weights = [np.random.randn(y, x) for x, y inzip(layers[:-1], layers[1:])]self.biases = [np.random.randn(y, 1) for y in layers[1:]] def forward(self, x):a = np.array(x).reshape(-1, 1)for w, b in zip(self.weights, self.biases):z = np.dot(w, a) + ba = self.sigmoid(z)return adef backward(self, x, y, lr=0.01):a = np.array(x).reshape(-1, 1)targets = np.array(y).reshape(-1, 1)# forward passactivations = [a]zs = []for w, b in zip(self.weights, self.biases):z = np.dot(w, a) + bzs.append(z)a = self.sigmoid(z)activations.append(a)# backward passdeltas = [self.loss_derivative(activations[-1], targets) * self.sigmoid_derivative(zs[-1])]for l in range(2, len(yers)):z = zs[-l]sp = self.sigmoid_derivative(z)deltas.append(np.dot(self.weights[-l + 1].T, deltas[-1]) * sp)deltas.reverse# update weights and biasesfor l in range(len(yers) - 1):self.weights[l] += -lr * np.dot(deltas[l], activations[l].T) self.biases[l] += -lr * deltas[l]def sigmoid(x):return 1 / (1 + np.exp(-x))def sigmoid_derivative(x):return NeuralNetwork.sigmoid(x) * (1 -NeuralNetwork.sigmoid(x))def loss_derivative(y_pred, y_true):return y_pred - y_true```上述代码中,首先我们定义一个NeuralNetwork类,包含两个主要方法:forward(和backward(。
bp算法原理BP算法原理BP算法是神经网络中应用最广泛的一种学习算法,它的全称是“反向传播算法”,用于训练多层前馈神经网络。
BP算法基于误差反向传播原理,即先通过前向传播计算网络输出值,再通过反向传播来调整各个神经元的权重,使误差函数最小化。
BP算法的步骤如下:1. 初始化:随机初始化网络每个神经元的权重,包括输入层、隐藏层和输出层的神经元的权重。
2. 前向传播:将训练样本输送到输入层,通过乘积和运算得到每个隐藏层神经元的输出,再通过激活函数得到隐藏层神经元的实际输出值。
然后,将隐藏层的输出值输送到输出层,按照同样的方法计算输出层神经元的输出值。
3. 反向传播:通过误差函数计算输出层神经元的误差值,然后反向传播计算隐藏层神经元的误差值。
4. 权值调整:按照梯度下降法,计算误差对每个神经元的权重的偏导数,根据偏导数的大小来调整各个神经元的权重,使误差逐渐减小。
5. 重复步骤2~4,直到误差小到一定程度或者训练次数达到预定值。
其中,误差函数可以选择MSE(Mean Squared Error)函数,也可以选择交叉熵函数等其他函数,不同的函数对应不同的优化目标。
BP算法原理的理解需要理解以下几个方面:1. 神经元的输入和输出:神经元的输入是由上一层神经元的输出和它们之间的权重乘积的和,加上神经元的偏置值(常数)。
神经元的输出是通过激活函数把输入值转化为输出值。
2. 前向传播和反向传播:前向传播是按照输入层到输出层的顺序计算神经元的输出值。
反向传播是一种误差反向传播的过程,它把误差从输出层往回传递,计算出每个神经元的误差,然后调整各个神经元的权重来使误差逐渐减小。
3. 梯度下降法:梯度下降法是一种优化算法,根据误差函数的梯度方向来寻找误差最小的点。
BP算法就是基于梯度下降法来优化误差函数的值,使神经网络的输出结果逼近实际值。
综上所述,BP算法是一种常用的神经网络学习算法,它利用前向传播和反向传播的过程来调整神经元的权重,不断优化误差函数的值,从而使神经网络的输出结果更加准确。
bp使用方法BP(反向传播算法)是一种用于训练神经网络的算法。
它通过反向传播误差来调整神经网络中的权重和偏差,以使其能够更好地逼近目标函数。
BP算法是一种有监督学习算法,它需要有标记的训练集作为输入,并且可以通过梯度下降法来最小化目标函数的误差。
BP算法的基本思想是在神经网络中,从输入层到输出层的正向传播过程中,通过计算网络的输出值与目标值之间的差异(即误差),然后将这个误差反向传播到网络的每一层,在每一层中调整权重和偏差,以最小化误差。
这个反向传播的过程将误差逐层传递,使得网络的每一层都能对误差进行一定程度的“贡献”,并根据这个贡献来调整自己的权重和偏差。
具体来说,BP算法可以分为以下几个步骤:1. 初始化网络:首先需要确定神经网络的结构,包括输入层、隐藏层和输出层的神经元个数,以及每层之间的连接权重和偏差。
这些权重和偏差可以初始化为随机值。
2. 前向传播:将输入样本送入网络,按照从输入层到输出层的顺序,逐层计算每个神经元的输出值。
具体计算的方法是将输入值和各个连接的权重相乘,然后将结果求和,并通过一个非线性激活函数(如Sigmoid函数)进行映射得到最终的输出值。
3. 计算误差:将网络的输出值与目标值进行比较,计算误差。
常用的误差函数有均方误差函数(Mean Squared Error,MSE)和交叉熵函数(Cross Entropy),可以根据具体问题选择合适的误差函数。
4. 反向传播:从输出层开始,根据误差对权重和偏差进行调整。
首先计算输出层神经元的误差,然后根据误差和激活函数的导数计算输出层的敏感度(即对权重的影响),并根据敏感度和学习率更新输出层的权重和偏差。
5. 更新隐藏层权重:同样地,根据输出层的敏感度,计算隐藏层的敏感度,并更新隐藏层的权重和偏差。
隐藏层的敏感度可以通过将输出层的敏感度按权重加权求和得到。
6. 重复步骤4和5:重复执行步骤4和5,将误差逐层传播,更新每一层的权重和偏差,直到达到训练的停止条件(如达到最大迭代次数或误差降至某个阈值)。
BP算法的基本原理BP算法(反向传播算法)是一种神经网络训练算法,用于更新神经网络的权重和偏置,以使之能够适应所需任务的输入输出关系。
BP算法基于梯度下降优化方法,通过求解损失函数关于权重和偏置的偏导数来进行参数更新。
其基本原理涉及到神经网络的前向传播和反向传播两个过程。
以下将详细介绍BP算法的基本原理。
1.前向传播:在神经网络的前向传播过程中,输入数据通过网络的各个层,通过各个神经元的激活函数,最终得到网络的输出。
在前向传播过程中,每个神经元接收到上一层的信号,并通过权重和偏置进行加权求和,然后经过激活函数处理后输出。
具体而言,假设神经网络有L层,第l层的神经元为h(l),输入为x,激活函数为f(l),权重为w(l),偏置为b(l)。
其中,输入层为第1层,隐藏层和输出层分别为第2层到第L层。
对于第l层的神经元h(l),其输入信号为:z(l)=w(l)*h(l-1)+b(l)其中,h(l-1)表示第(l-1)层的神经元的输出。
然后,通过激活函数f(l)处理输入信号z(l)得到第l层的输出信号:h(l)=f(l)(z(l))。
依次类推,通过前向传播过程,神经网络可以将输入信号转化为输出信号。
2.反向传播:在神经网络的反向传播过程中,根据网络的输出和真实值之间的差异,通过链式法则来计算损失函数对于各层权重和偏置的偏导数,然后根据梯度下降法则对权重和偏置进行更新。
具体而言,假设网络的输出为y,损失函数为L,权重和偏置为w和b,求解L对w和b的偏导数的过程为反向传播。
首先,计算L对于网络输出y的偏导数:δ(L)/δy = dL(y)/dy。
然后,根据链式法则,计算L对于第L层的输入信号z(L)的偏导数:δ(L)/δz(L)=δ(L)/δy*δy/δz(L)。
接着,计算L对于第(L-1)层的输入信号z(L-1)的偏导数:δ(L)/δz(L-1) = δ(L)/δz(L) * dz(L)/dz(L-1)。
依次类推,通过链式法则得到L对于各层输入信号z(l)的偏导数。
BP神经网络算法步骤
1.初始化神经网络参数
-设置网络的输入层、隐藏层和输出层的神经元数目。
-初始化权重和偏置参数,通常使用随机小值进行初始化。
2.前向传播计算输出
-将输入样本数据传入输入层神经元。
-根据权重和偏置参数,计算隐藏层和输出层神经元的输出。
- 使用激活函数(如Sigmoid函数)将输出映射到0到1之间。
3.计算误差
4.反向传播更新权重和偏置
-根据误差函数的值,逆向计算梯度,并将梯度传播回网络中。
-使用链式法则计算隐藏层和输出层的梯度。
-根据梯度和学习率参数,更新权重和偏置值。
5.重复迭代训练
-重复执行2-4步,直到网络输出误差满足预定的停止条件。
-在每次迭代中,使用不同的训练样本对网络进行训练,以提高泛化性能。
-可以设置训练轮数和学习率等参数来控制训练过程。
6.测试和应用网络
-使用测试集或新样本对训练好的网络进行测试。
-将测试样本输入网络,获取网络的输出结果。
-根据输出结果进行分类、回归等任务,评估网络的性能。
7.对网络进行优化
-根据网络在训练和测试中的性能,调整网络的结构和参数。
-可以增加隐藏层的数目,改变激活函数,调整学习率等参数,以提高网络的性能。
以上是BP神经网络算法的基本步骤。
在实际应用中,还可以对算法进行改进和扩展,如引入正则化技术、批量更新权重等。
同时,数据的预处理和特征选择也对网络的性能有着重要的影响。
在使用BP神经网络算法时,需要根据实际问题对网络参数和训练策略进行适当调整,以获得更好的结果。
bp算法流程BP算法流程。
BP(Back Propagation)算法是一种常用的神经网络训练算法,它通过不断地调整神经网络的权重和偏置来最小化神经网络的输出与实际值之间的误差,从而使神经网络能够更好地完成特定的任务。
下面将详细介绍BP算法的流程。
1. 初始化神经网络。
首先,我们需要初始化神经网络的结构,包括输入层、隐藏层和输出层的神经元数量,以及它们之间的连接权重和偏置。
通常情况下,这些参数可以随机初始化,然后通过BP算法来不断调整以适应具体的任务。
2. 前向传播。
在前向传播过程中,输入样本会经过输入层,通过隐藏层逐层传播至输出层,最终得到神经网络的输出结果。
在每一层中,神经元会根据输入和当前的权重、偏置计算出输出,并将输出传递给下一层的神经元。
整个过程可以用数学公式表示为:\[a^l = \sigma(w^la^{l-1} + b^l)\]其中,\(a^l\)表示第l层的输出,\(\sigma\)表示激活函数,\(w^l\)和\(b^l\)分别表示第l层的权重和偏置,\(a^{l-1}\)表示上一层的输出。
3. 计算误差。
在前向传播过程中,我们得到了神经网络的输出结果,接下来需要计算输出结果与实际值之间的误差。
通常情况下,我们会使用均方误差(MSE)来衡量输出结果与实际值之间的差异。
\[E = \frac{1}{2}\sum_{i=1}^{n}(y_i o_i)^2\]其中,\(E\)表示总误差,\(n\)表示样本数量,\(y_i\)表示第i个样本的实际值,\(o_i\)表示第i个样本的输出值。
4. 反向传播。
在反向传播过程中,我们需要根据误差来调整神经网络的权重和偏置,以减小误差。
这一过程可以通过梯度下降法来实现,即沿着误差下降最快的方向调整参数。
\[w^l \leftarrow w^l \eta\frac{\partial E}{\partialw^l}\]\[b^l \leftarrow b^l \eta\frac{\partial E}{\partialb^l}\]其中,\(\eta\)表示学习率,\(\frac{\partial E}{\partial w^l}\)和\(\frac{\partial E}{\partial b^l}\)分别表示误差对权重和偏置的偏导数。
BP算法程序实现BP算法(Back Propagation Algorithm,即反向传播算法)是一种用于训练神经网络的常用算法。
它的基本思想是通过不断地调整神经元之间的连接权值,使得网络的输出接近于期望的输出。
在实现BP算法时,需要进行以下几个步骤:1.初始化参数:首先,需要初始化神经网络的权值和偏置,通常可以使用随机的小数来初始化。
同时,需要设置好网络的学习率和最大迭代次数。
2.前向传播:通过前向传播过程,将输入数据输入到神经网络中,并计算出每个神经元的输出。
具体来说,对于第一层的神经元,它们的输出即为输入数据。
对于后续的层,可以使用如下公式计算输出:a[i] = sigmoid(z[i])其中,a[i]表示第i层的输出,z[i]为第i层的输入加权和,sigmoid为激活函数。
3.计算误差:根据网络的输出和期望的输出,可以计算出网络的误差。
一般来说,可以使用均方差作为误差的度量指标。
loss = 1/(2 * n) * Σ(y - a)^2其中,n为训练样本的数量,y为期望输出,a为网络的实际输出。
4.反向传播:通过反向传播算法,将误差从输出层向输入层逐层传播,更新权值和偏置。
具体来说,需要计算每一层神经元的误差,并使用如下公式更新权值和偏置:delta[i] = delta[i+1] * W[i+1]' * sigmoid_derivative(z[i])W[i] = W[i] + learning_rate * delta[i] * a[i-1]'b[i] = b[i] + learning_rate * delta[i]其中,delta[i]为第i层的误差,W[i]为第i层与i+1层之间的权值,b[i]为第i层的偏置,learning_rate为学习率,sigmoid_derivative为sigmoid函数的导数。
5.迭代更新:根据步骤4中的更新公式,不断迭代调整权值和偏置,直到达到最大迭代次数或误差小于一些阈值。
CNN算法中权重调整过程详细推导
卷积神经网络(CNN)训练的过程是:信号由输入层输入,经隐含层(至少一层),最后由输出层输出。
为了使得输出的结果与期望值间的误差最小,我们需要对每层的权重参数进行调整,调成的过程是:利用输出值与期望值之间的误差,由输出层经隐含层到输入层,进行每层的误差计算,这个过程其实就是反向传播网络BP(Back Propagation)的计算过程。
BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。
BP 学习网络能学习和存储大量的输入-输出模式映射关系,而事前无需揭示这种映射关系的数学方程。
它的学习规则是使用梯度下降法,通过反向传播不断调整网络的权重和阈值,使网络的误差平方和最小。
图1 神经网络示意图(这里没有添加偏置项)
为了方便BP 算法推导,如图1所示,我们做了如下的定义: (1)我们定义输入是:n i x x x x X n i ==,],...,,...,,[21 (2)隐含层的输出是:l t x y y y Y l t ==,],...,,...,,[21
(3)输出层是:m
j o o o o O m j ==,
],...,,...,,[21
(4)输入层到隐含层的权重,我们定义:
l
t v v v v V l t ==,],...,,...,,[21线的颜色相同的权重一样,例如绿
颜色的线权重是:1v )。
(5)隐含层到输出层的权重,我们定义:
m
j w w w w W m j ==,
],...,,...,,[21
下边讲的才是我们这部分的核心和重点,如何利用以上的定义,来描述图1所示的网络的工作过程。
在这里插入一个关于激活函数的定义,你肯定会问什么是激活函数,跟神经网络有什么关系?
首先,激活函数是把激活的神经元的特征通过该函数把特征保存并映射出来,这里的保存特征,同时去除了数据中的一些冗余的信息,这是神经网络NN 解决非线性问题的关键。
常见的激活函数有:Sigmoid, tanh,ReLu,softmax 等。
Sigmoid 函数,也叫S 曲线函数:()x
e x
f -+=
11,tanh: ()()x x f tanh =,ReLu:
()()0,m ax x x f =, sofamax: ()()x e x f +=1log 。
对图1中的输出层: ()m j net f o j j ,...,2,1==,,这里的j net 表示输出层的第j 个输入,且 m j y w net t l
t tj j ,...,2,1,1==∑=,则
m j y w f o t l t tj j ,...,2,11=⎪⎭
⎫
⎝⎛=∑=,;
则对于隐含层:()l t net f y t t ,...,2,1==,,这里的t net 表示输出层的第t 个输入,l t x v net i n
i it t ,...,2,11==∑=,,则:
l t x v f y i n i it t ,...,2,11=⎪⎭
⎫
⎝⎛=∑=,;
在这里我们定义输出误差:()()∑=-=-=m j m m o d O d E 1
2
22121,这里
的d 表示期望输出值。
()()∑=-=-=m j m m o d O d E 1
2
22121
=()()∑=-m j j m net f d 1
2
21 =∑∑==⎪⎪⎭
⎫
⎝⎛⎪⎭⎫ ⎝⎛-m
j l
t t tj m y w f d 12
121
=()∑∑==⎪⎪⎭
⎫
⎝⎛⎪⎭⎫ ⎝⎛-m
j l
t t tj m net f w f d 12
121
= ∑∑∑===⎪⎪⎭
⎫ ⎝
⎛⎪⎪⎭⎫ ⎝⎛⎪⎭⎫ ⎝⎛-m j l
t n
i i it tj m x v f w f d 12
1121 (1) 此时式(1)中,E ,m d ,i x 是已知的(当然激活函数()•f 是已知的),只有权重值w 和v 是未知的,即是我们要求解的,接下里
我们利用梯度下降法求解式(1),则:it
it v E
v ∂∂=∆η-,tj tj w E w ∂∂=∆η-,
it
t
t it v net net E v ∂∂•∂∂=∆η-,tj j tj w net E w ∂∂•∂∂=∆j net -η (2) 在这里,我们对输出层,隐含层各定义个误差信号,则:
j o
j
net E ∂∂-=δ,t
y
t net E ∂∂-=δ,那么式(2)可以写成:
(1) tj
j tj w net w ∂∂=∆o j
ηδ
=tj
l t t tj w y w ∂⎪
⎭⎫ ⎝⎛∂∑=1
o j ηδ
=t y o j ηδ (3)
(2) it
t
y
t it v net v ∂∂=∆ηδ,
=it
n i i it y t v x v ∂⎪
⎭⎫ ⎝⎛∂∑=1
ηδ
=i y
t x ηδ (4)
这里的η是比例系数,观察式(3)和式(4),只要o
j δ和y
t δ已知,
那么我们就完成了对权重值的调整,那么我们有:
()()()j m m j j
j j j j o
j
net f o d net f o E
net o o E net E ''•-=•∂∂-=∂∂•∂∂-=∂∂-=δ(5)
()t t
t t t t y t net f y E
net y y E net E '•∂∂-=∂∂•∂∂-=∂∂-
=δ (6)
由于()()∑=-=-=m j m m o d O d E 1
222121 =∑∑==⎪⎪⎭
⎫
⎝⎛⎪⎭⎫ ⎝⎛-m
j l
t t tj m y w f d 12
121则,
tj l t t tj l
j l t t tj m t w y w f y w f d y E
⎪⎭
⎫
⎝⎛⎪⎪⎭⎫ ⎝
⎛⎪⎭⎫ ⎝⎛--=∂∂∑∑∑===1'11, ()()tj j l
j m m w net f o d '1
∑=--=
那么式(6)可以重写成:
()()()t tj j l j m m y t net f w net f o d '
'
1•⎥⎦
⎤⎢⎣⎡-=∑=δ
()x e
x f +=
11 =>()()()()x f x f x f -•=1'
()()()()()t tj j j l j m m y
t net f w net f net f o d '
11•⎥⎦
⎤⎢⎣⎡-•-=∑=δ
=()()()t t tj j j l j m m y y w o o o d -•⎥⎦
⎤
⎢⎣⎡-•-∑=111 (7)
由式(5)得,
()()
()()()()m m m m j j m m o j o o o d net f net f o d -••-=-•--=11δ (8) 将式(8)带入式(7)得:()t t tj l j o
j y t y y w -•⎥⎦
⎤⎢⎣⎡=∑=11δδ (9)
因此,将式(8)和式(9)分别带入式(3)和式(4)中,我们可以得到:
t tj y w o j ηδ=∆=()()t m m m m y o o o d -••-1η (10)
i y t it x v ηδ=∆=()i t t tj l j o j x y y w -•⎥⎦
⎤
⎢⎣⎡∑=11δη (11)。