2.3 一些常见的分布
目前,我们已经了解了随机数的来源,以及如何使用随机变量从分布中选择值。现在让我们来看看一些流行的分布,这些分布通常用于生成机器学习算法中使用的随机数。
大部分的这些分布都是作为内置例程由主要的库提供的,因此可以很容易加以指定和使用。
我们用连续(continuous)的形式来展示这些分布,而大多数库会提供分布的连续和离散两个版本,或者可能会提供一个通用的例程,让我们可以根据需要将任何连续的分布转换为离散版本。
2.3.1 均匀分布
图2.6所示为均匀分布(uniform distribution)的例子。基本的均匀分布是:除了0和1之间,其他区间的值都是0,0~1的值是1。0和1这两个数字正好在两个定义交界的地方,这里我们把0和1处的值都设为1。
图2.6 一个均匀分布的例子。在这个版本中,0~1的输入(包括0和1)所产生的输出都是1, 而其他输入产生的输出都是0。按照惯例,图中不可见的部分被假定为图两端的输入所显示的值,因此图中所示区域的右侧和左侧的输入处处为0
在这个图中,看起来0处有两个值,1处也有两个值,但其实不是这样的,我们的惯例是:非实心的圈(如下方线上的圈)表示“这一点不是直线的一部分”,而实心圈(如上方线上的圈)表示“这一点是直线的一部分”。因此,在输入值0和1处,图形的输出是1。
这是一个常见的定义,但是有些方式会使得其中一个或者两个输出为0。这通常需要做一些检查。
这种分布有两个基本特性:首先,我们只能得到0~1的值,因为所有其他值的概率都是0;其次,0~1的每个值都是等可能的,我们得到0.25、0.33或0.793718的概率是一样的。
我们说图2.6所示的值在0~1的范围内是分布均匀的,或者说它们是常数(constant),抑或说是平面(flat)的。这告诉我们,这个范围内的所有值是等概率的。我们也说它们有限的(finite),意思是所有非零值在某个特定的范围内(即可以肯定地说0和1是它能返回的最小值和最大值)。
通常,创建均匀分布的库函数会允许我们去选择非零区域开始和结束的地方,而不是固定在0和1。除了默认的0~1的选项,最受欢迎的应该是−1~1,库会对一些细节进行处理,比如调整函数的高度来使其下方的面积始终为1(这是将任何图表转换为概率分布的条件)。
2.3.2 正态分布
在均匀分布之后,下一个最流行的分布可能是正态分布(normal distribution),也叫作高斯分布(Gaussian distribution),或者简单地称其为钟形曲线(bell curve)。与均匀分布不同,正态分布的曲线是平滑的,没有尖锐的拐角或者突然的跳跃。图2.7显示了一些典型的正态分布。
图2.7 一些典型的正态分布。其基本形状可以向左或向右移动,也可以在高低间进行缩放,抑或将其进行拉伸或压缩。总之,经过这些变换后,它也仍然是正态分布的。(a)典型正态分布;(b)正态分布的中心移动到1;(c)正态分布的中心移动到−1,同时形状变得更加狭窄,为了使曲线下方的面积保持在1,库会自动调整图形的垂直比例;(d)正态分布的中心移动到−1,同时形状变得更加宽大,同样,为了使曲线下方的面积保持在1,库会自动调整图形的垂直比例,因为图形更宽了,所以高度降低
图2.7中的4条曲线形状基本相同,形状的变化只是由曲线的水平移动或是水平缩放(即拉伸或压缩)引起的。这种水平缩放使得库自动地在垂直方向缩放曲线,因此曲线下方的面积加起来始终是1。
其实垂直缩放对我们来说并不重要,因为我们只关心样本的输出。图2.8显示了我们从每个分布中提取到的一些有代表性的样本。可以看到,它们聚集在分布的值比较高的地方(也就是说,得到一个有着这些值的样本的概率比较高)较多,而在分布的值比较低的地方(得到一个有着这些值的样本的概率比较低)较少。这些点(代表样本值)在垂直方向的上下起伏是没有意义的,只是为了便于观察。
对于正态分布来说,除了平滑隆起的区域,其他位置都近乎为0。不过,当接近凸起的两端时,其值会越来越接近于0,但从未达到0。所以我们说,这个分布的宽度是无限的(infinite)。在实际操作中,我们有时会将偏离中心点一定距离的值夹断(clamp),并假设超出该距离的部分为0,从而得到一个有限的分布。
正态分布在很多领域(包括机器学习)都很流行,因为从生物学到天气的大量实际测量的观察,人们发现它们的返回值都遵循正态分布。同时,正态分布的数学性质在很广泛的领域都很容易使用。
使用符合正态分布的随机变量产生的值被称为正态分布集(normally distributed),有时也被称为正态偏差(normal deviation)。我们也说它们拟合(fit)或者遵循正态分布。
图2.8 每个点的水平位置展示了从各个分布中提取到的样本值,点的垂直位置没有什么特殊含义,只是为了让它们更容易区分
每个正态分布由两个数字定义:均值(凸起的中心的位置)和标准差(standard deviation)(形状的水平拉伸或压缩)。
均值告诉我们凸起的中心的位置,图2.9显示了图2.7中的4个正态分布以及它们的平均值。正态分布一个很好的性质是:它的均值同时也是中位数和众数。
图2.9 正态分布的均值是凸起的中心的位置,这里用竖线表示
标准差则是一个数字,通常由小写希腊字母σ(sigma)表示,用于表示凸起的宽度。想象一下从凸起的中心开始对称地向外移动,直到囊括曲线下方68%的面积,那么从凸起中心到该区域的任意一端的距离就是标准差,所以“标准差”只是一个距离。图2.10显示了4个正态分布,其中一个标准差是用中心到阴影区域的任意边的距离表示的。
图2.10 标准差是衡量一个正态分布的“拉伸”程度的指标,阴影区域显示的是曲线下方的面积。阴影部分约占总面积的68%,从均值(或者说中心)到阴影区域任意边的距离就是正态分布的标准差
如果再对称地从中心向外移动一个标准差,就会将曲线下约95%的面积封闭起来,再对称地从中心向外移动一个标准差,就会将曲线下约99.7%的面积封闭起来,如图2.11所示。因为是使用的标准差σ,所以这个性质有时会被称为3σ法则,有时也被称为68-95-99.7法则。
图2.11 标准差可以帮助我们求出事件发生的概率。沿着横轴距离均值一个标准差的范围内的点(如果均值是0,那么范围就是(−σ,σ))占所有值的68%左右,而两个标准差范围内的点则占所有值的95%左右,3个标准差范围内的点占所有值的99.7%左右
换句话说,如果由正态分布绘出了1000个样本,就有大约680个样本将分布在距离均值不超过一个标准差的范围内(或者是在−σ~σ的范围内),大约950个样本将分布在距离均值不超过两个标准差的内(或者是在−2σ~2σ的范围内),大约997个样本将分布在距离均值不超过3个标准差的内(或者是在−3σ~3σ的范围内)。
总之,均值显示了曲线的中心位置,而标准差显示了曲线的伸展情况。标准差越大,曲线就会越宽,因为68%的截断距离会变得更远。
有时人们用一个不一样但与之相关的值来代替标准差,这个值称为方差(variance)。方差就是标准差自身的平方,有时在计算中这个值使用起来会更方便。
正态分布的吸引力不仅在于它的数学性质,还在于它自然地描述了许多真实世界的统计数据。如果我们测量一些地区成年男性的身高、向日葵的大小抑或果蝇的寿命,就会发现这些数据都趋于正态分布。
2.3.3 伯努利分布
另一个有用的特殊分布称为伯努利分布(Bernoulli distribution),这个离散分布只返回两个可能的值:0和1。伯努利分布的一个常见例子是抛掷硬币得到正反面的分布。
我们用字母p来描述得到1的概率。由于两个概率相加必须得1(忽略奇怪的着陆情况,硬币必须正面或反面着陆),这意味着返回0的概率是1−p。
图2.12直观地显示了抛掷一枚质地均匀的硬币和一枚质地不均匀的硬币的情况。
(a) (b)
图2.12 伯努利分布告诉我们得到0或1的概率。(a)在每次抛掷一枚质地均匀的硬币时,获得正面或反面的概率相等;(b)抛掷一枚质地不均匀的硬币出现反面的概率是70%,出现正面的概率是30%
我们可以把这两个值标记为0和1(或者是正面和反面)以外的东西,例如,如果我们在看照片,它们就可能是一张猫的照片和一张不是猫的照片。
如果我们画出了大量的值并找到它们的均值,那么这很可能就是该分布的均值。伯努利分布的均值是p。关于伯努利分布的众数和中位数的描述有点麻烦,此处不再赘述。
伯努利分布似乎有点过于简单了,因为它描述的是一种简单的情况。它的价值在于:它给了我们一种方法来表示得到一个分布的两个值中任意一个的概率,所以使用了与本节中其他分布相同的形式来表达。这意味着我们可以使用与处理复杂分布时相同的方程和代码来处理这种更简单的情况。
2.3.4 多项式分布
伯努利分布只返回两个可能值中的一个,但是假设我们正在做一个实验,需要从更多的数字(或者说更多的可能性)中返回一个呢?例如,我们不再进行只可能出现正面或反面的抛掷硬币,而是改为抛掷一个20面的骰子,就会得到20个值中的任意一个。
为了模拟抛掷骰子的结果,随机变量需要返回1~20中的一个数字。在这种情况下,构建一个列表是很有效的。列表中除了我们取出的那一项(它被设为1),其他项都为0。当我们构建机器学习系统来将输入分为不同的类别时,构建列表会非常有用,例如描述照片中出现的是50种不同动物中的哪一种。
下面我们来演示这个想法。假设我们要从5个值中进行选择,于是将它们标记为1、2、3、4和5。如果要返回的是4,就会返回一个包含5个数字的列表,除了第4个位置的1,其他位置的数字都是0,这个列表是“0,0,0,1,0”。
每当要从这个随机变量中抽取一个值时,我们就会得到一个包含4个0和1个1的列表。每个位置是否为1的概率是由选项1~5中被选择的概率给出的。
这个分布的名称是一个合成词(或者说是两个词的混合),因为这是对两种输出的伯努利分布的推广,将其推广为多项输出。我们可以称之为“多项式伯努利分布”,但是若把这些词混在一起,就称之为多项式分布(multinoulli distribution),有时也简单地称之为类别分布(categorical distribution)。
我们可以使用多项式分布来猜测生日,奇怪的是,所有生日的概率并不都是一样的,至少在美国2000年前后的10年内是这样的[Stiles16]。我们可以用一个多项式分布表示365个可能的生日的概率。如果我们从这个分布中抽取一个随机变量,就会得到一个拥有365个值的列表,除了一个1,其他的都是0。如果我们一遍又一遍地这样做,1就会更频繁地出现在更有可能的出生日期那里。
2.3.5 期望值
如果我们从任意的概率分布中选择一个值,然后选择另一个,之后再选择一个,随着时间的推移,我们就能构建一个包含很多值的列表。
如果这些值是数字,那么它们的平均值就称为期望值(expected value)。注意,期望值可能不是从分布中提取的值!例如,如果1、3、5、7都是等可能的,那么我们对于这些将要提取的随机变量的期望值就是(1+3+5+7)/4(即4),这个值我们永远无法从分布中得到。