天天看點

Distribution is all you need:這裡有12種做ML不可不知的分布

選自github

作者:graykode

機器之心編譯

參與:思

機器學習開發者需要了解的 12 種機率分布,這些你都了解嗎?

機器學習有其獨特的數學基礎,我們用微積分來處理變化無限小的函數,并計算它們的變化;我們使用線性代數來處理計算過程;我們還用機率論與統計學模組化不确定性。在這其中,機率論有其獨特的地位,模型的預測結果、學習過程、學習目标都可以通過機率的角度來了解。

與此同時,從更細的角度來說,随機變量的機率分布也是我們必須了解的内容。在這篇文章中,項目作者介紹了所有你需要了解的統計分布,他還提供了每一種分布的實作代碼。

項目位址:https://github.com/graykode/distribution-is-all-you-need

Distribution is all you need:這裡有12種做ML不可不知的分布

下面讓我們先看看總體上機率分布都有什麼吧:

Distribution is all you need:這裡有12種做ML不可不知的分布

非常有意思的是,上圖每一種分布都是有聯系的。比如說伯努利分布,它重複幾次就是二項分布,如果再擴充到多類别,就成為了多項式分布。注意,其中共轭(conjugate)表示的是互為共轭的機率分布;Multi-Class 表示随機變量多于 2 個;N Times 表示我們還會考慮先驗分布 P(X)。

在貝葉斯概念理論中,如果後驗分布 p(θ | x) 與先驗分布 p(θ) 是相同的機率分布族,那麼後驗分布可以稱為共轭分布,先驗分布可以稱為似然函數的共轭先驗。

為了學習機率分布,項目作者建議我們檢視 Bishop 的模式識别與機器學習。當然,你要是準備再過一遍《機率論與數理統計》,那也是極好的。

機率分布與特性

1. 均勻分布(連續型)

均勻分布是指閉區間 [a, b] 内的随機變量,且每一個變量出現的機率是相同的。

Distribution is all you need:這裡有12種做ML不可不知的分布

2. 伯努利分布(離散型)

伯努利分布并不考慮先驗機率 P(X),它是單個二值随機變量的分布。它由單個參數φ∈ [0, 1] 控制,φ 給出了随機變量等于 1 的機率。我們使用二進制交叉熵函數實作二進制分類,它的形式與對伯努利分布取負對數是一緻的。

Distribution is all you need:這裡有12種做ML不可不知的分布

3. 二項分布(離散型)

二項分布是由伯努利提出的概念,指的是重複 n 次獨立的伯努利試驗。在每次試驗中隻有兩種可能的結果,而且兩種結果發生與否互相對立。

Distribution is all you need:這裡有12種做ML不可不知的分布

4.Multi-Bernoulli 分布(離散型)

Multi-Bernoulli 分布又稱為範疇分布(Categorical distribution),它的類别超過 2,交叉熵的形式與該分布的負對數形式是一緻的。

Distribution is all you need:這裡有12種做ML不可不知的分布

5. 多項式分布(離散型)

範疇分布是多項式分布(Multinomial distribution)的一個特例,它與範疇分布的關系就像伯努利分布與二項分布之間的關系。

Distribution is all you need:這裡有12種做ML不可不知的分布

6.Beta 分布(連續型)

貝塔分布(Beta Distribution) 是一個作為伯努利分布和二項式分布的共轭先驗分布的密度函數,它指一組定義在 (0,1) 區間的連續機率分布。均勻分布是 Beta 分布的一個特例,即在 alpha=1、 beta=1 的分布。

Distribution is all you need:這裡有12種做ML不可不知的分布

7. 狄利克雷分布(連續型)

狄利克雷分布(Dirichlet distribution)是一類在實數域以正單純形(standard simplex)為支撐集(support)的高維連續機率分布,是 Beta 分布在高維情形的推廣。在貝葉斯推斷中,狄利克雷分布作為多項式分布的共轭先驗得到應用,在機器學習中被用于建構狄利克雷混合模型。

Distribution is all you need:這裡有12種做ML不可不知的分布

8.Gamma 分布(連續型)

Gamma 分布是統計學中的常見連續型分布,指數分布、卡方分布和 Erlang 分布都是它的特例。如果 Gamma(a,1) / Gamma(a,1) + Gamma(b,1),那麼 Gamma 分布就等價于 Beta(a, b) 分布。

Distribution is all you need:這裡有12種做ML不可不知的分布

9. 指數分布(連續型)

指數分布可以用來表示獨立随機事件發生的時間間隔,比如旅客進入機場的時間間隔、打進客服中心電話的時間間隔等等。當 alpha 等于 1 時,指數分布就是 Gamma 分布的特例。

Distribution is all you need:這裡有12種做ML不可不知的分布

10. 高斯分布(連續型)

高斯分布或正态分布是最為重要的分布之一,它廣泛應用于整個機器學習的模型中。例如,我們的權重用高斯分布初始化、我們的隐藏向量用高斯分布進行歸一化等等。

Distribution is all you need:這裡有12種做ML不可不知的分布

當正态分布的均值為 0、方差為 1 的時候,它就是标準正态分布,這也是我們最常用的分布。

11. 卡方分布(連續型)

簡單而言,卡方分布(Chi-squared)可以了解為,k 個獨立的标準正态分布變量的平方和服從自由度為 k 的卡方分布。卡方分布是一種特殊的伽瑪分布,是統計推斷中應用最為廣泛的機率分布之一,例如假設檢驗和置信區間的計算。

Distribution is all you need:這裡有12種做ML不可不知的分布

12. 學生 t-分布

學生 t-分布(Student t-distribution)用于根據小樣本來估計呈正态分布且變異數未知的總體,其平均值是多少。t 分布也是對稱的倒鐘型分布,就如同正态分布一樣,但它的長尾占比更多,這意味着 t 分布更容易産生遠離均值的樣本。

Distribution is all you need:這裡有12種做ML不可不知的分布

分布的代碼實作

上面多種分布的 NumPy 建構方式以及制圖方式都提供了對應的代碼,讀者可在原項目中查閱。如下所示展示了指數分布的建構的制圖方式,我們可以直接定義機率密度函數,再列印出來就好了。

import numpy as np
from matplotlib import pyplot as plt

def exponential(x, lamb):
    y = lamb * np.exp(-lamb * x)
    return x, y, np.mean(y), np.std(y)

for lamb in [0.5, 1, 1.5]:

    x = np.arange(0, 20, 0.01, dtype=np.float)
    x, y, u, s = exponential(x, lamb=lamb)
    plt.plot(x, y, label=r'$\mu=%.2f,\ \sigma=%.2f,'
                         r'\ \lambda=%d$' % (u, s, lamb))
plt.legend()
plt.savefig('graph/exponential.png')
plt.show()           

複制

本文為機器之心編譯,轉載請聯系本公衆号獲得授權。