本系列教程將持續性分為兩個部分:形而上的和形而下的。形而上者謂之道,講的是機器學習的數學原理,其中將不可避免地涉及到大量令人頭皮發麻的數學公式,但是很有趣;形而下者謂之器,講的是這些數學原理在機器學習中的應用,會涉及到一些簡單例項。教程接受度因人而異,有些人看到的是無聊的算式和枯燥的程式碼,有些看到的是有趣的數學和熠熠生輝的演算法。任何行業都分上中下游,假如你想當上遊,那麼就把本教程每個章節從頭到尾學完;假如你只想做中游,那麼就把本教程形而下的部分看了即可,我保證不會難為你;但如果你就想在人工智慧的浪潮裡當一個下游的小蝦米,請關閉本頁面開啟sk-learning背函式看例項去吧,我保證未來人類社會重構之後至少會有你的一席之地。閒言少敘,直接開始上課。

1.機率累積分佈函式與機率密度函式

隨機變數

X

的機率累積分佈函式有如下定義:

F(x)=P(X\leq x)

其中

\left\{ X\leq x \right\}

符號代表隨機變數集合中所有小於等於

x

的真子集

舉個簡單的例子,一個骰子扔出來有六種可能性,而這些可能性的集合為

\left\{ 1,2,3,4,5,6 \right\}

。假設我們要求這個骰子小於等於4的機率

F(4)

,那麼被取出來的從屬於上面集合的真子集即為

\left\{ 1,2,3,4 \right\}

,則

P(X\leq 4)=\frac{2}{3}

上面舉的這個例子是離散型隨機變數,然而在日常實踐中我們接觸到更多的是連續型隨機變數。我們來看下一個例子:Patchouli Exarch是一位

作風優良,志趣高潔

的知乎使用者,有一天他不慎發表了一篇包含不宜公開討論的政治內容的文章。有關部門規定,此類文章必須在一個小時內變成沒有知識的荒原,為此知乎官方指定了規則,保證此類文章活不過一個小時。我們假設管理員看到這篇文章的機率嚴格按照時間的行進分佈,那麼我的文章被刪的機率累積分佈函式如下圖所示。

Patchouli的機器學習系列教程一:機率論初步與其他基礎數學知識——『道』

機率分佈函式(未被針對)

而與此同時,由於我的文章在任何一秒被刪除的機率都是一樣的,因此文章被刪的機率密度函式將是一條水平直線。

Patchouli的機器學習系列教程一:機率論初步與其他基礎數學知識——『道』

機率密度函式(未被針對)

我們前進到下個例子:假設Patchouli Exarch是一位蠅營狗苟,沒事就喜歡悶聲作大死的使用者呢?那麼管理員一定會對我區別對待,一回刪,二回禁,三回封。我發的每一篇文章都會被特別照顧一下,因此在我剛剛釋出包含不宜公開討論的政治內容的很近一段時間內,是很容易被發現然後刪答案的。一個小時中,前十幾分鍾文章被刪的機率遠大於後幾十分鐘,那麼我的機率分佈函式就會是這樣的。

Patchouli的機器學習系列教程一:機率論初步與其他基礎數學知識——『道』

機率分佈函式(被針對)

而文章被刪的機率密度函式則會是這樣的。

Patchouli的機器學習系列教程一:機率論初步與其他基礎數學知識——『道』

機率密度函式(被針對)

我們發現,其實在某個特定點發生事件的機率和機率分佈函式的變化速率成正相關,而函式的變化速率有一個專有名詞:導數。由此,機率密度函式將得到以下定義:

p(x)=\frac{dF(x)}{dx}

在數學中,連續型隨機變數的機率密度函式是一個描述這個隨機變數的輸出值,在某個確定的取值點附近的可能性的函式。而隨機變數的取值落在某個區域之內的機率則為機率密度函式在這個區域上的積分。

2.聯合機率分佈函式

聯合機率分佈函式是指隨機變數

X

Y

中子集

\left\{X\leq x , Y\leq y \right\}

被取出來的機率,記作:

