【神经网络】python实现神经网络(四)——误差反向流传的基础理论
一.反向流传本章将先容可以或许高效计算权重参数的梯度的方法——误差反向流传法,这里简单先容一下什么是反向流传,加入有个函数y = f(x),那么它的反向流传为图下这个样子:
https://i-blog.csdnimg.cn/direct/392a229d08d844be84140cf90b2d2eaa.png
反向流传的计算次序是,将输入信号E乘以节点的局部导数,然后将结果传递给下一个节点。这里所说的局部导数是指正向流传中y = f(x) 的导数,也就是y 关于x的导数。比如,假设y = f(x) = x^2,则局部导数为= 2x。把这个局部导数乘以上游传过来的值(本例中为E),然后传递给前面的节点。
二.加法的反向流传
这里以z = x + y 为对象来观察它的反向流传,z = x + y的导数可由下式计算出来:
https://i-blog.csdnimg.cn/direct/dbe91d5a1e264478a6267e494fdcba9b.png
使用计算图表示则如下图:
https://i-blog.csdnimg.cn/direct/c3da1987dea04bfe83e16dea8d93b955.png
可以观察到,反向流传将从上游传过来的导数乘以1,然后传向下游。也就是说,加法节点的反向流传只乘以1,以是输入的值会原封不动地流向下一个节点。
三.乘法的反向流传
接下来,我们看一下乘法节点的反向流传。这里我们考虑z = xy。这个式子的导数用图下表示。
https://i-blog.csdnimg.cn/direct/66cf88d1337e42d4bc92f1381fb22599.png
乘法的反向流传会将上游的值乘以正向流传时的输入信号的“翻转值”后传递给下游。如下图所示:
https://i-blog.csdnimg.cn/direct/3bc65524910b4398b056cfe4655088cb.png
正向流传时信号是x的话,反向流传时则是y;正向流传时信号是y 的话
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]