如何用MLP训练乘数?

时间:2018-03-10 01:34:34

标签: neural-network deep-learning perceptron multi-layer

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

是否可以通过仅提供离散量的示例来训练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的期望过高吗?我应该给网络什么数据集(或层设置)能够乘以任何给定的数字?

1 个答案:

答案 0 :(得分:2)

是的,你期待太多了。 MLP不够“聪明”,不能从一些具体的例子中抽象出方法。它是基于输入的权重的线性组合;从这些例子中推断出二次关系是一个比MLP术语更深刻的概念。

一般而言,如果您的研究尚未针对特定问题找到标准解决方案类,那么您将陷入各种各样的实验。我的第一个想法是尝试用RNN做这个,希望将乘法抽象作为反馈循环的副作用。