用任意拓扑计算神经网络

时间:2017-10-04 16:41:18

标签: machine-learning neural-network

在某些ppt演示文稿中阅读有关神经进化的内容我发现了一个短语:

  

网络输出以标准方式计算

我成功实施了一些简单的前馈机制,遵循一些指南(使用权重的向量表示 - 123),我理解(或多或少)经常性网络如何计算。

我找不到的是如何计算具有任意拓扑的神经网络。有没有“标准方式”(算法)?

我想象一种方法(假设前馈拓扑),虽然非常耗时,但是要遍历所有神经元,直到计算出输出。

我想另一种方法可能是将任意拓扑组织成层(也假设前馈拓扑 - this?),然后计算它。

问题

计算任意拓扑网络输出的“标准方法”是什么? /如何计算任意拓扑网络输出?

的假设

  1. 前馈拓扑(作为奖励的循环拓扑,可能要复杂得多)。
  2. Bias节点存在。
  3. PS。我正在使用NEAT论文与Python合作。

1 个答案:

答案 0 :(得分:2)

神经网络不能具有真正的任意拓扑,存在一定的限制:

  • 拓扑必须(可简化为)directed acyclic graph (DAG)。您可能会问RNN是否与此要求相矛盾:它们不会,因为每个RNN都可以unrolled into a DAG。有other cases,可以在网络中模拟周期,但是它执行网络的方式可以始终显示为DAG,反向传播也是有限的。
  • 图形必须具有专用的输入和输出节点,因此输入不依赖于输出。输入节点通常提供训练数据。
  • 还有其他限制,例如激活功能必须是可区分的。

现在您可以注意到这些网络非常像前馈:前向传递从输入到输出,后向传递在另一个方向上运行。这是可能的,因为DAG可以是sorted topologically。实际上,拓扑排序只是 以前馈方式表示图形。

对于循环仿真,迭代次数总是有限的,因为内存是有限的。网络实际上是一个DAG,其间有输入,输出和一些重复模式,也可以看作是前馈。

总结:用于简单神经网络的机制与所有网络相同(如果你愿意,可以使用标准),但网络表示有时可能看起来不同。