机器学习中的“随机”(Stochastic)是什么意思?

许多机器学习算法的行为和性能被称为是随机的。

随机性是指一个过程,其结果涉及一些随机性和不确定性。它是一个数学术语,与“*随机性*”和“*概率性*”密切相关,可以与“*确定性*”的概念相对比。

机器学习算法的随机性是机器学习中一个重要的基础概念,要有效解释许多预测模型的行为,就必须理解它。

在本篇文章中,您将了解到机器学习中随机性的入门介绍。

阅读本文后,你将了解:

  • 如果一个变量或过程的结果涉及不确定性或随机性,那么它就是随机的。
  • 随机性是随机和概率性的同义词,但与非确定性不同。
  • 许多机器学习算法之所以是随机的,是因为它们在优化或学习过程中明确使用了随机性。

开始您的项目,阅读我的新书《机器学习概率》,其中包含分步教程和所有示例的Python源代码文件。

让我们开始吧。

A Gentle Introduction to Stochastic in Machine Learning

机器学习中随机性的入门指南
照片来源:Giles Turnbull,部分权利保留。

概述

本教程分为三个部分;它们是:

  1. “*随机性*”是什么意思?
  2. 随机性 vs. 随机、概率性和非确定性
  3. 机器学习中的随机性

“*随机性*”是什么意思?

如果事件或结果的发生涉及随机性或不确定性,则该变量是随机的

……“随机性”意味着模型中存在某种随机性

— 第 66 页,《思考贝叶斯》

如果一个过程支配着一个或多个随机变量,那么它就是随机的。

游戏是随机的,因为它们包含随机元素,例如纸牌游戏和棋盘游戏中的洗牌或掷骰子。

在现实生活中,许多不可预测的外部事件会将我们带入意想不到的境地。许多游戏通过包含随机元素(例如掷骰子)来反映这种不可预测性。我们将这些称为随机游戏。

— 第 177 页,《人工智能:一种现代方法》,第 3 版,2009 年。

随机性通常用于描述使用或利用随机性的数学过程。常见的例子包括布朗运动马尔可夫过程蒙特卡洛抽样等。

既然我们有了一些定义,让我们尝试通过将其与其他不确定性概念进行比较来添加更多背景信息。

想学习机器学习概率吗?

立即参加我为期7天的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

随机性 vs. 随机、概率性和非确定性

在本节中,我们将通过将其与“*随机*”、“*概率性*”和“*非确定性*”等相关术语进行比较,来更好地理解变量或过程是随机性的概念。

随机性 vs. 随机

在统计学和概率论中,一个变量称为“随机变量”,它可以取一个或多个结果或事件。

这是用于描述可测量事物的通用名称。

总的来说,随机性是随机的同义词。

例如,随机变量是随机变量。随机过程是随机过程。

通常,“随机”用于指代序列中观测值之间缺乏依赖性。例如,公平骰子的投掷结果是随机的,公平硬币的抛掷结果也是随机的。

严格来说,随机变量或随机序列仍然可以使用概率分布进行概括;它可能只是一个均匀分布。

如果我们有兴趣关注变量的概率性质,例如下一个事件对当前事件的部分依赖性,我们可能选择将某事物描述为随机而非随机。如果我们想将注意力集中在事件的独立性上,我们可能会选择随机而非随机。

随机性 vs. 概率性

总的来说,随机性是概率性的同义词。

例如,随机变量或过程是概率性的。它可以使用概率工具进行概括和分析。

最值得注意的是,事件的分布或序列中的下一个事件可以用概率分布来描述。

如果我们希望强调依赖性,例如我们正在使用参数模型或已知的概率分布来概括变量或序列,我们可能选择将变量或过程描述为概率性而非随机性。

随机性 vs. 非确定性

如果序列中的下一个事件可以从当前事件精确确定,则该变量或过程是确定性的。

例如,确定性算法在给定相同输入时将始终产生相同的结果。相反,非确定性算法可能为相同输入产生不同的结果。

随机变量或过程不是确定性的,因为其结果存在不确定性。

尽管如此,随机变量或过程也不是非确定性的,因为非确定性仅描述了可能的结果,而不是概率。

将某事物描述为随机性比将其描述为非确定性更强的断言,因为我们可以使用概率工具进行分析,例如期望结果和方差。

……“随机性”通常意味着结果的不确定性是根据概率量化的;非确定性环境是指行动以其可能的结果为特征,但没有给它们分配概率的环境。

— 第 43 页,《人工智能:一种现代方法》,第 3 版,2009 年。

机器学习中的随机性

许多机器学习算法和模型被描述为随机的。

这是因为许多优化和学习算法都必须在随机领域中运行,并且因为一些算法利用了随机性或概率性决策。

让我们更仔细地了解不确定性的来源以及机器学习中随机算法的性质。

随机问题领域

随机领域是指涉及不确定性的领域。

……机器学习必须始终处理不确定的量,有时还需要处理随机的(非确定性的)量。不确定性和随机性可能来自许多来源。

— 第 54 页,《深度学习》,2016 年。

这种不确定性可能来自目标或目标函数,该函数受到统计噪声或随机误差的影响。

它也可能来自于用于拟合模型的数据是更广泛总体的不完整样本。

最后,选择的模型很少能够捕捉到领域的所有方面,而是必须泛化到未见过的情况并失去一些保真度。

随机优化算法

随机优化是指一类优化算法,它们在寻找目标函数的极值时明确使用随机性,或者优化本身具有随机性(统计噪声)的目标函数。

最常见的是,随机优化算法在探索搜索空间和利用已学到的搜索空间信息之间寻求平衡,以精确找到极值。搜索空间中下一个位置的选择是随机选择的,即根据最近搜索过的区域进行概率性选择。

随机爬坡算法从所有上升的移动中随机选择一个;选择的概率可以随着上升移动的陡峭程度而变化。

— 第 124 页,《人工智能:一种现代方法》,第 3 版,2009 年。

随机优化算法的流行例子是

  • 模拟退火
  • 遗传算法
  • 粒子群优化

粒子群优化(PSO)是一种随机优化方法,模仿了鸟群的社会行为。

— 第 9 页,《计算智能导论》

随机学习算法

大多数机器学习算法是随机的,因为它们在学习过程中使用了随机性。

使用随机性是一个特性,而不是一个错误。它允许算法避免卡住,并获得确定性(非随机性)算法无法达到的结果。

例如,一些机器学习算法甚至在其名称中包含“*随机*”,例如

  • 随机梯度下降(优化算法)。
  • 随机梯度提升(集成算法)。

随机梯度下降通过在每次迭代中随机打乱训练数据集来优化模型参数,例如人工神经网络,这会导致模型参数更新的顺序不同。此外,神经网络中的模型权重通常初始化为随机的起始点。

大多数深度学习算法都基于一种称为随机梯度下降的优化算法。

— 第 98 页,《深度学习》,2016 年。

随机梯度提升是一系列决策树算法。随机方面指的是用于构建树的训练数据集中的随机子集,特别是树的分叉点。

随机算法行为

由于许多机器学习算法都利用了随机性,因此它们的性质(例如行为和性能)也是随机的。

机器学习算法的随机性最常见于用于分类和回归预测建模问题的复杂和非线性方法中。

这些算法在从训练数据构建模型的过程中利用了随机性,这会导致每次在相同数据上运行相同的算法时都会拟合不同的模型。反过来,这些略有不同的模型在评估时在保留的测试数据集上具有不同的性能。

非线性机器学习算法的这种随机行为对于那些假设学习算法是确定性的初学者来说是具有挑战性的,例如在相同数据上运行时拟合相同的模型。

这种随机行为要求模型性能必须使用描述模型平均或预期性能的汇总统计数据进行汇总,而不是任何单个训练运行的模型性能。

有关此主题的更多信息,请参阅此帖子

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

文章

文章

总结

在本篇文章中,您了解了机器学习中随机性的入门介绍。

具体来说,你学到了:

  • 如果一个变量或过程的结果涉及不确定性或随机性,那么它就是随机的。
  • 随机性是随机和概率性的同义词,但与非确定性不同。
  • 许多机器学习算法之所以是随机的,是因为它们在优化或学习过程中明确使用了随机性。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。

掌握机器学习中的概率!

Probability for Machine Learning

增进你对概率的理解

...只需几行python代码

在我的新电子书中探索如何实现
机器学习概率

它提供了关于以下内容的自学教程端到端项目
贝叶斯定理贝叶斯优化分布最大似然交叉熵校准模型
以及更多...

最终在你的项目中驾驭不确定性

跳过学术理论。只看结果。

查看内容

