以位向量表示的神经网络权重范围和权重
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
我正在使用进化算法来改变神经网络的权重,我有一些问题。
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