1. 程式人生 > >深度學習-機器學習基礎知識

深度學習-機器學習基礎知識

機器學習基礎

作為一個多學科交叉的融合學科,機器學習涉及到包括計算機、矩陣分析、概率統計、優化理論等在內的多門學科知識,它讓計算機能夠在沒有被顯示程式設計的情況下擁有學習的能力。機器學習演算法能夠自動地從資料中發現內在的知識和規律,並根據這些規律對未知資料可能產生的結論進行推測。幾乎所有由計算機完成的智慧型任務背後都是機器學習演算法的功勞。

1. 學習演算法

  根據書中的解釋,機器學習中學習的定義是“對某類任務T和效能度量P,一個計算機程式被認為可以從經驗E中學習是指,通過經驗E改進後,它在任務T上由效能度量P衡量的效能有所提升"。例如在數值計算的求解例項中,任務T是指選取f(x)f(x)

(x)的合適引數,以使f(x)f(x)yy儘可能的接近;儘可能的接近是效能度量P的描述,形式化的表示為估計值與真實值之間的平方損失;而使用的資料集和學習演算法型別為經驗E。

  關於任務T,效能度量P和經驗E有以下需要了解的地方

任務T

  機器學習的任務通常定義為讓計算機學會如何處理樣本,樣本即為我們通常所說的特徵(feature),基本的機器學習任務如下:

  • 分類:最常見的機器學習任務之一,根據樣本特徵判斷樣本類別,即輸入特徵輸出有限的離散值。例如,根據天氣情況判斷是否會下雨,根據圖片判斷其中物體的類別。

  • 迴歸:另一種常見的機器學習任務,根據輸入樣本特徵輸出一個連續的屬性值。例如,根據天氣情況預測明天的溫度,根據特徵情況預測房價等。

  • 聚類:將樣本點根據特徵劃分為不同的類簇。例如,根據客戶的屬性特徵將客戶自動的聚成不同類別。

  • 密度估計:根據所給的樣本點,估計樣本的分佈情況。

除此之外,機器學習能夠做的一些具體的任務包括轉錄、機器翻譯、結構化輸出、異常檢測等。

效能度量P

  為了評估機器學習的優劣,需要對演算法的輸出結果進行定量的衡量分析,這就需要一些合適的效能度量指標。

  • 對於分類任務而言,根據真實結果和預測結果的關係有如下幾種情況,分類任務的許多指標也都是由這幾種情況得來。

在這裡插入圖片描述

  • 準確率(Accuracy):acc=TP+TNTP+TN+FP+FNacc = \frac{TP+TN}{TP+TN+FP+FN}

  • 錯誤率(Errorrate):err=1accerr = 1-acc

  • 精度(Precision):P=TPTP+FPP = \frac{TP}{TP+FP}

  • 召回率(Recall):R=TPTP+FNR = \frac{TP}{TP+FN}

  • F1值:F1=2PRP+RF_1 = \frac{2PR}{P+R}

  • 對於迴歸任務,通常使用距離誤差來進行度量

  • 對於聚類任務使用包括緊密性,間隔性等,這可以衡量聚類團簇的效能。

  需要注意的是,效能指標通常要根據任務情況來進行選取,對於部分簡單的任務而言,可以比較容易的選擇效能度量指標,而對很多的複雜任務而言,選取合適的效能指標需要將很多因素綜合考慮。另外,為了更準確有效地衡量機器學習演算法的能力,通常會將資料劃分出來一部分作為測試集,使用模型在這部分資料的輸出結果衡量其效能。

經驗E

  • 監督學習演算法(Supervised Learning):訓練集的資料中包含樣本特徵和標籤值,常見的分類和迴歸演算法都是有監督的學習演算法。

  • 無監督學習演算法(Unsupervised Learning):訓練集的資料中只包含樣本特徵,演算法需要從中學習特徵中隱藏的結構化特徵,聚類、密度估計等都是無監督的學習演算法。

