使用遗传算法演化多层感知器

时间:2015-11-05 21:53:22

标签: python neural-network genetic-algorithm

我想使用遗传算法进化神经网络,以逼近数学函数(线性,立方,正弦,tanh等)。要求是NN应该根据神经元的拓扑,权重和激活功能来进化。评估函数是计算NN的输出和应该近似的函数之间的误差的函数(均方误差)。

我主要担心的是我希望能够对表现/编码/基因组进行绝对控制,因为我想同时进化神经元层,它们的权重和激活功能,所以我必须提出来染色体包含所有这些东西。

您会推荐哪些工具?我正在检查DEAP是否用于改进神经网络,我正在考虑PyLearn 2来实现GA将导致的实际最佳配置。

2 个答案:

答案 0 :(得分:2)

神经网络的最新技术是用Lua编写的Torch7。这就是Facebook AI和Google DeepMind使用的(以及我的实验室)。但我认为lua不是实现采样算法的最佳语言。

另一种先进的框架是用python编写的,它被称为Theano,但我对Torch有强烈的偏好。但是,它们都可能对你的任务来说太过分了。

一个简单的替代方案也可以是使用Autograd,一个自动的numpy分化库https://github.com/HIPS/autograd来轻松训练你的神经网络并对其进行绝对控制。他们的文档中有几个例子。

最后,遗传算法是蒙特卡罗的另一个名称,有很多资源可以实现python(例如https://codereview.stackexchange.com/questions/41004/organising-code-for-a-genetic-algorithm-in-python或github)。

DEAP听起来很受欢迎,PyEvolve已经过时了。

编辑:我忘了提到Keras(http://keras.io/),这实际上可能是另一个很好的选择,而且是以Theano为基础的。

答案 1 :(得分:0)

您也可以查看Blocks。它是一个基于theano构建的库,通过变量注释来管理计算图。与keras,pylearn2和lasgne等库相比,它允许更丰富(即更复杂,更复杂,更像那些奇怪的神经堆栈式结构)。虽然如果您只想“发展”经典MLP架构的变体,那些库可能会更好。