增强拓扑(NEAT)神经网络的神经进化可以在 TensorFlow 中构建吗?

Posted

技术标签:

【中文标题】增强拓扑(NEAT)神经网络的神经进化可以在 TensorFlow 中构建吗?【英文标题】:Can neuroevolution of augmenting topologies (NEAT) neural networks be built in TensorFlow? [closed] 【发布时间】:2019-02-16 15:03:23 【问题描述】:

我正在制作一个用于时间序列数据分析的机器学习程序,使用 NEAT 可以帮助完成这项工作。不久前我开始学习 TensorFlow,但似乎 TensorFlow 中的计算图通常是固定的。 TensorFlow 中是否有工具可以帮助构建动态演化的神经网络?或者像 Pytorch 这样的东西会是更好的选择?谢谢。

【问题讨论】:

【参考方案1】:

由于种群中神经网络的拓扑结构发生变化,因此无法在 TensorFlow 的静态图形模式下实现,除非进行重大权衡。静态图适用于架构在训练期间不会发生变化的模型。但是,它可以在 TensorFlow Eager 或 PyTorch 中完成,因为它们支持动态计算图。

在 TensorFlow Eager 中检查此实现:https://github.com/crisbodnar/TensorFlow-NEAT

【讨论】:

【参考方案2】:

创建进化的 tensorflow 网络的一种方法是使用 hyperneat 或 es-hyperneat 算法,而不是在物种中的单个网络上运行进化,而是进化出一个“基因组”,实际上是编码表型的 cppn神经网络。对于 cppn,您可以使用前馈 tensorflow 网络,但需要注意的是每个节点都可以使用不同的激活函数,这使得 cppn 能够进化为能够查询“表型”神经网络的结构和权重您可以使用通用的 tensorflow 网络(或您选择的任何网络)

我会研究整洁的 python 和 peas 库,看看它们使用的网络,并使用 tensorflow 网络复制这些类。

【讨论】:

【参考方案3】:

TensorFlow 支持eager execution,可以支持任意动态网络拓扑。

【讨论】:

以上是关于增强拓扑(NEAT)神经网络的神经进化可以在 TensorFlow 中构建吗?的主要内容,如果未能解决你的问题,请参考以下文章

NEAT算法

神经网络与进化算法的区别

无梯度强化学习:使用Numpy进行神经进化

进化算法和神经网络是不是在同一个领域中使用?

优化预测基于matlab差分进化算法优化BP神经网络预测含Matlab源码 1315期

差分进化神经网络干扰观测器的设计