F(x,y)=P(X\leq x , Y\leq y)

與上同理,隨機變數

X

Y

的聯合機率密度函式即為聯合分佈函式的二階偏導數:

p(x,y)=\frac{\partial F(x,y)}{\partial x \partial y}

特別的,假如

X

Y

相互獨立,那麼這個條件

\equiv

p(x,y)=p(x)p(y)

3.條件機率分佈

存在一對聯合隨機變數

X

Y

,我們在

X

已經給定,單獨研究

Y

的時候,便會有如下分佈:

p(y|x)=\frac{p(x,y)}{p(x)}

條件機率分佈指的是在不同的條件集

X

下,隨機變數

Y

的分佈函式,在條件集發生改變時,事件集必定是要受到影響的,我們舉個簡單的例子。

某個村子來了一夥賊,我們假設“賊”條件集

X

包含兩種情況,一撥是天下無賊裡賊頭帶的賊,另一撥是拿著斧子戴面具搶劫的賊。那麼很明顯,兩種情況下,這個村子失竊的機率是不一樣的。在第一種條件下,村莊被偷這個隨機事件

Y

發生的機率遠大於第二撥賊來的情況:

p(y|x_1)=0.8;p(y|x_2)=0.3

這就是條件機率的用處。

那麼有人會問了,

p(y|x)

我們懂了,那麼

p(x|y)

又是什麼呢?

答案就是:這是一個後驗機率。即,我們不知道村子裡來的是盜神還是蠢賊,我們只知道村子被盜/沒被盜這個既定事實,以此推斷可能來的是哪撥賊。

4.高斯(正態)分佈

高斯分佈有如下定義:

p(x|\mu,\sigma^2)=\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{{\left( x- \mu\right)}^{2}}{2\sigma^2}}

,其中

\mu

是平均值而

\sigma

是標準差(

\sigma ^2

自然就是方差啦)。

高斯分佈作為一個從自然科學一直到社會科學都橫著走的存在,想必大家不會太陌生,這裡也就不做過多介紹了。

Patchouli的機器學習系列教程一:機率論初步與其他基礎數學知識——『道』

高斯正態分佈

值得注意的一點是,我在介紹高斯分佈的定義時,已經用到了上面所講的條件機率分佈,所謂

x

,指的是當引數

\mu

\sigma

等於某個確定的值時

x

分佈。那麼這個條件變數能不能也像上面一節中反過來呢?答案當然是可以的,記作:

p(\mu,\sigma^2|x)

,意思是給定一份樣本集,我們能得到正態分佈的引數們是一種怎樣的分佈。與其他學科不一樣的是,這個式子我們日後用到的要比

p(x|\mu,\sigma ^2)

多得多。眾所周知,機器學習是透過大量的對於樣本的演算和學習,來達到為歷史建模以預測未來的目的(雖然原理到現在還沒人能解釋)。因此我們日後遇到的更多的是得到一份樣本集,來推測這個樣本的引數,從而根據引數建模,以此觀測美好的未來。回推引數的問題我們以後再談,一位名為拉格朗日的偉大數學家早已預見此路,為此設計了一整套推理引數的方案,大家不必太過擔心。你們真正要擔心的是,人家設計出來了,但是你連看都看不懂(笑)。

5.多元高斯(正態)分佈

上面講的是一元高斯正態分佈,我們這時候再把上面的聯合分佈加進來,就成了多元高斯正態分佈,為了方便表達,之後的

e^{x}

我們將用

exp(x)

來代替:

p(x|\mu,\Sigma)=\frac{1}{\sqrt{2\pi^k\left|\Sigma\right|}}exp(-\frac{1}{2}(x-\mu)^{\top}\Sigma^{-1}(x-\mu))

其中

\mu

是一個

k\times1

的向量,是

k

個樣本集平均數的集合,而

\Sigma

是一個

k\times k

階的協方差矩陣。

\left| \Sigma \right|

是協方差矩陣的行列式,

\Sigma^{-1}

是協方差矩陣的倒數。

6.邊緣機率分佈

