我最近开始实现一个前馈神经网络,我使用反向传播作为学习方法。我一直在使用http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html作为指南。
然而,在第一个时代之后,我的错误是 0。在将网络用于我的真正目的之前,我尝试了简单的网络结构:
- 4 个二进制输入,1、1、0、0。
- 2 个隐藏层,每层 4 个神经元。
- 1 个输出神经元,1.0 应该 = 有效输入。
每个训练 epoch 运行测试输入 (1, 1, 0, 0),计算输出误差(sigmoid 导数 * (1.0 - sigmoid)),反向传播误差并最终调整权重。
每个神经元的新权重 = 权重 + learning_rate * 神经元的误差 * 权重的输入。
每个隐藏神经元的误差 =(所有输出神经元的误差之和 * 连接权重)* 神经元的 sigmoid 导数。
问题是我的学习率必须为 0.0001,我才能看到在降低错误方面的时期之间的任何“进展”。在这种情况下,错误开始于 ~30.0.0 左右。任何更大的学习率和错误在第一次通过后都会导致 0,从而导致误报。
此外,当我使用我的真实数据(来自样本的一组 32 个音频特征 - 每个隐藏层 32 个神经元)尝试这个网络时 -我遇到了同样的问题。到了任何噪音都会触发误报的地步。可能这可能是输入功能问题,但当我使用高音进行测试时,我可以清楚地看到原始数据与低音不同。
我是神经网络新手,所以我几乎可以肯定问题出在我的网络上。任何帮助将不胜感激。