Octave的rand函数能否产生所有(或某些)数字相等的输出?

时间:2015-12-24 16:43:27

标签: machine-learning neural-network octave

rand函数的documentation中,有人说:

  

返回一个矩阵,其中随机元素均匀分布在区间(0,1)上。

我的问题是:是否存在任何机会,这些随机数(或全部)在输出中是否相等?

作为旁注,我对此感到好奇,因为在Andrew Ng的机器学习课程中建议在随机化所有时间点的值(因此打破对称性)时使用rand函数,训练神经网络。

1 个答案:

答案 0 :(得分:3)

理论上,如果它真的是随机的,那么是的 - 所有值都是平等的。然而,这些是花车 - 所以有很多微小的差异。如果您担心获得几个权重的完全相同的值,您应该购买很多乐透彩票 - 您更有可能赢得一个!

即使一些权重最终完全相同,然后无法改变 - 这也不会对整个网络造成太大影响。

现代正规化技术,例如辍学,使(不是真正的)问题更加严重。 Dropout将仅为每个训练批次使用神经元的随机子集,并且只有那些被更新 - 因此如果两个权重被绑定,最终将选择一个批次(并且其权重调整)而另一个单独留下 - 因此打破对称性。

注意:rand函数不是真正随机的,它的 Pseudo 随机。文档称它使用了Mersenne Twister PRNG,这是一种相对高质量(不是加密)的知名且值得信赖的PRNG。如果您的PRNG质量非常低,那么获得精确的重复数据可能是一个潜在的问题 - 但在这种情况下您应该是安全的。