神经网络振荡约0.5

时间:2018-09-26 18:59:24

标签: neural-network processing.js khan-academy

我想创建自己的神经网络-主要是出于乐趣,还因为可汗学院不允许使用图书馆,而且我在该站点上没有看到任何好的神经网络。

神经网络信息:

我在图像中显示的是一个1-2-3-2-1神经网络,尽管它对所有图层大小和数量都执行此操作。较粗的线是第一次训练,它是5,000次迭代。较细的线显示了第一次训练后的另外1,000次迭代。

培训数据信息:

我正在将其切换为0到1和1到0。显示的图是尝试将1更改为0时的损耗。数据集如下所示:

[{
  inputs: [0],
  outputs: [1]
}, {
  inputs: [1],
  outputs: [0]
}]

在每次迭代之前,数据集都是随机的。

我将神经网络放在一起,但是在测试时遇到了一个有趣的问题: 它会在大约0.5分之三的时间内振荡。其他时间的1/4则按预期工作。有时候,它会到达预期的位置(大约四分之一的时间)(这些图显示了损耗,中间的线为0):

Image showing convergence towards 0

另一部分时间(可能是1/20,所以很少见),它将“固定”在0.5,然后将自己踢出: enter image description here

或者它会做对,但是随后会无缘无故地搞砸自己(非常很少见,几乎不会发生): enter image description here

在其余时间中,它将保持在0.5左右: enter image description here

我不知道是什么原因导致了这些问题的发生(尽管我认为这可能是我在程序的第137行找到的Gradient Descent的实现)或如何解决它们。 您可以在这里找到程序: khanacademy.org/cs/-/6305674778411008

1 个答案:

答案 0 :(得分:0)

我认为这可能太夸张了。神经网络达到最小但是一段时间之后,损失又开始增加,并在本地分钟内停止。 但这取决于您如何实现神经网络。您需要查看您的数据是否在0和1之间或在-1和1之间归一化。因为如果o数据未标准化,则梯度会“爆发”。 标准化也很重要。