Octave 的 rand 函数能否产生所有(或部分)数字都相等的输出?
Can Octave's rand function produce an output where all (or some) numbers are equal?
在documentation中对于rand
函数,据说:
Return a matrix with random elements uniformly distributed on the interval (0, 1).
我的问题是:是否有 任何 这些随机数(或所有)在输出中相等的可能性?
作为旁注,我对此很好奇,因为在 Andrew Ng 的机器学习课程中建议在随机化所有 theta 的值(从而破坏对称性)时使用 rand
函数,在训练神经网络。
从理论上讲,如果它真的是随机的,那么是的 - 所有值都相等的可能性总是很小。然而,这些都是浮点数——所以有很多细微的差别。如果您担心几个重量的值完全相同,您应该购买大量乐透彩票 - 您更有可能中奖!
即使一些权重最终 完全 相同,然后无法更改 - 这不会对整个网络造成太大影响。
现代正则化技术,例如 drop-out,使(不是真正的)问题变得更不重要。 Dropout 只会为每个训练批次使用神经元的随机子集,并且只有那些神经元会得到更新 - 所以如果两个权重绑定,最终会为批次选择一个(并调整其权重)而另一个单独留下 - 因此打破对称性。
注意:rand 函数并不是真正随机的,它是伪随机的。该文档说它使用 Mersenne Twister PRNG,这是一种质量相对较高(不是很好的加密货币)的众所周知且值得信赖的 PRNG。如果您的 PRNG 质量很低,则获得精确的副本可能是一个潜在问题 - 但在这种情况下您应该是安全的。
在documentation中对于rand
函数,据说:
Return a matrix with random elements uniformly distributed on the interval (0, 1).
我的问题是:是否有 任何 这些随机数(或所有)在输出中相等的可能性?
作为旁注,我对此很好奇,因为在 Andrew Ng 的机器学习课程中建议在随机化所有 theta 的值(从而破坏对称性)时使用 rand
函数,在训练神经网络。
从理论上讲,如果它真的是随机的,那么是的 - 所有值都相等的可能性总是很小。然而,这些都是浮点数——所以有很多细微的差别。如果您担心几个重量的值完全相同,您应该购买大量乐透彩票 - 您更有可能中奖!
即使一些权重最终 完全 相同,然后无法更改 - 这不会对整个网络造成太大影响。
现代正则化技术,例如 drop-out,使(不是真正的)问题变得更不重要。 Dropout 只会为每个训练批次使用神经元的随机子集,并且只有那些神经元会得到更新 - 所以如果两个权重绑定,最终会为批次选择一个(并调整其权重)而另一个单独留下 - 因此打破对称性。
注意:rand 函数并不是真正随机的,它是伪随机的。该文档说它使用 Mersenne Twister PRNG,这是一种质量相对较高(不是很好的加密货币)的众所周知且值得信赖的 PRNG。如果您的 PRNG 质量很低,则获得精确的副本可能是一个潜在问题 - 但在这种情况下您应该是安全的。