2

我是神经网络的新手。我试图了解多层感知器可以学习实现什么样的解决方案。

是否可以仅通过给出离散数量的示例来训练 MLP 进行乘法运算?

我可以教它如何对某些数字(当然来自训练数据集的数字)进行乘法运算,但它无法正确估计其他乘法运算。

我使用了 1 个隐藏层(TanH,10 个单元)和 1 个输出层(Identity),隐藏层和输出层都有偏差,并使用 Momentum 优化器进行训练。

数据集

0, 5 = 0
1, 1 = 1
2, 3 = 6
3, 7 = 21
4, 3 = 12
5, 9 = 45 
7,7 = 49
13,13 = 169

它为此数据集提供了正确的结果,但例如计算5 * 5给出了错误的数字,例如32.

我是否对 MLP 期望过高?我应该给网络什么数据集(或层设置)以便能够乘以任何给定的数字?

4

1 回答 1

3

是的,你期望太高了。MLP 不够“智能”,无法从少数特定示例中抽象出方法。它是基于输入的权重的线性组合;从这些例子中推断出二次关系是一个比用 MLP 术语表达的更深层次的概念。

一般来说,如果您的研究还没有为给定问题找到标准解决方案类,那么您将陷入广泛的实验中。我的第一个想法是尝试使用 RNN 进行此操作,希望将乘法抽象作为反馈循环的副作用。

于 2018-03-10T02:08:39.117 回答