我的目标是使用神经网络解决XOR问题。我读过无数关于多层神经网络背后的理论,证明和数学的文章。理论是有意义的(数学......不是那么多),但我对神经网络的评估和拓扑有一些简单的问题。
我觉得我非常接近解决这个问题,但我开始质疑我的拓扑和评估技术。抛弃反向传播的复杂性,我只想知道我的评估方法是否正确。考虑到这一点,这是我的问题:
假设我们有多个输入,每个相应的输入是否都有自己的节点?我们是否曾将这两个值都输入到单个节点中?我们输入此信息的顺序是否重要?
在评估图输出时,每个节点一获取值就会触发吗?或者我们是否从上面的图层收集所有值,然后在消耗完所有输入后关闭它们?
评估的顺序是否重要?例如,如果层“b”中的给定节点已准备好触发 - 但同一层中的其他节点仍在等待输入 - 那么就绪节点是否应该触发?或者是否应该在开始之前加载图层中的所有节点?
每层应该连接到下一层中的所有节点吗?
我附上了一张有助于解释(部分)我的问题的图片。
感谢您的时间!
答案 0 :(得分:4)
1)是的,每个输入都有自己的节点,该节点始终是该输入类型的节点。订单无关紧要 - 您只需要保持一致。毕竟,未经训练的神经网络可以学习将任何一组线性可分输入映射到输出,因此不需要将节点放入其中以使其工作的顺序。
2和3)您需要在下一层中的任何节点触发之前从单个图层收集所有值。如果您使用除逐步激活函数之外的任何激活函数,这一点很重要,因为输入的总和将影响向前传播的值。因此,在传播任何内容之前,您需要知道该总和是什么。
4)连接到哪个其他节点的节点取决于您。由于您的网络不会过大而且XOR是一个相当简单的问题,因此将一层中的所有节点连接到下一层中的所有节点(即完全连接的神经网络)可能是最简单的。在其他问题中可能存在特殊情况,其中最好不使用此拓扑,但是没有一种简单的方法可以解决(大多数人使用试验和错误或遗传算法,如在NEAT中),以及你不需要为了这个问题而担心它。