我在前馈神经网络上有 20 个输出神经元,为此我已经尝试改变隐藏层的数量和每个隐藏层的神经元的数量。在测试时,我注意到虽然输出并不总是完全相同,但它们在不同测试用例之间的差异很小,尤其是彼此之间。它似乎在每个测试用例上输出几乎(在 0.0005 范围内,取决于初始权重)相同的输出;最高的永远是最高的。这有什么原因吗?
注意:我使用的是前馈神经网络,具有弹性且通用的反向传播,将训练/验证/测试和训练集之间的洗牌分开。
更新:我正在使用网络将 4 个输入的模式分类为 20 种输出可能性之一。我有 5000 个训练集、800 个验证集和 1500 个测试集。轮数可能会根据我正在做的事情而变化,在我当前的训练案例中,训练误差似乎收敛得太快(低于 20 个时期)。然而,我在其他时候注意到这种非方差,当误差在 1000 个时期内减少时。我还调整了常规传播的学习率和动量。弹性传播不使用学习率或动量进行更新。这是使用 Encog 实现的。
最佳答案
您的数据集一开始似乎就有问题。 4 个输入 20 个输出似乎太多了。输出的数量通常远小于输入的数量。最有可能的是,数据集的表述错误,或者您误解了要解决的问题中的某些内容。无论如何,关于您的其他评论的一些事情:
首先,您使用的不是 1500 个训练集,而是一组包含 1500 个训练模式的训练集。验证和测试也是如此。
其次,每次运行的输出不可能完全相同,因为权重是随机初始化的,并且输出取决于它们。但是,我们希望它们在每次运行中都相似。如果不是,则意味着它们过于依赖随机初始化,因此网络将无法正常工作。
就您的情况而言,最高输出是所选类别,因此如果每次网络运行良好时相同的输出都是最高的。
关于machine-learning - 神经网络输出变化不大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24339828/