如何通过机器学习来学习诸如“添加”之类的操作

时间:2018-12-03 06:28:07

标签: machine-learning

有什么主意吗?

问题状态:

Giving futures:
0+1=1, 1+1=2, 1+2=3, 1+3=4, 1+4=5,
1+5=6, 1+6=7, 1+7=8, 1+8=9, 1+9=10
How to build a machine learning algorithm to learn "+" operation in decimal?

例如学习后,123 + 321应该得到444; 12345678901234567890 + 12应该获得12345678901234567902

数据集的大小无穷大,这个问题很难解决;传统的神经网络方法擅长分类,但需要足够的训练集,不适用于无限集。

尽管有很多方法可以尝试解决问题;但是在很大的数量上无法获得良好的结果。这意味着像LSTM这样的算法可以存储操作数和结果之间的映射,但是尚未学习如何进行加法运算。

此外,我的意思是使用不受“神经网络”限制的“机器学习”。

(请在回答之前先阅读参考文献;纯LSTM和类似的算法不够强大,因此无法预期。)

参考:https://machinelearningmastery.com/learn-add-numbers-seq2seq-recurrent-neural-networks/

1 个答案:

答案 0 :(得分:0)

最简单的神经网络就可以了。建筑:

  • 输入:等于要添加的位数。在这种情况下,yourView.setLayoutParams(new LinearLayout.LayoutParams(width, height));
  • 输出:具有所有输入的2bias=0的单个神经元。
  • 激活功能:线性。

通常:

enter image description here

鉴于我们的体系结构,您的输出将简化为weight=1,这正是解决方案。除了固定偏差和权重之外,您还可以让系统学习它们,它会非常快-只需记住使用线性激活

如果您想玩花哨的游戏,可以使用RNN。诀窍是完全像计算机一样执行此操作:使用二进制表示。 RNN应该能够学习如何执行该程序。为什么会伤害自己?