假设您在 Input = 1/Output = 2 上训练神经网络;输入 = 4/输出 = 8。
你将如何训练机器识别它需要从头开始将输入乘以 2?
假设您在 Input = 1/Output = 2 上训练神经网络;输入 = 4/输出 = 8。
你将如何训练机器识别它需要从头开始将输入乘以 2?
您需要将网络模型限制为自然会概括您的问题的模型。
对于简单的乘法,这将是单个线性神经元。您还可以训练偏差,以便网络代表y = Ax + B.
如果你使用那个非常简单的网络,只给它 2 或 3 个示例来学习,并使用最小二乘误差对其进行训练,它会很快收敛到你想要的函数。像这样的单层线性网络可以推广到y = Ax + B其中 x、y 和 B 是向量,而 A 是矩阵 - 即它可以解决联立线性方程,只要您提供足够的示例(通常示例数等于向量)。
这实际上是微不足道的,如果您使用任何现代 NN 库来训练这样一个简单的网络,那么学习您的线性函数将会非常快。但是,在具有特定非线性函数并希望网络在一般意义上学习它的一般情况下,这是不可能的。可以使网络学会在您提供示例输入和输出的位置附近进行合理的泛化,但是当您为其提供x远离训练示例的值时,将输出不正确的结果。
需要注意的是,网络不会为您的函数学习数学公式。它在给定自己的内部模型的情况下找到最佳近似值。但是通过选择一个内部模型与你想学习的函数很好匹配的网络,它会很好地泛化到它,并且如果示例中没有噪音并且足够多的话,它可能能够准确地得到它.