📅  最后修改于: 2020-11-11 00:53:10             🧑  作者: Mango
反向传播是神经网络的重要概念之一。我们的任务是最好地对数据进行分类。为此,我们必须更新参数和偏差的权重,但是如何在深度神经网络中做到这一点呢?在线性回归模型中,我们使用梯度下降来优化参数。同样,在这里,我们也使用使用反向传播的梯度下降算法。
对于单个训练示例,反向传播算法将计算误差函数的梯度。反向传播可以写为神经网络的函数。反向传播算法是用于遵循梯度下降方法(利用链规则)有效训练人工神经网络的一组方法。
反向传播的主要特征是一种迭代,递归和有效的方法,通过该方法,它可以计算更新的权重以改善网络,直到无法执行要对其进行训练的任务为止。反向传播需要在网络设计时已知的激活函数的衍生物。
现在,如何在反向传播中使用误差函数,以及反向传播如何工作?让我们从一个示例开始,并以数学方式进行操作,以了解如何使用反向传播准确地更新权重。
X1 = 0.05 X2 = 0.10
W1 = 0.15 w5 = 0.40 W2 = 0.20 w6 = 0.45 W3 = 0.25 w7 = 0.50 W4 = 0.30 w8 = 0.55
b1 = 0.35 b2 = 0.60
T1 = 0.01 T2 = 0.99
现在,我们首先通过前向通过计算H1和H2的值。
为了找到H1的值,我们首先将权重的输入值乘以
H1 = x1×w1 + x2×w2 + b1 H1 = 0.05×0.15 + 0.10×0.20 + 0.35 H1 = 0.3775
为了计算H1的最终结果,我们执行了S型函数
我们将以与H1相同的方式计算H2的值
H2 = x1×w3 + x2×w4 + b1 H2 = 0.05×0.25 + 0.10×0.30 + 0.35 H2 = 0.3925
为了计算H1的最终结果,我们执行了S型函数
现在,我们以与计算H1和H2相同的方式计算y1和y2的值。
为了找到y1的值,我们首先将输入值即H1和H2的权重乘以
y1 = H1×w5 + H2×w6 + b2 y1 = 0.593269992×0.40 + 0.596884378×0.45 + 0.60 y1 = 1.10590597
为了计算y1的最终结果,我们执行了S型函数
我们将以与y1相同的方式计算y2的值
y2 = H1×w7 + H2×w8 + b2 y2 = 0.593269992×0.50 + 0.596884378×0.55 + 0.60 y2 = 1.2249214
为了计算H1的最终结果,我们执行了S型函数
我们的目标值为0.01和0.99。 y1和y2的值与目标值T1和T2不匹配。
现在,我们将找到总误差,这仅仅是目标输出与输出之间的差异。总误差计算为
因此,总误差为
现在,我们将向后传播该错误,以使用向后传递来更新权重。
为了更新权重,我们借助总误差来计算与每个权重相对应的误差。重量w的误差是通过将总误差相对于w进行微分来计算的。
我们执行向后处理,因此首先考虑最后权重w5为
从等式二,很明显我们不能相对于w5部分区分它,因为没有w5。我们将等式1分解为多个项,以便我们可以轻松地将w5区分为
现在,我们逐项计算每个项,以将关于w5的Etotal区分为
将ey的值放在等式(5)中
因此,我们将方程(3)中的值放在最后的结果中。
现在,我们将借助以下公式计算更新后的重量w5new
以同样的方式,我们计算w6new,w7new和w8new,这将为我们提供以下值
w5new = 0.35891648 w6new = 408666186 w7new = 0.511301270 w8new = 0.561370121
现在,我们将向后传播到隐藏层,并像对w5,w6,w7和w8权重所做的那样更新权重w1,w2,w3和w4。
我们将计算在w1处的误差为
从等式(2),很明显我们不能相对于w1进行部分微分,因为没有w1。我们将等式(1)分成多个项,以便我们可以轻松地将w1区分为
现在,我们逐项计算每个项,以将关于w1的Etotal区分为
我们再次将其拆分,因为在Etoatal中没有任何H1final术语,因为
将会再次分裂,因为在E1和E2中没有H1项。拆分完成
我们再次拆分两者,因为E1和E2中没有任何y1和y2项。我们将其拆分为
现在,通过将等式(18)和(19)中的值放在
从等式(18)
从等式(8)
从等式(19)
将e-y2的值代入公式(23)
从等式(21)
现在从等式(16)和(17)
将等式(15)中的值设为
我们需要弄清楚
将e-H1的值代入公式(30)
我们计算相对于w1的H1的总净输入的偏导数,与对输出神经元所做的计算相同:
因此,我们将等式(13)中的值放入以找到最终结果。
现在,我们将借助以下公式计算更新后的重量w1new
以同样的方式,我们计算w2new,w3new和w4,这将为我们提供以下值
w1new = 0.149780716 w2new = 0.19956143 w3new = 0.24975114 w4new = 0.29950229
我们已经更新了所有权重。前馈0.05和0.1输入时,我们在网络上发现错误0.298371109。在第一轮反向传播中,总误差降至0.291027924。重复此过程10,000后,总误差降至0.0000351085。在这一点上,当我们前馈0.05和0.1时,输出神经元生成0.159121960和0.984065734,即接近我们的目标值。