谁能告诉我为啥我们总是在机器学习中使用高斯分布?

Posted

技术标签:

【中文标题】谁能告诉我为啥我们总是在机器学习中使用高斯分布?【英文标题】:Anyone can tell me why we always use the gaussian distribution in Machine learning?谁能告诉我为什么我们总是在机器学习中使用高斯分布? 【发布时间】:2012-09-18 22:41:18 【问题描述】:

例如,我们总是假设数据或信号误差是高斯分布?为什么?

【问题讨论】:

建议在这里提问stats.stackexchange.com 由于中心极限定理,并非总是如此,但一般而言 【参考方案1】:

您将从具有数学头脑的人那里得到的答案是“由于中心极限定理”。这表达了这样一种想法,即当您从几乎任何分布*中获取一堆随机数并将它们加在一起时,您将得到近似正态分布的东西。加在一起的数字越多,它的正态分布就越多。

我可以在 Matlab/Octave 中演示这一点。如果我生成 1000 个介于 1 和 10 之间的随机数并绘制直方图,我会得到这样的结果

如果我不生成单个随机数,而是生成 12 个并将它们相加,然后执行 1000 次并绘制直方图,我会得到如下结果:

我在顶部绘制了具有相同均值和方差的正态分布,因此您可以了解匹配的接近程度。你可以看到我用来生成这些图的代码at this gist。

在典型的机器学习问题中,您会遇到来自许多不同来源的错误(例如,测量错误、数据输入错误、分类错误、数据损坏......),并且认为这并非完全不合理所有这些错误的综合影响是正常的(当然,你应该经常检查!)

更务实的问题答案包括:

因为它使数学变得更简单。正态分布的概率密度函数是二次的指数函数。取对数(就像你经常做的那样,因为你想最大化对数似然)给你一个二次方。对此求微分(以求最大值)为您提供一组线性方程,这些方程易于解析求解。

很简单 - 整个分布由两个数字描述,均值和方差。

阅读您的代码/论文/报告的大多数人都熟悉它。

这通常是一个很好的起点。如果你发现你的分布假设给你带来了糟糕的表现,那么也许你可以尝试不同的分布。但是您可能应该首先考虑其他方法来提高模型的性能。

*技术点 - 它需要有有限的方差。

【讨论】:

【参考方案2】:

高斯分布是最“自然”的分布。他们无处不在。以下是让我认为高斯分布是最自然分布的属性列表:

nikie 指出,几个随机变量(如骰子)的总和趋于高斯分布。 (中心极限定理)。 机器学习中出现了两个自然的思想,标准差和最大熵原理。如果你问这个问题,“在标准差为 1 且均值为 0 的所有分布中,熵最大的分布是什么?”答案是高斯分布。 在高维超球体内随机选择一个点。任何特定坐标的分布近似为高斯分布。对于超球体表面上的随机点也是如此。 从高斯分布中抽取多个样本。计算样本的离散傅里叶变换。结果具有高斯分布。我很确定高斯分布是唯一具有此属性的分布。 傅立叶变换的特征函数是多项式和高斯的乘积。 微分方程 y' = -x y 的解是高斯方程。这一事实使高斯计算更容易。 (高阶导数涉及 Hermite 多项式。) 我认为高斯分布是唯一在乘法、卷积和线性变换下都闭合的分布。 涉及高斯问题的最大似然估计量往往也是最小二乘解。 我认为随机微分方程的所有解都涉及高斯。 (这主要是中心极限定理的结果。 “正态分布是唯一的绝对连续分布,其所有超出前两个的累积量(即除均值和方差之外)均为零。” - ***。 对于偶数 n,高斯的 n 阶矩只是一个整数乘以标准差的 n 次方。 许多其他标准分布与高斯分布密切相关(即二项式、泊松、卡方、Student t、Rayleigh、Logistic、Log-Normal、Hypergeometric ...) “如果 X1 和 X2 是独立的并且它们的和 X1 + X2 是正态分布的,那么 X1 和 X2 也必须是正态的”——来自***。 “正态分布均值的共轭先验是另一个正态分布。” -- 来自***。 使用高斯函数时,数学运算更容易。 Erdős–Kac 定理暗示“随机”整数的质因子分布是高斯分布。 气体中随机分子的速度呈高斯分布。 (标准差 = z*sqrt( k T / m) 其中 z 是常数,k 是玻尔兹曼常数。) “高斯函数是量子谐振子基态的波函数。” -- 来自*** 卡尔曼滤波器。 高斯-马尔可夫定理。

这篇文章交叉发布在http://artent.net/blog/2012/09/27/why-are-gaussian-distributions-great/

【讨论】:

我认为随机微分方程的所有解都涉及高斯。 -- 这不是因为 SDE 通常使用布朗运动来定义随机部分吗?由于布朗运动具有高斯增量,因此解决方案通常涉及高斯也就不足为奇了!【参考方案3】:

