0

我被告知要实施一个神经网络来做预测。所以我创建了一个前馈MultiLayer Perceptron与反向传播算法,它工作正常。但我需要更快,更快地获得结果。因此,我大概在遗传算法优化培训课程中的权重。使用遗传算法的神经网络权重优化

你如何建议编码chromosme?

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

任何想法如何编码在chromosme的权重,以让遗传算法工作很好?

在此先感谢。

+0

收敛速度更快?然后使用批量标准化。 –

+2

使用遗传算法可能需要更多的资源(如时间和CPU),而不仅仅是使用梯度下降或其他分析学习方法。你尝试过使用RMSprop还是adagrad? – jorgenkg

+0

我以前一直在使用不断发展的神经网络,我觉得将网络权重表示为位向量,然后在两个表示(位向量/权重列表)之间执行一些转换,这被证明是最有效的搜索策略。 – jorgenkg

回答

1

总之(已经在评论中已经提出):不要这样做。遗传算法是对无法有效优化的简单元优化器,因为它们是慢,启发式并且需要大量的资源。特别是他们应该从起诉来训练一个神经网络,为此我们有非常有效的训练方法(SGD,Rmsprop,Adam)。尽管它们可以用来优化一些更抽象的部分,比如网络架构等,在这种情况下,无法计算有效的梯度,甚至不能使用其他定义良好的数学程序。

0

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