2. 容量、過擬合和欠擬合

  • 泛化能力(Generalization):模型在先前未知資料上的表現是否良好的能力。通常情況下,機器學習的模型是要作用在先前未知的資料上的,具有良好泛化能力的演算法才是符合需求的。

  • 訓練誤差:訓練誤差是模型訓練的時候在訓練集上的誤差。

  • 測試誤差(泛化誤差):模型在測試集(先前未知資料)上的誤差。

  • 欠擬合(Underfitting):模型在訓練集上的誤差較大,這通常是由於訓練不充分或者模型不合適導致。

  • 過擬合(Overfitting):模型在訓練集和測試集上的誤差差距過大,通常由於模型過分擬合了訓練集中的隨機噪音,導致泛化能力較差。一個過擬合的示例如下圖所示(黑色的線幾乎可以正確的將資料分類,綠色的線雖然100%分對了,但是發生了過擬合,泛化效能就會很差)。

在這裡插入圖片描述

  • 獨立同分布假設(i.i.d assumption):使用機器學習演算法訓練的一條基本假設,訓練和測試集中的樣本均是獨立地從一個資料生成分佈中取樣得到,將這個資料分佈記為pdatap_{data}

  • 正則化:正則化是降低泛化誤差,減小過擬合的一個有效手段,包括在損失函式中新增正則項、對資料新增噪聲以及神經網路中最常用的dropout都屬於正則化方法。

3. 超引數和驗證集

  • 超引數:用來控制學習演算法的引數而非學習演算法本身學出來的引數。例如,進行曲線的迴歸擬合時,曲線的次數就是一個超引數;在構建模型對一些引數的分佈假設也是超引數。

  • 驗證集:通常在需要選取超引數數時,將訓練接在劃分為訓練和驗證集兩部分,使用新的訓練集訓練模型,驗證集用來進行測試和調整超參。

  • k折交叉驗證:將資料集均分為不相交的k份,每次選取其中的一份作為測試集,其他的為訓練集,訓練誤差為k次的平均誤差

4. 估計、偏差和方差

基本概念

  • 點估計:在已知一些獨立同分布樣本點的情況下去預測一些引數的單個最佳值,例如迴歸問題中的預測權重,通常將引數θ\boldsymbol{\theta}的點估計記為θ^\boldsymbol{\hat{\theta}}

  • 偏差(bias):bias(θ^)=E(θ^)θbias(\boldsymbol{\hat{\theta}}) = E(\boldsymbol{\hat{\theta}}) - \boldsymbol{\theta},表示估計量θ^\boldsymbol{\hat{\theta}}的期望與真實值之間的差距。bias=0的估計被稱為無偏估計,當樣本容量增大時,bias的極限為0時的估計被稱為漸進無偏估計。

  • 方差(variance):一個估計量θ^\boldsymbol{\hat{\theta}}變化程度的多少。

誤差與偏差和方差的關係

  bias和variance是一個估計量的兩個不同誤差來源,通常情況下可以使用均方誤差(Mean Squared Error, MSE)來表示估計的好壞,有

在這裡插入圖片描述

實際上,除了包含bias和bar之外,MSE還應當包含噪聲項,但噪聲通常是不可控的隨機因素,因此一般不考慮。

  bias和variance的形象化描述可以用如下的圖表示(圖片引自BiasVariance):

bias and variance

而bias和variance與模型複雜度之間的關係如下圖,隨著模型複雜度的提高,模型對訓練資料的擬合效果提升,bias降低,而variance增大,演算法的訓練目標就是尋找一個平衡variance和bias的點,最小化總的error

在這裡插入圖片描述

5. 最大似然估計

  最大似然估計(Maximum Likelihood Estimation, MLE)是一種最為常見的估計準則。用一句話可以概括為在已知分佈產生的一些樣本而未知分佈具體引數的情況下根據樣本值推斷最有可能產生樣本的引數值。將資料的真實分佈記為pdata(x)p_{data}(x)為了使用MLE,需要先假設樣本服從某一簇有引數確定的分佈pmodel(x;θ)p_{model}(x;\theta),現在的目標就是使用估計的pmodelp_{model}來擬合真實的pdatap_{data},MLE產生的引數估計值被定義為:

θML=argmaxθipmodel(xi;θ)\theta_{ML} = \mathop{\arg\max}_{\theta} \prod_i p_{model}(x^i;\theta)

