程序員必備的一些數(shù)學(xué)基礎(chǔ)知識

作為一個標(biāo)準(zhǔn)的程序員,應(yīng)該有一些基本的數(shù)學(xué)素養(yǎng),尤其現(xiàn)在很多人在學(xué)習(xí)人工智能相關(guān)知識,想抓住一波人工智能的機(jī)會。很多程序員可能連這樣一些基礎(chǔ)的數(shù)學(xué)問題都回答不上來。

  • 矩陣A(m,n)與矩陣B(n,k)乘積C維度是多少?
  • 拋一枚硬幣,正面表示1,反面表示0,那么取值的數(shù)學(xué)期望E(x)是多少?

作為一個傲嬌的程序員,應(yīng)該要掌握這些數(shù)學(xué)基礎(chǔ)知識,才更有可能碼出一個偉大的產(chǎn)品。

線性代數(shù)

向量 向量(vector)是由一組實(shí)數(shù)組成的有序數(shù)組,同時具有大小和方向。一個n維向量a是由n個有序?qū)崝?shù)組成,表示為 a = [a1, a2, · · · , an]

矩陣

線性映射 矩陣通常表示一個n維線性空間v到m維線性空間w的一個映射f: v -> w

注:為了書寫方便,X.T,表示向量X的轉(zhuǎn)置。 這里:X(x1,x2,...,xn).T,y(y1,y2,...ym).T,都是列向量。分別表示v,w兩個線性空間中的兩個向量。A(m,n)是一個m*n的矩陣,描述了從v到w的一個線性映射。

轉(zhuǎn)置 將矩陣行列互換。

加法 如果A和B 都為m × n的矩陣,則A和B 的加也是m × n的矩陣,其每個元素是A和B相應(yīng)元素相加。 [A + B]ij = aij + bij .

乘法 如A是k × m矩陣和B 是m × n矩陣,則乘積AB 是一個k × n的矩陣。

對角矩陣 對角矩陣是一個主對角線之外的元素皆為0的矩陣。對角線上的元素可以為0或其他值。一個n × n的對角矩陣A滿足: [A]ij = 0 if i ?= j ?i, j ∈ {1, · · · , n}

特征值與特征矢量 如果一個標(biāo)量λ和一個非零向量v滿足 Av = λv, 則λ和v分別稱為矩陣A的特征值和特征向量。

矩陣分解 一個矩陣通??梢杂靡恍┍容^“簡單”的矩陣來表示,稱為矩陣分解。

奇異值分解 一個m×n的矩陣A的奇異值分解

其中U 和V 分別為m × m和n×n 的正交矩陣,Σ為m × n的對角矩陣,其對角 線上的元素稱為奇異值(singular value)。

特征分解 一個n × n的方塊矩陣A的特征分解(Eigendecomposition)定義為

其中Q為n × n的方塊矩陣,其每一列都為A的特征向量,^為對角陣,其每一 個對角元素為A的特征值。 如果A為對稱矩陣,則A可以被分解為

其中Q為正交陣。

微積分

導(dǎo)數(shù) 對于定義域和值域都是實(shí)數(shù)域的函數(shù)f : R → R,若f(x)在點(diǎn)x0 的某個鄰域?x內(nèi),極限

存在,則稱函數(shù)f(x)在點(diǎn)x0 處可導(dǎo),f'(x0)稱為其導(dǎo)數(shù),或?qū)Ш瘮?shù)。 若函數(shù)f(x)在其定義域包含的某區(qū)間內(nèi)每一個點(diǎn)都可導(dǎo),那么也可以說函數(shù)f(x)在這個區(qū)間內(nèi)可導(dǎo)。連續(xù)函數(shù)不一定可導(dǎo),可導(dǎo)函數(shù)一定連續(xù)。例如函數(shù)|x|為連續(xù)函數(shù),但在點(diǎn)x = 0處不可導(dǎo)。

導(dǎo)數(shù)法則

加法法則
y = f(x),z = g(x)