邊緣分佈指在機率論和統計學的多維隨機變數中,只包含其中部分變數的機率分佈,定義如下:

P(x)=\sum_{y}^{}{P(x,y)}=\sum_{y}^{}{P(x|y)P(y)}

還是上面那個村裡進賊的例子,假設我們是拉普拉斯妖,已經知道賊一定會來,兩撥賊來的機率,兩撥賊得手的機率,便可以用這個公式計算村子失竊的總體機率。

7.貝葉斯定理

根據我們上述知識,很容易便可以做出如下推理:

p(x|y)p(y)=p(y|x)p(x)

=

p(x,y)

\Rightarrow

p(x|y)=\frac{p(y|x)p(x)}{p(y)}=\frac{p(y|x)p(x)}{\sum_{x\in{X}}^{}{p(y|x)p(x)}}

8.期望與方差

假設我們已知連續型隨機變數

X

的機率密度函式,則其期望為:

EX=\int_{-\infty}^{\infty}xp(x)dx

可以說是比較直觀了,與此對應的是離散型隨機變數

X

的期望為:

EX=\sum_{x\in X}^{}xp(x)

有了期望,我們就可以算方差了。方差代表一份資料的離散程度,是集合中每個值和期望的差的平方的期望,有:

f(x)=(x-EX)^2

,則方差為定義為:

Var[X]=E[(X-EX)^2]=\int_{-\infty}^{\infty}(x-EX)^{2}p(x)dx

與此相對的,離散型隨機變數的方差為:

Var[X]=\sum_{x\in X}(x-EX)^2p(x)

我們以後用到的更多的將是離散型隨機變數的方差公式。特別的,有:

Var[X]=E[(X-EX)^2]=E[X^2-2XEX+E^2X]=E[X^2]-E^2X

也就是那句我們熟悉的繞口令:方差等於平方的期望減期望的平方。

9.在引入向量和矩陣之後的機率論

假設我們有兩個標量資料集

X

Y

,我們可以將這個集合分別構建成一個

n

維向量

 \mathbf{x}

和m維的向量

 \mathbf{y}

,此二者被如下表示:

 \mathbf{x} = \left( \begin{array}{c} x_1 \\ \vdots \\ x_n \end{array} \right)

 \mathbf{y} = \left( \begin{array}{c} y_1 \\ \vdots \\ y_n \end{array} \right)

而向量

\mathbf{y}

關於標量

x

求偏導,標量

y

關於向量

\mathbf{x}

求偏導,向量

\mathbf{y}

關於向量

\mathbf{x}

求偏導分別如下所示:

 \frac{\partial \mathbf{y}}{\partial x} = \left( \frac{\partial y_1}{\partial x} \cdots \frac{\partial y_m}{\partial x} \right) \qquad \frac{\partial y}{\partial \mathbf{x}} = \left( \begin{array}{c} \frac{\partial y}{\partial x_1} \\ \vdots \\ \frac{\partial y}{\partial x_n} \end{array} \right) \qquad \frac{\partial \mathbf{y}}{\partial \mathbf{x}} = \left( \begin{array}{ccc} \frac{\partial y_1}{\partial x_1} & \cdots & \frac{\partial y_m}{\partial x_1} \\ \vdots & & \vdots \\ \frac{\partial y_1}{\partial x_n} & \cdots & \frac{\partial y_m}{\partial x_n} \end{array} \right)

10.矩陣的微積分

對於向量

\mathbf{a}

\mathbf{w}

,以及一個方陣

\mathbf{A}

,有如下計算公式:

\begin{align*} \frac{\partial \mathbf{a}^\top \mathbf{w}}{\partial \mathbf{w}} = & \mathbf{a} \\ \frac{\partial \mathbf{w}^\top \mathbf{A} \mathbf{w}}{\partial \mathbf{w}} = & (\mathbf{A} + \mathbf{A}^\top)\mathbf{w} \end{align*}

關於機器學習中機率論的基本知識就這些,怎麼樣?是不是很簡單?在『器』篇,我將教大家如何在python中使用這些數學原理。