如何教神经网络执行加法?

人工智能 神经网络 深度学习
2021-11-04 08:11:44

我试图了解它是如何工作的。你怎么教它说,给它得到的每个数字加 1。我对这个主题很陌生,当你教它识别数字图片时,我学会了它是如何工作的。我可以理解它是如何识别一个数字的,但我不明白它如何研究执行加法?我可以理解它可以使用像素和分配权重来识别数字或图片,然后学习测量是否将类似于权重的数字的图片分配给每个像素。但我无法从逻辑上理解它如何学习将数字加一的概念。假设我向它展示了数千个 7 变成 8 152 变成 153 的例子,你会明白世界上的每个数字都必须加一吗?如果没有 + 的这种操作,它怎么会得到它?既然它的提案中不存在加法,那么它怎么能意识到它必须在每个数字中加一个呢?即使看到成千上万的例子但没有这样的加号操作,我也无法理解。我可以理解识别像素等,但这样的操作我无法理解其背后的理论逻辑。你能用通俗的话解释一下逻辑吗?

2个回答

欢迎来到 AI.SE @bilanush。

这是一个可能使事情更清楚的示例方法。然而,还有其他方法可以训练神经网络来做到这一点。

在您之前的图像示例中,您可能注意到网络接收图像作为一系列值,代表图像中的每个像素。然后,网络会学习一系列输出神经元中的哪一个应该响应给定的一组像素值而处于活动状态。当以适当的方式读取时,这些输出神经元对应于图像的正确标签。应该激活的输出集与激活的输出集之间的差异构成了允许网络学习的误差信号的基础。

您可能听说过计算机用二进制数字表示数字因此,您可以将数字 16 视为:“8 位二进制”中的 00010000。在 16 位二进制中,这个数字是 0000000000010000,依此类推。

因此,查看问题的一种方法是将二进制输入映射到二进制输出(非常类似于标记黑白图像)。例如,输入 00010000 (16) 应该产生输出 00010001 (17)。输入 00100011 (35) 应该产生输出 00100100 (36),依此类推。

和以前一样,您将拥有一组输出神经元。在这种情况下,它应该与输入神经元的集合一样宽。和以前一样,误差信号是预期输入和输出之间的差异。

至于他们如何“不加”地学习这个函数的问题,实际上网络中的单个神经元只执行两个操作:将它们的输入相加,以及求和的非线性变换。已经证明这些足以学习从输入到输出的任何函数,只要网络包含 3 层或更多层,并且只要中间层足够宽,但这里应该很容易看出如何加法可能会出现。

这就是我们所说的回归问题。尽管@John 提供了一种新颖的方法,但我认为它不会起作用,因为您要将数字分解为其最小表示形式,因此由于长期依赖关系(例如0111111将更改为),因此教它会非常困难100000,因此您几乎必须训练所有示例,实际学习为 0。

让我们从不同的角度来看待你的问题。为什么你只考虑整数?您的问题可以概括为近似这条曲线:

在此处输入图像描述

这显然是一个例子W.TX+B. 单个输入节点将馈送到 Leaky ReLu 激活的 2 个输出节点和一个偏置节点。偏置节点将是您的c并且 2-3 Leaky ReLu 将调整它们的权重以创建一条直线。训练这可能是一个问题(节点之间的协同适应),但从数学上讲,这种神经网络结构将实现解决方案。

此外,最好在实际值上进行训练,以获得更好和更精细的权重调整(尽管理论上对于单个自变量x你应该只需要 3-4 个值来让这个神经网络学习,但谁知道呢?)

注意:负区域的近似值可能不是那么好。