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



什么事反向传播算法 反向传播算法过程


actual_y值来自训练集,而predict_y值是我们模型产生的值 。所以这次迭代的成本是-4 。
那么反向传播在哪里呢?
根据我们的例子,我们现在有一个模型没有给出准确的预测(它给我们的值是4而不是1),这归因于它的权重尚未调整(它们都等于1) 。我们也有损失,即-4 。反向传播就是以这样一种方式向后传递这种损失,我们可以根据这种方式微调权重 。优化函数(在我们的例子中为梯度下降)将帮助我们找到权重 。那就让我们开始吧!
使用以下功能进行前馈:

什么事反向传播算法 反向传播算法过程



什么事反向传播算法 反向传播算法过程


然后通过这些函数的偏导数发生反向反馈 。不需要经过经过推导这些函数的过程 。我们需要知道的是,上面的函数将遵循:

什么事反向传播算法 反向传播算法过程


其中Z是我们从前馈步骤中的激活函数计算中获得的z值,而delta是图层中单位的损失 。
我知道有很多信息一次性就能吸收,但我建议你花点时间,真正了解每一步发生了什么,然后再继续前进 。
计算增量
现在我们需要找到神经网络中每个单元/节点的损耗 。这是为什么呢?我们这样想,深度学习模型到达的每一次损失实际上是由所有节点累积到一个数字引起的 。因此,我们需要找出哪个节点对每层中的大部分损失负责,这样我们就可以通过赋予它更小的权重值来惩罚它,从而减少模型的总损失 。
计算每个单元的增量可能会有问题 。但是,感谢吴恩达先生,他给了我们整个事情的捷径公式:

什么事反向传播算法 反向传播算法过程


其中delta_0,w和f’(z)的值是相同单位的值,而delta_1是加权链接另一侧的单位损失 。例如:

什么事反向传播算法 反向传播算法过程


你可以这样想,为了获得节点的损失(例如Z0),我们将其对应的f’(z)的值乘以它在下一层(delta_1)连接的节点的损失,再乘以连接两个节点的链路的权重 。
这正是反向传播的工作原理 。我们在每个单元进行delta计算步骤,将损失反向传播到神经网络中,并找出每个节点/单元的损失 。
让我们计算一下这些增量!

什么事反向传播算法 反向传播算法过程


这里有一些注意事项:
  • 最终单位的损失(即D0)等于整个模型的损失 。这是因为它是输出单位,它的损失是所有单位的累计损失,就像我们之前说的那样 。
  • 无论输入(即z)等于什么,函数f’(z)总是给出值1 。这是因为如前所述,偏导数如下:f’(a)= 1
  • 输入节点/单位(X0,X1和X2)没有delta值,因为这些节点在神经网络中无法控制 。它们仅作为数据集和神经网络之间的一个链接 。
更新权重
现在剩下的就是更新我们在神经网络中的所有权重 。这遵循批量梯度下降公式:

什么事反向传播算法 反向传播算法过程


其中W是手头的权重,alpha是学习率(在我们的例子中是0.1),J’(W)是成本函数J(W)相对于W的偏导数 。再次强调,我们不需要进行数学运算 。因此,让我们使用吴恩达先生的函数的偏导数:

什么事反向传播算法 反向传播算法过程

推荐阅读