PyTorch 教程-深度神经网络中的反向传播过程
反向传播是神经网络的一个重要概念。我们的任务是尽可能准确地分类数据。为此,我们需要更新参数的权重和偏差值,但在深度神经网络中,我们如何做到这一点?在线性回归模型中,我们使用梯度下降来优化参数。类似地,在这里我们也使用梯度下降算法,结合反向传播。
对于单个训练样本,反向传播算法计算误差函数的梯度。反向传播可以写成神经网络的一个函数。反向传播算法是一组方法,用于有效地训练人工神经网络,遵循梯度下降方法,利用链式法则。
反向传播的主要特点是迭代、递归和高效的方法,通过这种方法计算更新的权重,以改进网络,直到它能够执行其正在训练的任务。网络设计时需要知道激活函数的导数,这是反向传播所需的。
那么,误差函数在反向传播中是如何使用的,反向传播是如何工作的呢?让我们从一个例子开始,通过数学方式来理解反向传播如何准确地更新权重。
输入值
X1=0.05 X2=0.10
初始权重
W1=0.15 W2=0.20 W3=0.25 W4=0.30 w5=0.40 w6=0.45 w7=0.50 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
👉点击领取:最全Python资料合集
我们将以与H1相同的方式计算H2的值:
H2=x1×w3+x2×w4+b1 H2=0.05×0.25+0.10×0.30+0.35 H2=0.3925
现在,我们将以与计算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相同的方式计算y2的值:
y2=H1×w7+H2×w8+b2 y2=0.593269992×0.50+0.596884378×0.55+0.60 y2=1.2249214
我们的目标值是0.01和0.99。我们的y1和y2值与我们的目标值T1和T2不匹配。
现在,我们将通过反向传播来更新权重。
输出层的反向传播
同样的方式,我们计算w6new、w7new和w8new,得到以下值:
w5new=0.35891648 w6new=408666186 w7new=0.511301270 w8new=0.561370121
隐藏层的反向传播
现在,我们将进行反向传播到我们的隐藏层,并更新权重w1、w2、w3和w4,就像我们对w5、w6、w7和w8权重所做的那样。
现在,通过将值放入方程(18)和(19)中,我们找到了的值
现在从方程(16)和(17)得到
以相同的方式,我们计算w2new,w3new和w4new,得到以下值
w1new=0.149780716 w2new=0.19956143 w3new=0.24975114 w4new=0.29950229
热门推荐