变异方向:增加NEAT算法的连接操作
Direction in mutation: add connection operation of NEAT Algorithm
我看过NEAT算法的论文here。并想亲自尝试一下。但我对算法还有一个疑问,那就是:
如果选择了2个隐藏节点,如何在添加连接变异操作中确定连接的方向?
假设我有一个网络,其中节点 1,2 是输入节点,3,4,5 是隐藏节点,6 是输出节点。
节点 3 和 4 直接与输入 1,2 连接,其中 5 当前仅连接节点 4 并将其定向到输出节点 6。
如果一个节点是输入或输出,则很容易确定新连接的输入和输出节点。但是如果在上面的例子中,代码决定在节点 3 和节点 5 之间添加一个连接。我应该使用哪个节点作为入节点,哪个节点作为出节点?或者没关系?
没关系。正常.
典型的解决方案是 select 首先一个节点来自(有一些限制,比如:避免输出节点)然后一个节点到(有一些不同的限制,比如:避免输入节点)。
有时您会需要额外检查。例如,您可能希望使用不允许连接循环的仅前馈网络。在这种情况下,您将需要检查 selected from-to 节点对不会创建循环。
但是,我强烈建议您使用和修改 NEAT 的现有实现(检查 Colin Green,谁负责一些非常高质量的 NEAR 存储库)。如果您需要所有的技巧和良好实践,您会发现 NEAT 的实现出奇地复杂。
我看过NEAT算法的论文here。并想亲自尝试一下。但我对算法还有一个疑问,那就是:
如果选择了2个隐藏节点,如何在添加连接变异操作中确定连接的方向?
假设我有一个网络,其中节点 1,2 是输入节点,3,4,5 是隐藏节点,6 是输出节点。
节点 3 和 4 直接与输入 1,2 连接,其中 5 当前仅连接节点 4 并将其定向到输出节点 6。
如果一个节点是输入或输出,则很容易确定新连接的输入和输出节点。但是如果在上面的例子中,代码决定在节点 3 和节点 5 之间添加一个连接。我应该使用哪个节点作为入节点,哪个节点作为出节点?或者没关系?
没关系。正常.
典型的解决方案是 select 首先一个节点来自(有一些限制,比如:避免输出节点)然后一个节点到(有一些不同的限制,比如:避免输入节点)。
有时您会需要额外检查。例如,您可能希望使用不允许连接循环的仅前馈网络。在这种情况下,您将需要检查 selected from-to 节点对不会创建循环。
但是,我强烈建议您使用和修改 NEAT 的现有实现(检查 Colin Green,谁负责一些非常高质量的 NEAR 存储库)。如果您需要所有的技巧和良好实践,您会发现 NEAT 的实现出奇地复杂。