遗传算法中的参数初始化

数据挖掘 机器学习 神经网络 强化学习 遗传算法
2022-02-19 16:15:22

我在遗传算法中使用神经网络。神经网络有 4 个输入(和 之间的值014输出,对应于不同动作的概率。神经网络有 58 个参数。

首先,我创建了一个随机群体:每个人有 58 个随机参数。在 python 上,使用 Keras 的默认方法随机选择参数(值介于-1和之间1)。这是一个好方法吗?也许最好的解决方案需要具有高于1例如值的参数,但是使用我的方法,只有介于-1和之间的值1存在于“基因库”中。因此,例如不能出现等于 3.4 的参数。

我尝试使用标记数据和梯度下降来训练相同的神经网络,以便了解参数的范围。在训练模型之后,我得到了一些带有值的参数>1,或者<-1我想我可以使用这些参数作为我的遗传算法的初始化。但是我怎么能得到不同的人呢?如果我的训练模型的第一个参数等于 2.5,我是否必须将不同个体的第一个参数设置2.5 +- 20%为例如?

1个回答

在我看来,您应该使第一次随机初始化的范围尽可能大(在合理范围内)。

遗传算法最终会收敛到合适的范围,但是给它一个狭窄的范围可能会导致一个次优的解决方案,因为该算法没有任何方法可以达到更好的解决方案。大范围的唯一缺点是可能需要更长的时间(更多代)才能收敛。

因此,我建议您对值进行完全随机的初始化,例如在 [-10,10] 范围内。