我想使用Jeff Heaton的Encog神经网络库来模拟计算机内存。我只是不知道该使用什么方法。
我的需求是拥有一个内存地址和一个字节值的集合。
location [0000]:byte-data[0101010]location [0001]:byte-data[0101010]
这些是我传递给神经网络系统的值。
我试图避免每次内存数据更改时都重新训练神经网络。但也许这正是我需要做的。
你会使用什么神经网络技术来完成我正在尝试做的事情?
回答:
你正在尝试做的事情并不是神经网络真正擅长的领域,因为它们更擅长概括模式,而不是学习模式。 但是,你可以使用概率神经网络或常规感知器来完成此操作。 你对你的问题有点含糊,所以我对我的答案也会含糊。 我假设你的意思是传入内存数据,然后将其“分类”到内存地址。 这样,当使用监督训练方法训练网络时,你将能够传入与现有项目相似或相同的内存数据,并且网络将为你提供地址。 我想你也可以反过来做同样的事情。
如果使用概率神经网络,你基本上会学习传递给网络的每一个模式。 当然,每次要存储新的内存地址时,你都会向网络添加一个新节点,这会使效率降低。 为了减少这个问题,已经做了一些工作,例如,这篇论文(你将不得不自己实现该算法)。 也许这种类型的网络在“准确记住”内存方面最可靠,同时仍然能够概括结果(使用概率)。 缺点是它会占用大量内存。
传统的feedforward, backpropogation networks(感知器)也应该允许你做类似的事情。 但是,你必须小心创建足够的隐藏节点,以使网络能够正确地调用所有输入值。 这样做当然会导致过度拟合,但听起来你不想概括你的输入数据,而是希望更好地回忆模式。
为了解决学习新数据的问题,你只需要使你的网络能够随着时间的推移进行学习,而不是一次性学习。 你将需要对此进行更多研究,但是你需要使用某种在线学习算法。
总而言之,不要使用神经网络,请使用其他类型的算法 :p