我正在使用进化算法来改变神经网络的权重,我有一些问题。
a)为简单起见,通常的做法是将网络权重保持在[-1,1]的范围内吗?
我希望将权重表示为位向量,并通过随机翻转向量中的位来对权重执行突变。我遇到的问题是将结果值保持在所选范围内。
b)有没有办法将浮点数表示为位向量,使得位向量的所有“排列”都落在一定范围内?
b)的潜在解决方案是定义一定数量的步骤,比如1024,将权重表示为长度为10的位向量,并将[0,1023]之间的数字转换为[-1之间的数字, 1]。
感谢。
答案 0 :(得分:2)
[-1, 1]
?不,但是在一定范围内限制权重可能会加快遗传搜索中的搜索过程。您将不得不尝试不同的体重范围,以找到适合您问题的间隔。
是。假设您的权重取代[-2, 2]
区间的值。要表示浮点值,您决定使用(例如)“5位精度”。因此,位向量可以取0到(2 ^ 5)-1的值。
为了计算由比特矢量表示的浮点值,你计算
weight_min + int(bitvector)/( (2^5)-1 ) * weight_range
一个数字示例:让你的位向量为01000,范围为[-2,2]。这意味着重量范围是4,最小重量是-2。填写前一段中的公式:
-2 + 8 / 31 * 4 = -0.97