【问题标题】:Simple deep-learning prediction简单的深度学习预测
【发布时间】:2017-05-14 06:34:34
【问题描述】:

我开始学习深度学习,发现synaptic.js

我想创建一个预测系统,我可以在其中输入数字,并希望 AI 能够理解这种模式。

我的训练数据将是 2 个数字的数组,我要验证的输出是 [x, y, z] 其中 x 和 z 是偶数/奇数的布尔值,y 是两个数字的总和在输入中。

所以:

var trainingSet = [{
    'input': [20, 34],
    'output': [1, 54, 0]
}, {
    'input': [22, 33],
    'output': [1, 55, 1]
},{
    'input': [24, 35],
    'output': [1, 59, 1]
},{
    'input': [23, 36],
    'output': [0, 59, 0]
}];

如果我输入[20, 31],我希望人工智能知道答案。

我将如何设置这样的逻辑?

我基于YouTube talk 开始了jsFiddle,但不明白代码的实际作用...

做了一个循环来生成训练数据in this jsFiddle,基本上是:

// training data generator:
var trainingSet = [];
for (var i = 0; i < 500; i++) {
    var obj = {};
    obj.input = [
        Math.random() * 10,
        Math.random() * 10
    ].map(Math.round);
    obj.output = [
        Number(obj.input[0] % 2 == 0),
        obj.input[0] + obj.input[1],
        Number(obj.input[1] % 2 == 1)
    ]
	trainingSet.push(obj);
}

document.body.innerHTML = JSON.stringify(trainingSet);

【问题讨论】:

  • 也许您选择了语言和问题(对于 NN 来说都是错误的选择),但您没有添加任何自己的尝试。这看起来像是糟糕的准备。 编辑:在访问了这个 jsFiddle 链接(不是进行 SO 的最佳方式)之后,可能有一个简单的模型,但如果这真的是一个(线性)感知器,它就不能很好地工作,你将在任何好的神经网络课程的第一部分中了解到这一点(模型复杂性是否足以解决您的问题?您的问题是线性可分的吗?否和否)。所以先学理论吧。
  • @sascha 我看不出有什么理由不赞成这个问题。它是具体的,描述得很好,作者明确地试图解决它。说“学习理论”是没有用的,可以应用于大多数关于 SO 的问题。致作者:如果我错了,请纠正,但问题不应该反过来吗?在您的陈述中,您想根据输出预测输入,因此有效的输出应该是您的训练。
  • @LukaszTracewski “输出应该是你的训练” - 有道理。没想到这样看问题。将尝试反转逻辑并将输出用作数据。
  • 那么解决方案!除非您构建的生成器只是为了向我们解释问题,否则问题无法解决。更正式地说,不存在可以从输出中恢复输入的函数。生成器产生随机数,保留的是它们是否是奇数/偶数和总和。存在满足这些标准的无限组数。从您的示例中: 54 = 20 + 34 = 18 + 36 = 16 + 38 ...如果有一个过程驱动这个,它可以完成。但它是随机的。您的神经网络永远无法学习模式,因为没有模式。
  • @LukaszTracewski 这是很有价值的信息,可以帮助我组织我的思考和处理方式。 “不存在可以从输出中恢复输入的函数” - 这将是我的出发点。谢谢!。如果您想提供此评论作为答案,请提供。否则将很快删除此问题。虽然我认为糟糕的论文也应该发表,以便其他人学习:) 再次感谢!

标签: javascript machine-learning deep-learning synaptic.js


【解决方案1】:

除非您构建的生成器只是为了向我们解释问题,否则问题无法解决。更正式地说,不存在可以从输出中恢复输入的函数。生成器产生随机数,保留的是它们是否是奇数/偶数和总和。存在满足这些标准的无限组数。从您的示例中: 54 = 20 + 34 = 18 + 36 = 16 + 38 ...如果有一个过程驱动这个,它可以完成。但它是随机的。你的神经网络永远无法学习模式,因为没有模式。

【讨论】: