通过遗传算法改变神经网络中的权重和偏差



我有一个进化神经网络群体的遗传算法

到目前为止,我使用random.randn(Python(对权重或偏差进行突变,这是一个来自平均值为0 的正态分布的随机值

它工作得"很好",我使用它成功地实现了我的项目——在给定的时间间隔上使用均匀分布不是更好吗?

我的直觉是,这将导致我的网络更加多样化

我认为,这个问题没有简单的解决方案。在正态分布的情况下,均值附近的数字有更多的机会被你的数字生成器"选择",均匀分布给所有数字几乎相等的机会。这一点很清楚,但问题的答案是,平等的机会意味着更好的结果,根据我的说法,只是停留在实证实验上。所以我建议你进行正态和均匀分布的实验,尝试根据结果进行判断。

关于多样性。我假设你创建了一些随机向量来表示权重。在突变阶段,您执行随机数的加法运算。这个数字更有可能来自均值附近的紧密区间,所以在0突变的情况下,一些元素的变化很可能很小。所以在vector上只会有一些小的改进,有时会出现一些大的改进。在均匀分布的情况下,变化会更加随机,从而导致个体的不同。问题是,这些人会更好吗?我不知道,但我给你另一种看法。我把遗传算法看作是进化论的类比。从这个角度来看,个人的累积小进步和一些大变化的可能性很小是更合适的。想想情况,使用的是均匀分布,但由于大的变化,孩子们的适应能力很低,所以在创造新一代的阶段不会被选中。你会等很长时间,等待一个微小的改进,让你的网络运行良好。

也许还有一件事。你的实验可能表明均匀/正态分布更好。但这样的结果可能只适用于您当前的问题,而不是一般情况。

最新更新