这是关于神经网络性能的更高级别的问题。我遇到的问题是,每层神经元数量越多,网络就会频繁完成愚蠢。它们不一致;当层数超过60个神经元(总是3层)时,似乎普遍成功与失败的概率约为50/50。
我通过向具有10-200的大小的输入和隐藏层的网络传授相同的功能来测试这一点。成功率为0-1%或90 +%,但两者之间没有任何关系。为了帮助想象这一点,我画了它。失败是在5k次训练迭代之后对200个数据集的不正确响应的总计数。
我认为同样重要的是要注意网络成功或失败的数字会因实验的每次运行而发生变化。我想出的唯一可能的罪魁祸首是当地最小值(但不要让这影响你的答案,我是新手,并且最初尝试将局部极小值的可能性降至最低似乎没有效果。)
所以,最终的问题是,什么可能导致这种行为?为什么这件事情如此疯狂地不一致?
Python代码在Github上,生成此图的代码是test.py中的testHugeNetwork方法(第172行)。如果网络算法的任何特定部分有用,我很乐意发布相关的片段。
答案 0 :(得分:0)
我的猜测是,你的网络在一个锯齿状的错误表面上大量振荡。尝试较低的错误率可能会有所帮助。但首先,您可以采取一些措施来更好地了解您的网络正在做什么:
ANN训练的一个主要问题是S形函数的饱和。对于逻辑函数和tanh的渐近线,导数接近于0,在数值上它甚至可能 为零。因此,网络只会慢慢学习或根本不学习。当sigmoid的输入太大时会出现此问题,以下是您可以采取的措施:
如果您需要进一步澄清,请与我们联系。