我想创建自己的神经网络-主要是出于乐趣,还因为可汗学院不允许使用图书馆,而且我在该站点上没有看到任何好的神经网络。
神经网络信息:
我在图像中显示的是一个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):
另一部分时间(可能是1/20,所以很少见),它将“固定”在0.5,然后将自己踢出:
或者它会做对,但是随后会无缘无故地搞砸自己(非常很少见,几乎不会发生):
我不知道是什么原因导致了这些问题的发生(尽管我认为这可能是我在程序的第137行找到的Gradient Descent的实现)或如何解决它们。 您可以在这里找到程序: khanacademy.org/cs/-/6305674778411008
答案 0 :(得分:0)
我认为这可能太夸张了。神经网络达到最小但是一段时间之后,损失又开始增加,并在本地分钟内停止。 但这取决于您如何实现神经网络。您需要查看您的数据是否在0和1之间或在-1和1之间归一化。因为如果o数据未标准化,则梯度会“爆发”。 标准化也很重要。