machine-learning - 神经网络输出变化不大

标签 machine-learning artificial-intelligence neural-network encog

我在前馈神经网络上有 20 个输出神经元,为此我已经尝试改变隐藏层的数量和每个隐藏层的神经元的数量。在测试时,我注意到虽然输出并不总是完全相同,但它们在不同测试用例之间的差异很小,尤其是彼此之间。它似乎在每个测试用例上输出几乎(在 0.0005 范围内,取决于初始权重)相同的输出;最高的永远是最高的。这有什么原因吗?

注意:我使用的是前馈神经网络,具有弹性且通用的反向传播,将训练/验证/测试和训练集之间的洗牌分开。

更新:我正在使用网络将 4 个输入的模式分类为 20 种输出可能性之一。我有 5000 个训练集、800 个验证集和 1500 个测试集。轮数可能会根据我正在做的事情而变化,在我当前的训练案例中,训练误差似乎收敛得太快(低于 20 个时期)。然而,我在其他时候注意到这种非方差,当误差在 1000 个时期内减少时。我还调整了常规传播的学习率和动量。弹性传播不使用学习率或动量进行更新。这是使用 Encog 实现的。

最佳答案

您的数据集一开始似乎就有问题。 4 个输入 20 个输出似乎太多了。输出的数量通常远小于输入的数量。最有可能的是,数据集的表述错误,或者您误解了要解决的问题中的某些内容。无论如何,关于您的其他评论的一些事情:

首先,您使用的不是 1500 个训练集,而是一组包含 1500 个训练模式的训练集。验证和测试也是如此。

其次,每次运行的输出不可能完全相同,因为权重是随机初始化的,并且输出取决于它们。但是,我们希望它们在每次运行中都相似。如果不是,则意味着它们过于依赖随机初始化,因此网络将无法正常工作。

就您的情况而言,最高输出是所选类别,因此如果每次网络运行良好时相同的输出都是最高的。

关于machine-learning - 神经网络输出变化不大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24339828/

相关文章:

machine-learning - 了解嵌入向量维度

neural-network - Tensorflow:GPU 利用率几乎始终为 0%

tensorflow - 为什么深度神经网络不能逼近简单的 ln(x) 函数?

python - 如何使用Keras API提取权重 "from input layer to hidden layer"和 "from hidden layer to output layer"?

opencv - 如何修改 C++ API 的 Caffe 网络输入?

python - 为什么我的基于 minimax 算法的 tic-tac-toe 播放器并不完美?

java - 八皇后启发式

machine-learning - 分类或回归算法模型的相关系数或特征重要性

c# - 需要帮助将一些 F# 代码转换为 C#

java - 我应该使用什么类型的树来实现 Minimax