乘法法則

鏈?zhǔn)椒▌t 求復(fù)合函數(shù)導(dǎo)數(shù)的一個法則,是在微積分中計算導(dǎo)數(shù)的一種常用方法。若x ∈ R,y = g(x) ∈ R,z = f(y) ∈ R,則

Logistic 函數(shù)

Logistic函數(shù)是一種常用的S形函數(shù),是比利時數(shù)學(xué)家 Pierre Fran?ois Verhulst在1844-1845年研究種群數(shù)量的增長模型時提出命名的,最初作為一種生 態(tài)學(xué)模型。 Logistic函數(shù)定義為:

當(dāng)參數(shù)為(k = 1, x0 = 0, L = 1)時,logistic函數(shù)稱為標(biāo)準(zhǔn)logistic函數(shù),記 為σ(x)

標(biāo)準(zhǔn)logistic函數(shù)在機(jī)器學(xué)習(xí)中使用得非常廣泛,經(jīng)常用來將一個實(shí)數(shù)空間的數(shù)映射到(0, 1)區(qū)間。標(biāo)準(zhǔn)logistic函數(shù)的導(dǎo)數(shù)為:

softmax 函數(shù)

softmax函數(shù)是將多個標(biāo)量映射為一個概率分布。對于K個標(biāo)量x1, · · · , xK,softmax 函數(shù)定義為

這樣,我們可以將K個變量x1, · · · , xK轉(zhuǎn)換為一個分布:z1, · · · , zK,滿足

當(dāng)softmax 函數(shù)的輸入為K 維向量x時,

其中,1K = [1, · · · , 1]K×1 是K 維的全1向量。其導(dǎo)數(shù)為

數(shù)學(xué)優(yōu)化

離散優(yōu)化和連續(xù)優(yōu)化:根據(jù)輸入變量x的值域是否為實(shí)數(shù)域,數(shù)學(xué)優(yōu)化問題可以分為離散優(yōu)化問題和連續(xù)優(yōu)化問題。

無約束優(yōu)化和約束優(yōu)化:在連續(xù)優(yōu)化問題中,根據(jù)是否有變量的約束條件,可以將優(yōu)化問題分為無約束優(yōu)化問題和約束優(yōu)化問題。 ### 優(yōu)化算法

全局最優(yōu)和局部最優(yōu)

海賽矩陣

《運(yùn)籌學(xué)里面有講》,前面一篇文章計算梯度步長的時候也用到了: 梯度下降算法

梯度

梯度的本意是一個向量(矢量),表示某一函數(shù)在該點(diǎn)處的方向?qū)?shù)沿著該方向取得最大值,即函數(shù)在該點(diǎn)處沿著該方向(此梯度的方向)變化最快,變化率最大(為該梯度的模)。

梯度下降法
梯度下降法(Gradient Descent Method),也叫最速下降法(Steepest Descend Method),經(jīng)常用來求解無約束優(yōu)化的極小值問題。

梯度下降法的過程如圖所示。曲線是等高線(水平集),即函數(shù)f為不同常數(shù)的集合構(gòu)成的曲線。紅色的箭頭指向該點(diǎn)梯度的反方向(梯度方向與通過該點(diǎn)的等高線垂直)。沿著梯度下降方向,將最終到達(dá)函數(shù)f 值的局部最優(yōu)解。

梯度上升法
如果我們要求解一個最大值問題,就需要向梯度正方向迭代進(jìn)行搜索,逐漸接近函數(shù)的局部極大值點(diǎn),這個過程則被稱為梯度上升法。

概率論

概率論主要研究大量隨機(jī)現(xiàn)象中的數(shù)量規(guī)律,其應(yīng)用十分廣泛,幾乎遍及各個領(lǐng)域。

離散隨機(jī)變量

如果隨機(jī)變量X 所可能取的值為有限可列舉的,有n個有限取值 {x1, · · · , xn}, 則稱X 為離散隨機(jī)變量。要了解X 的統(tǒng)計規(guī)律,就必須知道它取每種可能值xi 的概率,即