信号误差通常是许多独立误差的总和。例如,在 CCD 相机中,您可能会有大部分独立的光子噪声、传输噪声、数字化噪声(甚至更多),因此由于central limit theorem,误差通常会呈正态分布。

此外,将误差建模为正态分布通常会使计算变得非常简单。

【讨论】:

【参考方案4】:

我有同样的问题“对预测变量或目标进行高斯变换有什么好处?”事实上,caret 包有一个预处理步骤可以实现这种转换。

这是我的理解-

1) Nature 中的数据分布通常遵循正态分布(少数示例,例如 - 年龄、收入、身高、体重等)。因此,当我们不了解底层分布模式时,它是最好的近似值。

2) 大多数情况下,ML/AI 的目标是努力使数据线性可分,即使这意味着将数据投影到更高维空间以找到合适的“超平面”(例如 - SVM 内核、神经网络层、Softmax 等)。这样做的原因是“线性边界总是有助于减少方差,并且是最简单、自然和可解释的”,除了降低数学/计算复杂性。而且,当我们瞄准线性可分性时,减少异常值、影响点和杠杆点的影响总是好的。为什么?因为超平面对影响点和杠杆点(又名异常值)非常敏感——为了理解这一点——让我们转移到一个二维空间,我们有一个预测变量(X)和一个目标(y)并假设存在一个很好的正相关在 X 和 y 之间。鉴于此,如果我们的 X 是正态分布的并且 y 也是正态分布的,那么您最有可能拟合一条直线,该直线的中心有许多点而不是端点(又名异常值、杠杆/影响点) )。因此,在对看不见的数据进行预测时,预测的回归线很可能几乎没有变化。

将上述理解外推到 n 维空间并拟合超平面以使事物线性可分确实很有意义,因为它有助于减少方差。

【讨论】:

【参考方案5】:

    数学通常不会出来。 :)

    正态分布很常见。请参阅 nikie 的回答。

    即使是非正态分布也常常被视为正态分布 分布偏差较大。是的,这是一个肮脏的黑客攻击。

第一点可能看起来很有趣,但我针对存在非正态分布且数学变得极其复杂的问题进行了一些研究。在实践中,通常会进行计算机模拟来“证明定理”。

【讨论】:

【参考方案6】:

为什么它在机器学习中被大量使用是一个很好的问题,因为在数学之外使用它的通常理由往往是虚假的。

你会看到人们通过“中心极限定理”给出正态分布的标准解释。

但是,这样做有问题。

你在现实世界中发现的许多事情是这个定理的条件往往不满足……甚至不满足。尽管这些东西看起来是正态分布的!

所以我说的不仅仅是那些看起来不是正态分布的东西,还有那些看起来是正态分布的东西。

在统计学和经验科学中,这方面的历史由来已久。

不过,对于中心极限定理的解释,仍然存在许多智力惯性和错误信息,这些信息已经持续了几十年。我想这可能是答案的一部分。

尽管正态分布可能不像以前想象的那么正常, 以这种方式分配事物的时间必须有一些自然基础。

最好但不完全充分的理由是最大熵解释。这里的问题是熵有不同的度量。

无论如何,机器学习可能只是在某种思维定势下发展起来的,同时伴随着符合高斯分布的数据的确认偏差。

【讨论】:

【参考方案7】:

我最近在 David Mackay 的书“信息理论、推理和学习算法”第 28 章中读到了一个有趣的观点,我将在这里简要总结一下。

假设我们想在给定一些数据P(w|D)的情况下近似一个参数的后验概率。一个合理的近似值是围绕某个兴趣点的泰勒级数展开。这一点的一个很好的候选者是最大似然估计,w*。使用 P 在 w* 处的 log-概率的二阶泰勒级数展开:

log(P(w|D)) = log(P(w*|D) ) + ∇log(P(w*|D))(w-w*) - (1/2)(w-w*)^T(-∇∇log(P( w*|D)))(w-w*) +O(3)

由于 ML 是最大值,∇log(P(w*|D))=0。定义 Γ=(-∇∇log(P(w*|D))),我们有:

log(P(w|D)) ≈ log(P(w*|D) ) - (1/2)(w-w*)^T Γ(w-w*)。

取加法项的指数:

P(w|D) ≈ cte exp(- (1/2)(w- w*)^T Γ(w-w*))

其中 cte=P(w*|D)。所以,

高斯 N(w*,Γ^(-1)) 是任何给定分布在其最大似然处的二阶泰勒级数逼近。

其中 w* 是分布的最大似然,Γ 是其在 w* 处的对数概率的 Hessian。

【讨论】:

以上是关于谁能告诉我为啥我们总是在机器学习中使用高斯分布?的主要内容,如果未能解决你的问题,请参考以下文章

机器学习算法,机器让我学习

机器学习笔记:高斯过程

一元高斯分布

谁能告诉我为啥会收到 SQL*PLUS 无效标识符错误?

机器学习-单高斯分布参数估计

机器学习强基计划7-4:详细推导高斯混合聚类(GMM)原理(附Python实现)