以位向量表示的神经网络权重范围和权重

Neural net weight ranges and weights represented as bit vectors

我正在使用进化算法来改变神经网络的权重,我有一些问题。

a) 为了简单起见,通常的做法是将网络权重保持在 [-1, 1] 范围内吗?

我希望保留表示为位向量的权重,并通过随机翻转向量中的位来对权重执行突变。我 运行 遇到的问题是将结果值保持在所选范围内。

b) 有没有办法将浮点数表示为位向量,使得位向量的所有 'permutations' 都在某个范围内?

b) 的一个潜在解决方案是定义一定数量的步长,比如 1024,将权重表示为长度为 10 的位向量,并将 [0, 1023] 之间的数字转换为 [- 1, 1].

谢谢。

将网络权重保持在 [-1, 1] 范围内是常见的做法吗?

否,但是将权重限制在某个范围内可能会加快遗传搜索中的搜索过程。您将不得不尝试不同的重量范围,以找到适合您问题的间隔。

有没有办法将浮点数表示为位向量,使得位向量的所有 'permutations' 都在某个范围内?

是的。假设您有一个权重,其值取自区间 [-2, 2]。为了表示浮点值,您决定使用(例如)“5 位精度”。因此,位向量可以采用从 0 到 (2^5)-1 的值。

为了计算bitvector表示的浮点值,你计算
weight_min + int(bitvector)/( (2^5)-1 ) * weight_range

一个数值示例:让您的位向量为 01000,范围为 [-2, 2]。这意味着权重范围为 4,最小权重为 -2。填写上一段中的公式:
-2 + 8 / 31 * 4 = -0.97