通常為了計算方便,會對MLE加上log,將乘積轉化為求和然後將求和(取對數)變為期望:

θML=argmaxθE[logpmodel(x;θ)]\theta_{ML} = \mathop{\arg\max}_{\theta} E[\log p_{model}(x;\theta)]

最大似然估計的一種解釋是使pmodelp_{model}pdatap_{data}之間的差異性儘可能的小,形式化的描述為最小化兩者的KL散度。

  此外,MLE也很容易轉化為條件概率的形式,如下所示:
θ_ML=argmaxθE[logpmodel(y;x,θ)]\theta\_{ML} = \mathop{\arg\max}_{\theta} E[\log p_{model}(y;x,\theta)]
上式是許多監督學習演算法的基礎假設。

6. 貝葉斯估計

  最大似然估計屬於典型的頻率學派統計方法,它假設資料是由單一的最優引數值生成,並在此基礎上對引數進行估計;而另一種方法是考慮到所有的的引數值以及這些引數的先驗概率分佈,通過貝葉斯準則來對估計引數的後驗分佈情況,用公式表示如下:

p(θx(1),x(2)...,x(m))=p(x(1),x(2)...,x(m)θ)p(θ)p(x(1),x(2)...,x(m))p(\theta|x^{(1)},x^{(2)}...,x^{(m)}) = \frac{p(x^{(1)},x^{(2)}...,x^{(m)|\theta})p(\theta)}{p(x^{(1)},x^{(2)}...,x^{(m)})}

貝葉斯估計假設已知的是引數的先驗分佈情況和模型的類簇,之後利用資料集的樣本點根據貝葉斯準則來對引數的分佈情況進行修正,它得到的結果不是一個單一的引數值,而是根據引數先驗分佈和真實樣本得到的修正過後的引數分佈,即引數的後驗分佈,根據貝葉斯估計,在已知m個樣本後,估計第m+1的樣本分佈的公式如下:

p(x(m+1)x(1),x(2)...,x(m))=p(x(m+1)θ)p(θx(1),x(2)...,x(m))dθp(x^{(m+1)}|x^{(1)},x^{(2)}...,x^{(m)}) = \int p(x^{(m+1)}|\theta)p(\theta|x^{(1)},x^{(2)}...,x^{(m)}) d\theta

可以看到,不同於頻率學派單點估計的方法,貝葉斯估計在對未知資料預測時,將所有的引數分佈都進行了考慮,同時按照引數的概率密度情況進行加權。

最大後驗估計

  完整的貝葉斯估計需要使用引數的完整分佈進行預測,然而對絕大多數的機器學習任務而言,這將會導致十分繁重的計算因而是不可取的,因此通常利用最大後驗估計(Maximum A Posteriori, MAP)來選取一個計算可行的單點估計引數作為貝葉斯估計的近似解,公式如下:

θMAP=argmaxθlogp(θx)=argmaxθlogp(xθ)+logp(θ)\theta_{MAP} = \mathop{\arg\max}_{\theta} \log p(\theta|x) = \mathop{\arg\max}_{\theta} \log p(x|\theta) + \log p(\theta)

可以看到MAP的估計實際上就是對數似然加上引數的先驗分佈。實際上,在引數服從高斯分佈的情況下,上式的右邊就對應著L2正則項;在Laplace的情況下,對應著L1的正則項;在均勻分佈的情況下則為0,等價於MLE。

7. 傳統機器學習演算法

構建機器學習演算法的要素

  構建一個完整的機器學習演算法需要以下幾個部分。

  • 資料集:資料是機器學習演算法處理的目標,而在構建演算法時首先也需要考慮資料特點。

  • 模型:在構建機器學習演算法時首先需要根據問題和資料特點選取合適的模型,有些模型可能能夠很好的描述問題,但在計算上是不可行的;而有些模型可能得出次優的結果,但是是可以接受的。

  • 損失函式:損失函式是模型在訓練時的標準度量,機器學習演算法的目標也都是去最小化損失函式。

  • 優化演算法:在定義了損失函式後求解這個目標的方法,典型的方法即為梯度下降法。

常用演算法