p(x1), · · · , p(xn)

稱為離散型隨機(jī)變量X 的概率分布或分布,并且滿足

常見的離散隨機(jī)概率分布有:

伯努利分布

二項分布

連續(xù)隨機(jī)變量
與離散隨機(jī)變量不同,一些隨機(jī)變量X 的取值是不可列舉的,由全部實(shí)數(shù) 或者由一部分區(qū)間組成,比如

則稱X 為連續(xù)隨機(jī)變量。

概率密度函數(shù)
連續(xù)隨機(jī)變量X 的概率分布一般用概率密度函數(shù)p(x)來描述。p(x)為可積函數(shù),并滿足:

均勻分布 若a, b為有限數(shù),[a, b]上的均勻分布的概率密度函數(shù)定義為

正態(tài)分布 又名高斯分布,是自然界最常見的一種分布,并且具有很多良好的性質(zhì),在很多領(lǐng)域都有非常重要的影響力,其概率密度函數(shù)為

其中,σ > 0,μσ 均為常數(shù)。若隨機(jī)變量X 服從一個參數(shù)為μσ 的概率分布,簡記為

當(dāng)μ = 0,σ = 1時,稱為標(biāo)準(zhǔn)正態(tài)分布。 均勻分布和正態(tài)分布的概率密度函數(shù)圖:

累積分布函數(shù)
對于一個隨機(jī)變量X,其累積分布函數(shù)是隨機(jī)變量X 的取值小于等于x的概率。

以連續(xù)隨機(jī)變量X 為例,累積分布函數(shù)定義為:

其中p(x)為概率密度函數(shù),標(biāo)準(zhǔn)正態(tài)分布的累計分布函數(shù):

隨機(jī)向量
隨機(jī)向量是指一組隨機(jī)變量構(gòu)成的向量。如果X1, X2, · · · , Xn 為n個隨機(jī)變量, 那么稱 [X1, X2, · · · , Xn] 為一個 n 維隨機(jī)向量。一維隨機(jī)向量稱為隨機(jī)變量。隨機(jī)向量也分為離散隨機(jī)向量和連續(xù)隨機(jī)向量。 條件概率分布 對于離散隨機(jī)向量(X, Y),已知X = x的條件下,隨機(jī)變量Y = y的條件概率為:

對于二維連續(xù)隨機(jī)向量(X, Y ),已知X = x的條件下,隨機(jī)變量Y = y 的條件概率密度函數(shù)為

期望和方差

期望 對于離散變量X,其概率分布為p(x1), · · · , p(xn),X 的期望(expectation)或均值定義為

對于連續(xù)隨機(jī)變量X,概率密度函數(shù)為p(x),其期望定義為

方差 隨機(jī)變量X 的方差(variance)用來定義它的概率分布的離散程度,定義為

標(biāo)準(zhǔn)差 隨機(jī)變量 X 的方差也稱為它的二階矩。X 的根方差或標(biāo)準(zhǔn)差。

協(xié)方差 兩個連續(xù)隨機(jī)變量X 和Y 的協(xié)方差(covariance)用來衡量兩個隨機(jī)變量的分布之間的總體變化性,定義為

協(xié)方差經(jīng)常也用來衡量兩個隨機(jī)變量之間的線性相關(guān)性。如果兩個隨機(jī)變量的協(xié)方差為0,那么稱這兩個隨機(jī)變量是線性不相關(guān)。兩個隨機(jī)變量之間沒有線性相關(guān)性,并非表示它們之間獨(dú)立的,可能存在某種非線性的函數(shù)關(guān)系。反之,如果X 與Y 是統(tǒng)計獨(dú)立的,那么它們之間的協(xié)方差一定為0。

隨機(jī)過程

