bp神经网络 手工计算练习 博客
时间: 2023-10-26 11:35:58 浏览: 79
您好,如果您需要进行bp神经网络手工计算的练习,我可以为您提供一篇博客参考。
首先,我们需要明确bp神经网络的基本原理。bp神经网络是一种有监督学习的神经网络,其主要目的是通过训练来调整网络的权重和偏置,使得网络的输出与目标值之间的误差最小化。
在训练过程中,我们需要使用一组输入数据和对应的输出数据来进行训练。我们将输入数据经过网络的前向传播计算得到输出值,然后将输出值与目标值进行比较得到误差,接着使用误差来进行反向传播,更新网络的权重和偏置,使得误差逐渐减小。
现在,我们来看一个bp神经网络的手工计算的例子。我们假设我们有一个包含两个输入和一个输出的神经网络,其中隐藏层包含两个神经元。我们使用 sigmoid 函数作为激活函数。
首先,我们需要初始化网络的权重和偏置,假设它们的初始值如下:
- 输入层到隐藏层的权重:w1 = [[0.2, 0.4], [0.3, 0.5]],偏置:b1 = [0.1, 0.2]
- 隐藏层到输出层的权重:w2 = [0.6, 0.7],偏置:b2 = 0.3
接下来,我们输入一个样本 [0.1, 0.9],进行前向传播计算:
- 输入层到隐藏层的计算:
z1 = [0.1 * 0.2 + 0.9 * 0.3 + 0.1, 0.1 * 0.4 + 0.9 * 0.5 + 0.2] = [0.46, 0.62]
a1 = [sigmoid(0.46), sigmoid(0.62)] = [0.613, 0.650]
- 隐藏层到输出层的计算:
z2 = 0.613 * 0.6 + 0.650 * 0.7 + 0.3 = 1.269
a2 = sigmoid(1.269) = 0.780
现在,我们计算误差:
- 目标值为 0.5,所以误差为:E = 0.5 - 0.780 = -0.280
接着,我们进行反向传播计算:
- 隐藏层到输出层的权重和偏置的更新:
δ2 = E * sigmoid'(z2) = -0.280 * sigmoid'(1.269) = -0.063
w2_new = w2 + α * δ2 * a1 = [0.6 - 0.1 * (-0.063) * 0.613, 0.7 - 0.1 * (-0.063) * 0.650] = [0.606, 0.702]
b2_new = b2 + α * δ2 = 0.3 - 0.1 * (-0.063) = 0.307
其中,α为学习率,一般取值为0.1 ~ 1之间。
- 输入层到隐藏层的权重和偏置的更新:
δ1 = δ2 * w2 * sigmoid'(z1) = -0.063 * [0.606, 0.702] * [sigmoid'(0.46), sigmoid'(0.62)] = [-0.008, -0.010]
w1_new = w1 + α * δ1 * [0.1, 0.9] = [[0.2 - 0.1 * (-0.008) * 0.1, 0.4 - 0.1 * (-0.008) * 0.9], [0.3 - 0.1 * (-0.010) * 0.1, 0.5 - 0.1 * (-0.010) * 0.9]] = [[0.20008, 0.40072], [0.30010, 0.50009]]
b1_new = b1 + α * δ1 = [0.1 - 0.1 * (-0.008), 0.2 - 0.1 * (-0.010)] = [0.1008, 0.2010]
最后,我们使用更新后的权重和偏置进行下一个样本的前向传播计算,重复上述过程,直到网络达到收敛。
这就是一个简单的bp神经网络手工计算的例子。希望对您有所帮助。
阅读全文