神经网络正向传播与误差反向传播示例:Sigmoid 激活函数

(1) 正向输出计算过程如下:
-
输入层 → 隐层1 (H1):
z1 = w11 * x1 + w21 * x2 + b1 = 0.3 * 1 + 0.2 * (-1) + 0.1 = 0.2
h1 = sigmoid(z1) = 0.549834
-
输入层 → 隐层1 (H1):
z2 = w12 * x1 + w22 * x2 + b1 = 0.4 * 1 + 0.1 * (-1) + 0.1 = 0.5
h2 = sigmoid(z2) = 0.622459
-
隐层1 (H1) → 隐层2 (H2):
z3 = w13 * h1 + w23 * h2 + b2 = 0.1 * 0.549834 + 0.3 * 0.622459 + 0.1 = 0.364208
h3 = sigmoid(z3) = 0.589949
-
隐层2 (H2) → 输出层 (O):
z4 = w14 * h3 + w24 * h3 + b3 = 0.2 * 0.589949 + 0.1 * 0.589949 + 0.1 = 0.301989
o1 = sigmoid(z4) = 0.574442
-
隐层2 (H2) → 输出层 (O):
z5 = w15 * h3 + w25 * h3 + b3 = 0.3 * 0.589949 + 0.2 * 0.589949 + 0.1 = 0.392416
o2 = sigmoid(z5) = 0.596872
因此,输入为 (1, -1) 时,各层正向输出为:h1=0.549834,h2=0.622459,o1=0.574442,o2=0.596872。
(2) 误差计算:
假设真实输出为 y,样本数为 N,则误差 E 定义为:
E = 1/2 * Σ(y - o)^2
其中,Σ 表示对所有样本求和。
此时,真实输出为 (0.5, 1),预测输出为 (o1, o2) = (0.574442, 0.596872)。
因此,误差 E 为:
E = 1/2 * [(0.5 - 0.574442)^2 + (1 - 0.596872)^2] = 0.039485
为了优化目标,需要调整 O 层及 H2 层中的网络参数。具体方法为:
- 计算输出层 (O) 的误差项:
δk = (yk - ok) * ok * (1 - ok)
其中,yk 为真实值,ok 为预测值。
- 计算隐层2 (H2) 的误差项:
δj = hj * (1 - hj) * Σ(wkj * δk)
其中,wkj 为从隐层2 (H2) 到输出层 (O) 的权重。
- 更新隐层2 (H2) 到输出层 (O) 的权重:
Δwjk = α * δk * hj
其中,α 为学习率。
- 更新隐层1 (H1) 到隐层2 (H2) 的权重:
Δwij = α * δj * xi
其中,xi 为输入值。
- 更新偏置项:
Δbj = α * δj
Δbk = α * δk
最终,通过不断地重复上述步骤,可以逐渐降低误差,优化网络参数。
原文地址: https://www.cveoy.top/t/topic/kf55 著作权归作者所有。请勿转载和采集!