rand函数的documentation中,据说:


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


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



附带说明一下,我对此很好奇,因为在吴安德(Andrew Ng)的机器学习课程中建议在训练神经网络时,在随机分配所有theta的值(从而破坏对称性)时使用rand函数。

最佳答案

从理论上讲,如果它确实是随机的,那么可以-所有值都相等的可能性很小。但是,这些都是浮点数-因此存在许多微小的差异。如果您担心要获得一些权重完全相同的值,则应该购买很多乐透彩票-您更有可能赢得一张彩票!

即使最终有几个权重完全相同,然后又无法更改-也不会对整个网络产生太大的影响。

现代的正则化技术(例如,辍学)使问题(实际上不是问题)变得更少。对于每个训练批次,辍学将仅使用神经元的随机子集,并且只有那些神经元会被更新-因此,如果捆绑了两个权重,则最终将为一个批次选择一个权重(并调整其权重),而另一个则单独保留-因此打破对称。

注意:rand函数不是真正的随机性,它是伪随机性。该文档说,它使用的是Mersenne Twister PRNG,这是一种相对较高质量(不是很好的加密)的知名和受信任的PRNG。如果PRNG的质量很低,则可能会出现重复的问题-但是在这种情况下,您应该是安全的。

08-24 19:50