基于遗传算法的神经网络权重优化

时间:2016-08-05 08:47:10

标签: c# machine-learning neural-network artificial-intelligence genetic-algorithm

我被告知实施神经网络进行预测。所以我使用反向传播算法创建了一个 Feed Forward MultiLayer Perceptron ,它运行正常。但我需要更快更快地获得结果。所以我认为遗传算法优化训练课程中的权重。

您如何建议对染色体进行编码?

我已经将它作为随机生成的权重表(-100,100)完成,但它没有给出非凡的结果。我想问题是,即使突变的概率很高,生成一个随机的权重表也会限制解空间。

任何想法如何编码染色体中的权重以使遗传算法运行良好?

提前致谢。

2 个答案:

答案 0 :(得分:2)

简而言之(已经在评论中提出过):不要这样做。遗传算法是一个简单的元优化器,用于无法有效优化的问题,因为它们慢,启发式并且需要大量资源。特别是他们应该从不被起诉训练神经网络,为此我们已经完成了非常有效的训练方法(SGD,Rmsprop,Adam)。它们可用于优化一些更抽象的部分,例如网络架构等,其中无法计算有效的梯度或甚至使用其他明确定义的数学过程。

答案 1 :(得分:1)

如果您想使用任何进化算法来优化神经网络权重, 可能更好的方法是使用反向传播学习网络,然后使用权重最大值和最小值来编码限制。让我们说权重分布在-1.0988333,1.2982293之间,我会采用[-2,2] /( - 2,2),这样在这个区间之间可以生成染色体更倾向于更好的解决方案,并且可以进一步优化通过算法。 [-100,100]的间隔在生成最优解时会很慢。当然,在获得最佳解决方案时,如何定义健身功能至关重要。一种方法是获得给定权重的最小rms值。