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

Mutate weights and biases in a neural network through genetic algorithm

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

直到现在,我使用 random.randn (Python) 对权重或偏差进行突变,这是来自均值 = 0

的正态分布的随机值

它有效 "well" 我设法使用它实现了我的项目,在给定的时间间隔内使用均匀分布不是更好吗?

我的直觉是它会导致我的网络更加多样化

我认为,这个问题没有简单的解决方案。在正态分布的情况下,平均数附近的数字有更多机会被你的数字生成器 "selected" ,均匀分布给所有数字几乎相同的机会。这很清楚,但要回答问题,机会均等是否意味着更好的结果,根据我的说法,这只是在实证实验中得出的结论。所以我建议你做正态分布和均匀分布的实验,尝试根据结果判断。

关于多样性。我假设您创建了一些代表权重的随机向量。在突变阶段,您执行添加随机数。这个数字更有可能来自均值附近的紧密区间,因此在 0 突变的情况下,高概率的某些元素只会发生很小的变化。因此,与 vector 相比只会有很小的改进,有时会出现一些大的东西。在均匀分布的情况下会变化的更加随机,从而导致个体不同。问题是,这些个体会更好吗?我不知道,但我给你提供另一种观点。我将遗传算法视为进化论的类比。从这个角度来看,个人的小改进与一些大变化的可能性很小是比较合适的。想想情况,使用的是均匀分布,但是 children 由于变化大,适应度低,所以在创建新的阶段不会被选中。并且您将等待一个微小的改进,使您的网络运行良好。

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