📜  了解多层前馈网络

📅  最后修改于: 2022-05-13 01:56:11.953000             🧑  作者: Mango

了解多层前馈网络

让我们了解如何在反向传播网络 (BPN) 中计算误差和更新权重。

考虑下图中的以下网络。

反向传播网络(BPN)

上图中的网络是一个简单的多层前馈网络或反向传播网络。它包含三层,具有两个神经元 x 1和 x 2的输入层,具有两个神经元 z 1和 z 2的隐藏层以及具有一个神经元 y in 的输出层。

现在让我们写下每个神经元的权重和偏置向量。

注意:权重是随机取的。

输入层: i/p – [x 1 x 2 ] = [0 1]

这里因为它是输入层,所以只存在输入值。

隐藏层: z 1 – [v 11 v 21 v 01 ] = [0.6 -0.1 03]

这里 v 11是指第一个输入 x 1在 z 1上的权重,v 21是指第二个输入 x 2在 z 1上的权重,v 01是指 z 1上的偏差值。

z 2 – [v 12 v 22 v 02 ] = [-0.3 0.4 0.5]

这里 v 12是指第一个输入 x 1在 z 2上的权重,v 22是指第二个输入 x 2在 z 2上的权重,v 02是指 z 2上的偏差值。

输出层: y in – [w 11 w 21 w 01 ] = [0.4 0.1 -0.2]

这里w 11是指第一个神经元z 1在y in上的隐藏层中的权重,w 21是指第二个神经元z 2在y in上的隐藏层中的权重,w 01是指在y in上的偏差值。让我们考虑三个变量,k 表示输出层中的神经元,“j”表示隐藏层中的神经元,“i”表示输入层中的神经元。

所以,

k = 1

j = 1, 2(表示隐藏层中的第一个神经元和第二个神经元)

i = 1, 2(表示输入层中的第一个和第二个神经元)

以下是 BPN 中要遵循的一些条件。

条件/约束:

  1. 在 BPN 中,使用的激活函数应该是可微的。
  2. 偏差的输入始终为 1。

为了解决这个问题,让:

目标值,t = 1

学习率,α = 0.25

激活函数= 二元 sigmoid函数

二元 sigmoid函数, f(x) = (1+e -x ) -1 eq. (1)

并且,f'(x) = f(x)[1-f(x)] 等式。 (2)

解决问题分为三个步骤:

  1. 计算输出,y。
  2. 误差的反向传播,即在输出层和隐藏层之间、隐藏层和输入层之间。
  3. 更新权重。

第1步:

值 y 是通过在 中找到 y 并应用激活函数来计算的。

y in计算如下:

y in = w 01 + z 1 *w 11 + z 2 *w 21 eq。 (3)

这里,z 1和 z 2是来自隐藏层的值,通过找到 z in1 ,z in2并对它们应用激活函数来计算。

z in1和 z in2计算如下:

z in1 = v 01 + x 1 *v 11 + x 2 *v 21 eq。 (4)

z in2 = v 02 + x 1 *v 12 + x 2 *v 22 eq。 (5)

从 (4)

z in1 = 0.3 + 0*0.6 + 1*(-0.1)

z in1 = 0.2

z 1 = f(z in1 ) = (1+e -0.2 ) -1从 (1)

z 1 = 0.5498

从 (5)

z in2 = 0.5 + 0*(-0.3) + 1*0.4

z in2 = 0.9

z 2 = f(z in2 ) = (1+e -0.9 ) -1从 (1)

z 2 = 0.7109

从 (3)

y in = (-0.2) + 0.5498*0.4 + 0.7109*0.1

y in = 0.0910

y = f(y in ) = (1+e -0.0910 ) -1从 (1)

y = 0.5227

这里,y 不等于目标 't',即 1。我们继续计算误差,然后根据它们更新权重以达到目标值。

第2步:

(a) 计算输出和隐藏层之间的误差

输出层和隐藏层之间的误差表示为 δ k ,其中 k 表示如上所述的输出层中的神经元。误差计算如下:

δ k = (t k – y k ) * f'(y ink ) 等式。 (6)

其中, f'(y ink ) = f(y ink )[1 – f(y ink )] 从 (2)

由于 k = 1(如上假设),

δ = (t – y) f'(y in ) 等式。 (7)

其中,f'(y in ) = f(y in )[1 – f(y in )]

f'(y in ) = 0.5227[1 – 0.5227]

f'(y in ) = 0.2495

所以,

δ = (1 – 0.5227) * 0.2495 从 (7)

δ = 0.1191,是误差

