【问题标题】:Will a neural network, having randomized weights, give the same prediction rate every time?具有随机权重的神经网络每次都会给出相同的预测率吗?
【发布时间】:2023-03-26 09:00:02
【问题描述】:

对于具有随机权重的输入,我的预测效率会改变吗? 另外我还没有考虑我的网络中的偏差,这是否可能是效率较低的原因(我对 200 个示例的训练数据的预测率为 93%,对于由 100 个示例组成的测试数据的预测率为 90%。我采用了学习率为 0.01,误差阈值为 0.005。我采用了反向传播算法)

【问题讨论】:

  • 这真的很难理解你在问什么,标题询问可重复性,问题本身没有 - 这里的实际问题是什么?
  • 所以随机权重:你的意思是随机初始权重分配,这通常在神经网络中完成(权重取自特定的随机分布)。另外,90% 的测试准确率很差吗?我们不能说。如果您的数据不太难,可能 93% 的训练准确率很差。
  • 如果我将您的问题标题视为整个问题(无论如何问题的主体没有意义(那么答案是否定的。

标签: matlab neural-network


【解决方案1】:

如果您使用的是神经网络,那么您的预测效率(我宁愿称之为准确性)通常会降低。

我会以这种方式解释它。

神经网络训练其权重和偏差以获得给定输入集(训练数据)的所需输出。神经网络使用反向传播算法来获得一组在给定一定数量的迭代(epochs)的情况下对于网络“最”最优的权重。

当您在测试数据集上测试网络的预测准确性时,您更喜欢经过训练的权重和偏差(通过在训练数据集上训练神经网络获得),因为它们已经过训练以生成所需的结果(输出)。如果您在随机权重和偏差上测试网络的预测准确度,您的预测准确度通常较低,并且可能在较大范围内变化。

您可能会惊讶地发现,您在具有随机权重的测试数据集上的预测准确度高于在训练数据集上训练的权重和偏差所预测的准确度。尽管这种情况很少见,但它可能会发生,在这种情况下,随机权重接近网络的最佳权重。

总而言之,最好在经过训练的权重和偏差而不是随机权重上测试您的网络。否则,机器学习算法的目的是什么。

【讨论】:

  • 我很确定这不是 OP 所要求的,请查看问题标题。他的问题中没有任何内容表明他想在训练后和测试前随机化权重。
  • @lejlot。他的问题似乎有点奇怪。问题的标题和正文是不同的。我应该删除我的答案
【解决方案2】:

如前所述:具有随机权重的网络是未经训练的网络。如果它在随机权重方面具有良好的准确性,那只是偶然。

如果您将中性网络,尤其是反向传播视为函数的优化过程

f(x) = mx + b

目标是为所有训练集找到最佳匹配线。

初始步骤是为 m 和 b 选择一个随机值。通过随机初始化的疯狂猜测,这条线接近最优匹配的概率非常小。

反向传播的目标是通过将当前设置的误差传播回网络来确定 m 和 b 的最佳设置,并对其进行调整,直到找到可接受的设置。调整是通过梯度下降来完成的,梯度下降用于找到由所有训练样本的输出与目标值之间的差异所产生的误差面的最小值。

如果这不是您的问题的意思,并且您询问初始随机权重对训练结果的影响:

这取决于您要优化的功能。如果误差表面是非凸的(大多数情况下都是如此),则初始值定义了梯度下降的起点,因此会影响训练结果。

将误差表面想象成具有多个山谷的山地景观。梯度下降的目标是到达这些山谷之一,在最好的情况下,到达最深的一个,即全局最小值。由于梯度下降通常倾向于陷入第一次找到的最小值(取决于学习率和动量),所以答案是否定的。找到的最小值取决于起始位置。因此,您通常会在不同的初始权重下获得不同的准确度。

我最近做了一些权重随机化的实验。我的结果是,如果随机生成数的方差太大,网络永远不会收敛到正确的解决方案。

【讨论】:

  • 因此,当我在开始时随机初始化权重并使用经过训练的权重进行测试时,我的预测准确率有时为 96%,有时为 98%。那么我应该怎么做才能确保在梯度下降期间达到全局最小值。我应该修复我的初始权重吗?
  • 没错。您的问题的答案很简单:您无法确保全局最小值。您可以做的是尝试不同的随机数生成器,例如高斯分布式生成器。您还可以并行训练几个具有不同初始权重的网络以确定最佳设置。还有一些优化,如动量和权重衰减,以改善学习过程。由于您没有提供网络拓扑,因此很难给出建议。学习率也是精益改进时需要考虑的一个因素。
  • 我有一个函数 y=(x1)^2 + 2*(x2 )+(x3 )+ 3*(x4)^3 我必须预测其中的值。所以我在输入层有 4 个输入,在输出层有 1 个隐藏层和 2 个节点,如果 y 为正,则输出为 [1 0],如果 y 为负,则输出为 [0 1]。输入介于 0 和 1 之间,权重介于-1 和 1。Alpha 为 0.01,阈值为 0.005。当我为 200 个示例训练数据时,我得到 94% 的训练数据和 86% 的测试数据(隐藏层中的 4 个节点)。
  • 我在 250 个示例的训练集上获得了 90.2% 的准确率,在测试数据上获得了 96% 的准确率。并且再次运行相同的程序会在训练和测试数据上产生不同的准确性(由于随机权重)。所以现在你能建议我如何提高我的准确率以达到 98% - 100%。
  • 为了避免大量评论对话并提高其他人从您的问题中受益的机会:将您当前的问题作为一个新问题提出,如果我的答案对您来说是正确的,请检查此问题是否已回答最初的问题。之后您也可以从其他用户的回答中受益。
猜你喜欢
  • 2022-08-19
  • 2016-07-27
  • 2018-10-17
  • 1970-01-01
  • 2017-03-20
  • 2021-01-07
  • 2017-09-16
  • 2017-08-23
  • 2018-09-02
相关资源
最近更新 更多