首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

反向传播简单实例

反向传播是神经网络训练的一个重要步骤,通过以下简单实例,一步步推导计算,加深对其原理的理解。

如下图我们构建了一个简单的神经网络,其中绿色方框(1,2)代表输入,蓝色圆点(3,4)代表隐藏层,蓝色圆点(5,6)代表输出层,红色原点(0)是偏置。在进行前向传播(feed-forward)之前,我们对所有权重和偏置进行初始化。其中Wij下标i,j代表的是从点i到点j的权重。初始输入是0.05和0.10, 目标输出是0.01和0.99,学习率为0.5。

符号定义如下:

1.前向传播:

先计算点3的输入:

经过激活函数后的输出:

同理我们可以得到点4的输出:

将隐藏层的输出作为输出层的输入,重复计算,得出圆点5和圆点6经过激活函数后的输出:

计算总错误:

2.后向传播:

后向传播的目的就是要更新权重使得实际输出和目标输出更接近,从而最小化每个输出层神经元的错误。

首先我们考虑W35改变多少能影响到总错误,也就是求总错误E对W35的偏微分。根据求导链式法则:

具体计算如下:

Logistic function求导:

则:

以及:

最后汇总如下:

不妨令:

则更新W35如下

同理可得:

接下来继续计算W13,W14,W23,W24。例如W13的改变受到来自E1和E2的错误影响。

要计算上式子,需要分别计算三部分,第一部分如下:

(1)该部分由两部分误差所组成,需要再细分计算如下:

同理我们可以得出E2相应部分的结果:

综上,第一部分的计算结果是:

(2)接下来,第二和第三部分的结果易得:

(3)整合得总错误对权重W13的偏微分是:

(4)相应的权重更新结果是:

其余权重更新结果是:

附上伪代码:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181030G0JTLK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券