注意:(Target – Output) 即 (t – y) 是输出中的误差而不是层中的误差。层中的错误是由不同的因素造成的,如权重和偏差。

(b) 计算隐藏层和输入层之间的误差

隐藏层和输入层之间的误差表示为 δ j ,其中 j 表示隐藏层中神经元的数量,如上所述。误差计算如下:

δ j = δ inj * f'(z inj ) 等式。 (8)

在哪里,

δ inj = ∑ k=1 到 nk * w jk ) eq. (9)

f'(z inj ) = f(z inj )[1 – f(z inj )] 等式。 (10)

由于 k = 1(以上假设) eq。 (9) 变为:

δ inj = δ * w j1 eq. (11)

当 j = 1, 2 时,每个神经元都有一个误差值,总共有 2 个误差值。

δ 1 = δ in1 * f'(z in1 ) 等式。 (12), 从 (8)

δ in1 = δ * w 11从 (11)

δ in1 = 0.1191 * 0.4 来自权重向量

δ in1 = 0.04764

f'(z in1 ) = f(z in1 )[1 – f(z in1 )]

f'(z in1 ) = 0.5498[1 – 0.5498] 如 f(z in1 ) = z 1

f'(z in1 ) = 0.2475

代入 (12)

δ 1 = 0.04674 * 0.2475 = 0.0118

δ 2 = δ in2 * f'(z in2 ) 等式。 (13), 从 (8)

δ in2 = δ * w 21从 (11)

δ in2 = 0.1191 * 0.1 来自权重向量

δ in2 = 0.0119

f'(z in2 ) = f(z in2 )[1 – f(z in2 )]

f'(z in2 ) = 0.7109[1 – 0.7109] 如 f(z in2 ) = z 2

f'(z in2 ) = 0.2055

代入 (13)

δ 2 = 0.0119 * 0.2055 = 0.00245

已经计算了误差,必须使用这些误差值更新权重。

第 3 步:

更新输出层权重的公式为:

w jk (新) = w jk (旧) + Δw jk eq. (14)

其中,Δw jk = α * δ k * z j eq。 (15)

由于 k = 1,(15) 变为:

Δw jk = α * δ * z i eq. (16)                             

隐藏层权重更新公式为:

v ij (新)= v ij (旧)+ Δv ij eq。 (17)

其中, Δvi = α * δ j * x i eq。 (18)

从 (14) 和 (16)

w 11 (新) = w 11 (旧) + Δw 11 = 0.4 + α * δ * z 1 = 0.4 + 0.25 * 0.1191 * 0.5498 = 0.4164

w 21 (新) = w 21 (旧) + Δw 21 = 0.1 + α * δ * z 2 = 0.1 + 0.25 * 0.1191 * 0.7109 = 0.12117

w 01 (new) = w 01 (old) + Δw 01 = (-0.2) + α * δ * bias = (-0.2) + 0.25 * 0.1191 * 1 = -0.1709,请注意这里取的 1 是考虑的输入根据条件偏向。

这些是输出层的更新权重。

从 (17) 和 (18)

v 11 (新)= v 11 (旧)+ Δv 11 = 0.6 + α * δ 1 * x 1 = 0.6 + 0.25 * 0.0118 * 0 = 0.6

v 21 (新)= v 21 (旧)+ Δv 21 = (-0.1) + α * δ 1 * x 2 = (-0.1) + 0.25 * 0.0118 * 1 = 0.00295

v 01 (新)= v 01 (旧)+ Δv 01 = 0.3 + α * δ 1 * 偏差 = 0.3 + 0.25 * 0.0118 * 1 = 0.00295,请注意此处采用的 1 是根据条件考虑偏差的输入。

v 12 (新)= v 12 (旧)+ Δv 12 = (-0.3) + α * δ 2 * x 1 = (-0.3) + 0.25 * 0.00245 * 0 = -0.3

v 22 (新)= v 22 (旧)+ Δv 22 = 0.4 + α * δ 2 * x 2 = 0.4 + 0.25 * 0.00245 * 1 = 0.400612

v 02 (新)= v 02 (旧)+ Δv 02 = 0.5 + α * δ 2 * 偏差 = 0.5 + 0.25 * 0.00245 * 1 = 0.500612,请注意此处采用的 1 是根据条件考虑偏差的输入。

这些都是隐藏层的更新权重。

重复这三个步骤,直到输出“y”等于目标“t”。

这就是 BPN 的工作方式。 BPN中的反向传播是指利用当前层的误差通过反向传播误差值来更新当前层和前一层之间的权重。