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

rand函数的文档中提到:

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

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


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


回答:

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

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

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

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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