隨機(jī)過程(stochastic process)是一組隨機(jī)變量Xt 的集合,其中t屬于一個索引(index)集合T 。索引集合T 可以定義在時間域或者空間域,但一般為時間域,以實(shí)數(shù)或正數(shù)表示。當(dāng)t為實(shí)數(shù)時,隨機(jī)過程為連續(xù)隨機(jī)過程;當(dāng)t為整數(shù)時,為離散隨機(jī)過程。日常生活中的很多例子包括股票的波動、語音信號、身高的變化等都可以看作是隨機(jī)過程。常見的和時間相關(guān)的隨機(jī)過程模型包括貝努力過程、隨機(jī)游走、馬爾可夫過程等。

馬爾可夫過程 指一個隨機(jī)過程在給定現(xiàn)在狀態(tài)及所有過去狀態(tài)情況下,其未來狀態(tài)的條件概率分布僅依賴于當(dāng)前狀態(tài)。

其中X0:t 表示變量集合X0, X1, · · · , Xt,x0:t 為在狀態(tài)空間中的狀態(tài)序列。

馬爾可夫鏈 離散時間的馬爾可夫過程也稱為馬爾可夫鏈(Markov chain)。如果一個馬爾可夫鏈的條件概率

馬爾可夫的使用可以看前面一篇寫的有意思的文章: 女朋友的心思你能猜得到嗎?——馬爾可夫鏈告訴你隨機(jī)過程還有高斯過程,比較復(fù)雜,這里就不詳細(xì)說明了。

信息論

信息論(information theory)是數(shù)學(xué)、物理、統(tǒng)計、計算機(jī)科學(xué)等多個學(xué)科的交叉領(lǐng)域。信息論是由 Claude Shannon最早提出的,主要研究信息的量化、存儲和通信等方法。在機(jī)器學(xué)習(xí)相關(guān)領(lǐng)域,信息論也有著大量的應(yīng)用。比如特征抽取、統(tǒng)計推斷、自然語言處理等。

自信息和熵

在信息論中,熵用來衡量一個隨機(jī)事件的不確定性。假設(shè)對一個隨機(jī)變量X(取值集合為C概率分布為p(x), x ∈ C)進(jìn)行編碼,自信息I(x)是變量X = x時的信息量或編碼長度,定義為 I(x) = ? log(p(x)), 那么隨機(jī)變量X 的平均編碼長度,即熵定義為

其中當(dāng)p(x) = 0時,我們定義0log0 = 0 熵是一個隨機(jī)變量的平均編碼長度,即自信息的數(shù)學(xué)期望。熵越高,則隨機(jī)變量的信息越多;熵越低,則信息越少。如果變量X 當(dāng)且僅當(dāng)在x時p(x) = 1,則熵為0。也就是說,對于一個確定的信息,其熵為0,信息量也為0。如果其概率分布為一個均勻分布,則熵最大。假設(shè)一個隨機(jī)變量X 有三種可能值x1, x2, x3,不同概率分布對應(yīng)的熵如下:

聯(lián)合熵和條件熵 對于兩個離散隨機(jī)變量X 和Y ,假設(shè)X 取值集合為X;Y 取值集合為Y,其聯(lián)合概率分布滿足為p(x, y),則X 和Y 的聯(lián)合熵(Joint Entropy)為

X 和Y 的條件熵為

互信息 互信息(mutual information)是衡量已知一個變量時,另一個變量不確定性的減少程度。兩個離散隨機(jī)變量X 和Y 的互信息定義為

交叉熵和散度 交叉熵 對應(yīng)分布為p(x)的隨機(jī)變量,熵H(p)表示其最優(yōu)編碼長度。交叉熵是按照概率分布q 的最優(yōu)編碼對真實(shí)分布為p的信息進(jìn)行編碼的長度,定義為

在給定p的情況下,如果q 和p越接近,交叉熵越小;如果q 和p越遠(yuǎn),交叉熵就越大。






作者:柯廣的網(wǎng)絡(luò)日志

微信公眾號:Java大數(shù)據(jù)與數(shù)據(jù)倉庫