反向传播算法过程 什么事反向传播算法( 二 )


这正是反向传播的工作原理 。我们在每个单元进行delta计算步骤,将损失反向传播到神经 *** 中,并找出每个节点/单元的损失 。
让我们计算一下这些增量!
这里有一些注意事项:
最终单位的损失(即D0)等于整个模型的损失 。这是因为它是输出单位,它的损失是所有单位的累计损失,就像我们之前说的那样 。无论输入(即z)等于什么,函数f’(z)总是给出值1 。这是因为如前所述,偏导数如下:f’(a)= 1输入节点/单位(X0,X1和X2)没有delta值,因为这些节点在神经 *** 中无法控制 。它们仅作为数据集和神经 *** 之间的一个链接 。更新权重
现在剩下的就是更新我们在神经 *** 中的所有权重 。这遵循批量梯度下降公式:
其中W是手头的权重,alpha是学习率(在我们的例子中是0.1),J’(W)是成本函数J(W)相对于W的偏导数 。再次强调,我们不需要进行数学运算 。因此,让我们使用吴恩达先生的函数的偏导数:
其中Z是通过前向传播获得的Z值,delta是加权链接另一端的单位损失:
现在用我们在每一步获得的偏导数值,和批量梯度下降权重更新所有权重 。值得强调的是,输入节点(X0,X1和X2)的Z值分别等于1,0,0 。1是偏置单元的值,而0实际上是来自数据集的特征输入值 。最后要注意的是,没有特定的顺序来更新权重 。你可以按照你想要的任何顺序更新它们,只要你不会在同一次迭代中错误地更新任何权重两次 。
为了计算新的权重,让我们给出神经 *** 名称中的链接:
新的权重计算 *** 如下:
需要注意的是,模型还没有正确训练,因为我们只通过训练集中的一个样本进行反向传播 。我们为样本做了所有我们能做的一切,这可以产生一个具有更高精度的模型,试图接近每一步的最小损失/成本 。
如果没有正确的 *** ,机器学习背后的理论真的很难掌握 。其中一个例子就是反向传播,其效果在大多数现实世界的深度学习应用程序中都是可以预见的 。反向传播只是将总损耗传回神经 *** 的一种方式,以方便人们了解每个节点的损失量,并随后通过为节点提供更高误差,进而使用损失最小化的方式来更新权重,反之亦然 。

推荐阅读