【问题标题】:Neural Network - trained model produces inconsistent results against validation data神经网络 - 训练模型产生与验证数据不一致的结果
【发布时间】:2017-12-25 08:55:50
【问题描述】:

我正在学习神经网络。

我有一个脚本,它接收一些数据并通过神经网络创建一个模型。当我针对验证数据集测试模型时,我得到了一些结果。如果我再次针对相同的验证集重新测试它,我会不断得到不同的结果。

这是有意的行为还是我可能做错了什么?

无论其价值如何,我都在使用带有this library 的 Node v7.10.0。

【问题讨论】:

  • 在某个地方,每当您重新验证时,您的种子值都会发生变化(随机值)。设置种子,你会得到相同的结果。

标签: javascript machine-learning neural-network


【解决方案1】:

神经网络通常使用小批量梯度下降进行训练,其中随机选择小批量训练示例来执行梯度下降步骤。这为训练增加了一些随机性。

此外,神经网络的权重和偏差通常是随机初始化的(在您的代码中,它是在以下几行完成的:https://github.com/harthur/brain/blob/master/lib/neuralnetwork.js#L36https://github.com/harthur/brain/blob/master/lib/neuralnetwork.js#L42),这也为训练增加了一些随机性。

为了解决随机性,我们通常使用种子(参见What is a seed in terms of generating a random number?)。不幸的是,无法为 javascript 随机数生成器设置种子(参见 Seeding the random number generator in Javascript),但似乎可以创建自己的随机数生成器。

最后得到不同的结果是正常的,但这些结果应该与你得到的第一个结果相差不大。

【讨论】:

    猜你喜欢
    • 2018-05-06
    • 2012-09-13
    • 1970-01-01
    • 2017-04-22
    • 2019-09-15
    • 1970-01-01
    • 2020-08-24
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多