在机器学习实验中正确设置随机种子并不像你想象的那么简单

机器学习模型以明显和意想不到的方式利用随机性。在概念层面上,这种不确定性可能会影响模型的收敛速度、结果的稳定性以及网络的最终质量。

在实际层面上,这意味着您可能很难在模型的不同运行中重现相同的结果,即使您在相同的训练数据上运行相同的脚本也是如此。它还可能导致在判断性能变化到底是由于实际模型或数据修改、还是仅仅是由新的随机数造成的影响带来挑战。

为了解决这些变化源,一个关键的出发点是对数据、模型代码和参数以及导致特定结果的环境的细节有充分的可见性。这一级别的再现性将减少运行过程中的意外变化,并帮助您调试机器学习实验。

在本文中,我们通过使用Comet.ml示例仔细设置随机种子,来探索机器学习中出现随机性的区域,以及如何获得可重复、确定性和更广泛的结果。

为什么随机性很重要?

很明显,机器学习中的再现性很重要,但是我们如何平衡这一点和随机性的需要呢?随机性既有实际的好处,也有迫使我们使用随机性的约束。

实际上,记忆和时间的限制也迫使我们“依赖”于随机性。梯度下降是机器学习模型训练中最常用和应用最广的算法之一,然而,基于整个数据集计算梯度步长对于大型数据集和模型是不可行的。随机梯度下降法(SGD)只使用从训练集中随机选取的一个或一小批训练样本对特定迭代中的一个参数进行更新。

虽然SGD可能导致梯度估计中的噪声误差更大,但这种噪声实际上可以鼓励勘探更容易地避开浅层局部极小值。您可以通过模拟退火(SGD的扩展)更进一步,在模拟退火中,模型有目的地采取随机步骤以寻求更好的状态。

你可能感兴趣的:(机器学习,seed,机器学习)