神经网络的响应是否能保证在训练数据上有效?

我正在尝试训练一个人工神经网络 (我使用这个库: http://leenissen.dk/fann/ ),但结果有些令人困惑 – 基本上,如果我在用于训练的相同数据上运行训练好的网络,输出不是训练集中指定的值,而是一些随机数。

例如,训练文件中的第一个条目是这样的:

88.757004 88.757004 104.487999 138.156006 100.556000 86.309998 86.788002 1

其中第一行是输入值,第二行是期望的输出神经元的值。但是,当我将完全相同的数据馈送到训练好的网络时,每次训练尝试都会得到不同的结果,并且这些结果与 1 大相径庭,例如:

Max epochs   500000. Desired error: 0.0010000000.Epochs            1. Current error: 0.0686412785. Bit fail 24.Epochs          842. Current error: 0.0008697828. Bit fail 0.my test result -4052122560819626000.000000

然后在另一次尝试中:

Max epochs   500000. Desired error: 0.0010000000.Epochs            1. Current error: 0.0610717005. Bit fail 24.Epochs          472. Current error: 0.0009952184. Bit fail 0.my test result -0.001642

我知道训练集的大小可能不足(到目前为止我只有大约 100 个输入/输出对),但至少训练数据不应该触发正确的输出值吗?相同的代码对于 FANN 网站上描述的“入门”XOR 函数工作正常(我已经用完了我的 1 个链接限制)


回答:

简短的回答:不能

更长的回答(但可能不那么正确):

首先:训练运行只会将神经元的权重移动到它们影响输出的到测试数据中值的方向。经过一些/多次迭代后,输出应该接近期望的输出。如果神经网络能够胜任这项任务,这就引出了

第二点:并非每个神经网络都适用于每个问题。对于单个神经元,很容易想出一个简单的函数,该函数不能用单个神经元来近似。虽然不容易看出,但同样的限制适用于每个神经网络。在这种情况下,您的结果很可能看起来像随机数。评论后编辑:在许多情况下,可以通过向网络添加神经元来解决这个问题。

第三点:实际上,第一点是神经网络的优势,因为它允许网络很好地处理异常值。

第四点:我将我对音乐缺乏理解归咎于第 3 点。它根本不适合我的大脑 😉

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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