28 条关于“机器学习中的随机性是什么意思?”的回复

  1. Saroj Thapa 2019 年 11 月 22 日上午 9:43 #

    好文章!谢谢。随机性 == 随机性和不确定性。我没想到许多机器学习算法会明确利用随机性。从这篇文章中学到了很多。

  2. Gaurav 2019 年 11 月 26 日下午 5:23 #

    很棒的介绍。我一直对 SGD 感到好奇……然后您对随机性/确定性/非确定性之间的区别进行了精彩的解释。太棒了。

  3. Germán 2019 年 12 月 1 日晚上 8:52 #

    谢谢 Jason 的文章,我喜欢你自上而下的书籍,它们对于快速尝试事物非常有用,而且内容也很完整。

    关于随机性,也许我们可以区分训练和估计点来使其更清晰?我的意思是,虽然训练过程在拟合神经网络时可能是随机的,但估计过程在预测输出时(对于已训练好的网络模型)是确定性的(即,我们希望对相同的输入获得相同的输出)。

    • Jason Brownlee 2019 年 12 月 2 日上午 6:02 #

      谢谢!

      完全正确。训练是随机的,推理是确定的。

      很好的区分和建议。

  4. Grzegorz Kępisty 2020 年 4 月 24 日凌晨 12:49 #

    你好,Jason!

    谢谢你写这篇文章,它让很多术语都变得清晰了!我可以想象增加一个子章节,称为:“随机性 vs. 统计性”。

    只是出于好奇:你推荐的后续阅读文章是手动插入的,还是你应用了某种文档建议模型/算法(例如 TF-IDF)?

    此致!

    • Jason Brownlee 2020 年 4 月 24 日上午 5:46 #

      谢谢。

      我手动撰写这些章节,同时收集教程的资源。我总的来说非常喜欢手动/模拟的方式 :)

  5. Matt 2020 年 9 月 8 日下午 4:08 #

    嗨,Jason,

    为了我自己理解清楚,如果我们为 ML 模型在某些数据上设置一个随机种子(以及 random_state)

    (例如种子/状态 = 123),那么每次训练迭代得到的模型都会相同,对吗?

    谢谢,
    Matt

    • Jason Brownlee 2020 年 9 月 9 日上午 6:43 #

      这取决于种子是用于什么。

      如果种子用于重采样方法或训练/测试分割,那么您将拥有不同的数据分割和训练集,种子也不同。

      • George Frew 2021 年 3 月 3 日上午 11:41 #

        我七十多岁了,受过良好的教育和阅读,但听到我 9 岁的孙子说了我以前从未听过的词。我和我的女儿、孙子从滑雪回来,詹姆斯说了些什么,他妈妈问他是不是在“挖苦”。他说不,“斯科斯蒂克”。当被问及他的意思时,他说“突然冒出来”。我们不知道这个词。所以第二天我搜了一下“我以为他说的话”,谷歌问“我的意思是 the scholastic 吗?”,意思是“随机的”或“突然冒出来的”。这正是詹姆斯的意思。他从他的一位小学老师那里听到了这个词,记住了这个词,意思是“突然冒出来”。他读四年级了。提醒我们这些成年人,永远不要低估别人,说“不,你错了……那是不对的,根本没有这个词,那不可能发生”等等。这会在很多方面造成多大的伤害。
        我今天给詹姆斯打了电话,告诉他确实有这个词,它的意思确实是“突然冒出来”的“随机”。
        太多的父母、老师或其他人在确信自己是对的时,会过快地做出判断!
        但如果我们努力,我们可以进步!!!

      • Ashwini 2021 年 9 月 25 日凌晨 2:13 #

        “随机搜索方法”中有什么值得期待的?

        • Adrian Tam
          Adrian Tam 2021 年 9 月 25 日上午 4:38 #

          例如,模拟退火。因为它随机搜索不同的可能解决方案。

  6. Bilal Malik 2020 年 10 月 7 日下午 6:26 #

    出色的解释。我明白了随机/随机/概率性通常是同义词,但我仍然不明白为什么会用一个词而不是另一个词。

    • Jason Brownlee 2020 年 10 月 8 日上午 8:29 #

      好问题,谢谢!我会考虑如何解释何时使用每个词。

  7. Mia 2021 年 1 月 20 日上午 5:38 #

    我喜欢你的页面,信息总是很棒且易于理解!

  8. Stephanie June Knight 2021 年 2 月 17 日晚上 11:32 #

    太棒了,我连基础都明白了(这说明了很多问题!)

  9. Mingkai 2021 年 2 月 26 日下午 12:49 #

    谢谢 Jason,阅读你的帖子总是能带来灵感!

    在看待机器学习算法的随机性时,你认为在交叉验证期间进行超参数搜索的最佳协议是什么?最优超参数是否会因随机种子而改变?

    你提到我们应该显示多次训练的平均性能,而不是单次训练的性能,我对此非常赞同。假设我们找到了一组最优超参数(使用特定的随机种子),仅仅改变随机种子来估计性能的均值和方差是否足够?

    谢谢

  10. Ramzi 2021 年 6 月 2 日晚上 11:16 #

    你好,
    我使用了单类分类。由于机器学习算法的随机性,我想重复实验几次并计算指标的平均值。在我写的代码中

    tprs=[]
    fprs=[]
    for i in rang(2)
    clf=OneClassSVM(nu=0.1, kernel=’rbf’).fit(x_train)
    score=clf.decision_function(x_test)
    fpr, tpr, thresholds=metrics.roc_curve(y_test, score)
    tprs.append(tpr)
    fprs.append(fpr)
    print(np.mean(tprs), np.mean(fprs)) # 此行错误

    np.mean() 中出现此错误是因为 fpr 或 tpr 的形状在两次迭代中都发生了变化。如何纠正此错误并计算 fpr 和 tpr 的平均值?

  11. Frank Russo 2024 年 2 月 7 日下午 12:26 #

    我将购买您的《机器学习概率》电子书……此外,我对机器学习中的随机过程和量子力学感兴趣——您对机器学习中的随机和 QM 有什么建议吗!?请告诉我……谢谢,FR

    • James Carmichael 2024 年 2 月 8 日上午 10:04 #

      您好 Frank……感谢您的支持!我们不提供与 QM 相关的内容。如果您对我们的内容有任何疑问,请告知我们。

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。