八度音rand函数的输出是否可能所有(或部分)数字相等?

rand函数的文档中提到:

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

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


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


回答:

理论上,如果是真正的随机,那么是的——总是存在一个小的可能性,所有值都会相等。然而,这些是浮点数——所以存在很多微小的差异。如果你担心几个权重会得到完全相同的值,你应该去买很多彩票——你中奖的几率会更大!

即使几个权重最终完全相同,并且无法改变——这也不会对整个网络造成太大的影响。

现代正则化技术,如drop-out,使这个问题变得更加不重要。Dropout只会在每个训练批次中使用神经元的一个随机子集,并且只有这些神经元会被更新——所以如果两个权重相同,最终其中一个会被选中用于一个批次(并调整其权重),而另一个则保持不变——从而打破对称性。

注意:rand函数并不是真正的随机,它是随机。文档中说它使用了梅森旋转算法(Mersenne Twister)伪随机数生成器,这是一个相对高质量(不是加密级别)的、众所周知且值得信赖的伪随机数生成器。如果你使用的是一个非常低质量的伪随机数生成器,得到完全相同的数值可能会成为一个潜在的问题——但在这种情况下你应该是安全的。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注