神经网络输出变化不大

我有一个前馈神经网络,包含20个输出神经元,我已经尝试过改变隐藏层的数量和每个隐藏层的神经元数量。在测试过程中,我注意到虽然输出并不总是完全相同,但它们在不同测试案例之间的变化非常小,尤其是在彼此之间的对比中。似乎在每个测试案例中,输出几乎(取决于初始权重,在0.0005以内)是相同的;最高的那个总是最高的。为什么会这样呢?

注意:我使用的是前馈神经网络,采用了弹性和常规的反向传播,训练/验证/测试是分开进行的,并且在训练集之间进行了洗牌。

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


回答:

你的数据集从一开始就似乎有问题。4个输入对应20个输出似乎太多了。输出的数量通常远小于输入的数量。很可能,要么是数据集的表述有误,要么是你对你试图解决的问题有什么误解。无论如何,关于你其他评论的一些事情:

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

其次,输出不可能在每次运行时完全相同,因为权重是随机初始化的,输出取决于它们。然而,我们希望它们在每次运行时相似。如果它们不相似,就意味着它们过度依赖于随机初始化,那么网络就不会运作良好。

在你的情况下,最高的输出是选定的类别,所以如果每次最高的输出都是相同的,那么你的网络运作良好。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注