书面文章|每月
BP(后代传播)是深度学习神经网络的核心。本文显示了通过两个示例手动得出BP的过程。
1
链法是BP的核心,分为两种情况:
(1)一个 - 美元方程
对于一个 - 美元方程式,链条规则相对简单。假设存在以下两个功能:
然后,x的更改最终会影响z的值,数学符号如下:
Z上X上的差分点可以表示如下:
(2)多方面
在多个方程式的情况下,链条定律稍微复杂得多。假设存在以下三个功能:
由于S的小变化将通过G(S)和H(S)的两个路径影响Z的结果,因此目前Z上的微观得分可以表示以下:
这是链条规则的全部内容,然后使用实际示例来得出BP的特定过程。
2
制作一个简单的网络,可以与链条规则的第一种情况相对应,如下图所示:
图1
其中,圆形指示叶节点,正方形指示非叶状节点。每个非叶节点的定义如下。培训过程中的前进过程将根据这些公式进行计算:
在此示例中,我们要更新三个参数:W1,B1和W2。如果学习率用于使用LR,则其更新公式如下:
在培训开始之前,B1,W1和W2将被初始化为一定值。培训开始后,将根据以下两个步骤更新参数:
让我们看一下反向传输过程中梯度的计算过程。由于梯度值是从向后计算的,因此首先查看W2的梯度计算:
继续查看W1的梯度计算:
最后查看B1的梯度计算:
计算W2,W1,B1的梯度后,您可以根据公式(13),(14),(15)更新参数值。以下使用OneFlow来为实验设置相应的网络,根据图1。代码如下:
此代码仅向前运行,然后向后进行一次,然后调用步骤以更新参数信息,最后调用Zero_grad以清除本回合的梯度信息。操作结果如下:
3
以非常简单的转换为例。该转变的各种属性如下:
如下所示:
图2
假设本示例中的网络结构如下:
图3
在这个简单的网络中,节点z代表一个AVG模拟操作。内核为2x2,损失使用平衡错误。以下是相应的公式:
前传部分与上一节相同。它与Counter -pass过程相同。目的是找到W0,W1,W2和W3的梯度,并更新四个参数值。以下是寻求W0梯度的过程:
以下是寻求W1,W2和W3梯度的过程,并直接写出结果:
最后,根据以下公式以更新参数:
使用OneFlow构建相应的网络进行实验,根据图3,代码如下:
输出如下(输入,参数和标签的值是随机的,每个操作的结果将不同):
参考资料:
1.http://speeeeee..ntu.edu.tw/~tlkagk/courses.html
2.https://speech.ee.ntu.edu.tw/~hylee/index.php
3.https://www.youtube.com/c/hungyilentu
欢迎体验Oneflow v0.7.0的最新版本:https://github.com/oneflow-ic/oneflow/
原始:https://juejin.cn/post/7097115672039129101