Python中的反向传播
可以试用编写的Python脚本,该脚本在此Github存储库中实现了反向传播算法。
反向传播代码:https://github.com/mattm/simple-neural-network
反向传播可视化
要获得显示神经网络的交互式可视化效果,请查看神经网络可视化:
http://www.emergentmind.com/neural-network
总览
在本教程中,我们将使用具有两个输入,两个隐藏的神经元,两个输出神经元的神经网络。另外,隐藏和输出的神经元将包括偏差。
基本结构如下:
![638a1c5b0f2a7adf7aa223ce9c550778.png](https://i-blog.csdnimg.cn/blog_migrate/a7ef99c7007b155c96daa51fb18af466.jpeg)
为了获得一些数字,下面是初始权重,偏差和训练输入/输出:
![490cfa9db8728ec6ebaa239d18b25433.png](https://i-blog.csdnimg.cn/blog_migrate/da7a19eb143a05ec0a45da8fe5aaa565.jpeg)
反向传播的目标是优化权重,以便神经网络可以学习如何正确地将任意输入映射到输出。
对于本教程的其余部分,我们将使用单个训练集:给定输入0.05和0.10,我们希望神经网络输出0.01和0.99。
前进通道
首先,让我们看看在上述权重和偏差以及输入为0.05和0.10的情况下,神经网络目前预测的结果。
为此,我们将通过网络提供这些输入。我们计算出每个隐含层神经元的总输入,使用激活函数(这里我们使用逻辑函数)压缩总输入,然后对输出层神经元重复这个过程。
![69854e9cf81e57ba9adf595c6055e6a9.png](https://i-blog.csdnimg.cn/blog_migrate/69023ccd3ef89439018000ed33df0dc0.jpeg)
![df6f4a47b2c6a0a8564ece3d44236342.png](https://i-blog.csdnimg.cn/blog_migrate/7144fdcba3e821ae1e6ae21c53f05e4c.jpeg)
计算总误差
现在,我们可以使用平方误差函数计算每个输出神经元的误差,并对它们求和以获得总误差:
![b3e698ba0962b87acb0ad0c6ab0cea12.png](https://i-blog.csdnimg.cn/blog_migrate/baac565da31cff2e6642df0bd69b2128.jpeg)
该1/2包括在内,以便我们以后区分该指数被取消。无论如何,最终结果还是要乘以学习率,因此我们在此处引入常数[ 1 ] 都没关系。
![67fc97dac8a1a757d02185ea8d1e760d.png](https://i-blog.csdnimg.cn/blog_migrate/b5f96b44d1303b5d8ca5b9eae54a4b48.jpeg)
向后通行
我们反向传播的目标是更新网络中的每个权重,以便它们使实际输出更接近目标输出,从而将每个输出神经元和整个网络的误差最小化。
输出层
![707759ca76f7e097e6a8932c65505f34.png](https://i-blog.csdnimg.cn/blog_migrate/aeca9e7cdb8c5cc7aace6d5465ea01b5.jpeg)
![6a35185bbe72abbbe34cc13867dc509d.png](https://i-blog.csdnimg.cn/blog_migrate/0b2a7fe065e41ac84854afe02de03abd.jpeg)
![d5e67cd578ec265f53da1232a82d17bd.png](https://i-blog.csdnimg.cn/blog_migrate/e6d71b25acf4a7b3c358ba5380bd0756.jpeg)
![e2e80b569fc4d704cbc4ff11e5fa7ab9.png](https://i-blog.csdnimg.cn/blog_migrate/319ded82d048828ad2e23b71d3666164.jpeg)
![96354a0eea11e156c22cc8afcf6b3b28.png](https://i-blog.csdnimg.cn/blog_migrate/8b564c13fb576303f2c7f21664e4272c.jpeg)
![e6733c64ae94810a3973c884eeea61ce.png](https://i-blog.csdnimg.cn/blog_migrate/79f340ef01da7ab130789819d5ff8506.jpeg)
![88cd7e0aaee40cd5ed578be78f0a77b5.png](https://i-blog.csdnimg.cn/blog_migrate/49ec5a4c63b989bc5d84dd632cbf55ef.jpeg)
![a45a1c3c613d618673126abcb2a4f84c.png](https://i-blog.csdnimg.cn/blog_migrate/91bc3282e19f0c8e55c82ea1e5f8ce42.jpeg)
![54af497af6768f825a6e2b1b945ef307.png](https://i-blog.csdnimg.cn/blog_migrate/f5145acef42fc4bfa69f3cb36cc70ae7.jpeg)
![e8a88e0c99b68fe77d228e6821c27435.png](https://i-blog.csdnimg.cn/blog_migrate/2a4b0e81b96544707fff93c79ac04587.jpeg)
![08536f86476725c48436f0fee6b6ede3.png](https://i-blog.csdnimg.cn/blog_migrate/21ba45418c66854de4ec872b073eb365.jpeg)