機器學習的基本要素包括模型、學習準則(策略)和優化算法三個部分。機器學習方法之間的不同,主要來自其模型、學習準則(策略)、優化算法的不同。
模型
機器學習首要考慮的問題是學習什么樣的模型(Model)。在監督學習中,給定訓練集,學習的目的是希望能夠擬合一個函數 f ( x ; θ ) f({\bm x}; {\bm \theta}) f(x;θ)來完成從輸入特征向量 x {\bm x} x到輸出標簽的映射。這個需要擬合的函數 f ( x ; θ ) f({\bm x}; {\bm \theta}) f(x;θ)稱為模型,它由參數向量 θ {\bm \theta} θ決定。 θ {\bm \theta} θ稱為模型參數向量, θ {\bm \theta} θ所在的空間稱為參數空間(Parameter Space)。一般來說,模型有兩種形式,一種形式是概率模型(條件概率分布),另一種形式是非概率模型(決策函數)。決策函數還可以再分為線性和非線性兩種,對應的模型稱為線性模型和非線性模型。在實際應用中,將根據具體的學習方法來決定采用概率模型還是非概率模型。
將訓練得到的模型稱為一個假設,從輸入空間到輸出空間的所有可能映射組成的集合稱為假設空間(Hypothesis Space)。在監督學習中,模型是所要學習的條件概率分布或決策函數。模型的假設空間包含所有可能的條件概率分布或決策函數。例如,假設決策函數是輸入特征向量 x {\bm x} x的線性函數,那么模型的假設空間是所有這些線性函數構成的函數集合。假設空間中的模型一般有無窮多個,而機器學習的目的是從這個假設空間中選擇出一個最好的預測模型,即在參數空間中選擇一個最優的估計參數向量 θ ^ \hat{{\bm \theta}} θ^。
學習準則(策略)
在明確了模型的假設空間之后,接下來需要考慮的是按照什么樣的準則(策略)從假設空間中選擇最優的模型,即學習準則或策略問題。
機器學習最后都歸結為求解最優化問題,為了實現某一目標,需要構造出一個“目標函數”(Objective Function),然后讓目標函數達到極大值或極小值,從而求得機器學習模型的參數。如何構造出一個合理的目標函數,是建立機器學習模型的關鍵,一旦目標函數確定,可以通過優化算法來求解。
對于監督學習中的分類問題與回歸問題,機器學習本質上是給定一個訓練樣本集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } T = \{({\bm x}_1, y_1), ({\bm x}_2, y_2), \ldots, ({\bm x}_N, y_N)\} T={(x1?,y1?),(x2?,y2?),…,(xN?,yN?)},嘗試學習 x i → y i {\bm x}_i \rightarrow y_i xi?→yi?的映射函數 f ( x i ; θ ) f({\bm x}_i; {\bm \theta}) f(xi?;θ),其中 θ {\bm \theta} θ是模型的參數向量,使得給定一個輸入樣本數據 x {\bm x} x,即便這個 x {\bm x} x不在訓練樣本中,也能夠為 x {\bm x} x預測出一個標簽值 y ^ \hat{y} y^?。
-
損失函數
(1)0-1 損失函數
0-1 損失函數(0-1 Loss Function)是最直接地反映模型正確與否的損失函數,對于正確的預測,損失函數值為 0;對于錯誤的預測,損失函數值為 1。其數學表達式為:
L ( y i , f ( x i ; θ ) ) = { 0 , f ( x i ; θ ) = y i 1 , f ( x i ; θ ) ≠ y i L(y_i, f({\bm x}_i; {\bm \theta})) = \begin{cases} 0, & f({\bm x}_i; {\bm \theta}) = y_i \\ 1, & f({\bm x}_i; {\bm \theta}) \neq y_i \end{cases} L(yi?,f(xi?;θ))={0,1,?f(xi?;θ)=yi?f(xi?;θ)=yi??可見,0-1 損失函數不考慮預測值與實際值的誤差大小,只要預測錯誤,損失函數值均為 1。雖然 0-1 損失函數能夠直觀地反映模型的錯誤情況,但是它的數學性質并不是很好——不連續也不可導,因此在優化時很困難。通常,會選擇其他相似的連續可導函數來替代它。
(2)平方損失函數
平方損失函數(Quadratic Loss Function)是模型輸出的預測值與實際觀測值之差的平方,其數學表達式為:
L ( y i , f ( x i ; θ ) ) = [ y i ? f ( x i ; θ ) ] 2 L(y_i, f({\bm x}_i; {\bm \theta})) = [y_i - f({\bm x}_i; {\bm \theta})]^2 L(yi?,f(xi?;θ))=[yi??f(xi?;θ)]2從直覺上理解,平方損失函數只考慮預測值與實際觀測值之間誤差的大小,不考慮其正負。但由于經過平方運算,與實際觀測值偏差較大的預測值會比偏差較小的預測值受到更嚴重的懲罰。平方損失函數具有良好的數學性質——連續、可微分且為凸函數,是機器學習回歸任務中最常用的一種損失函數,也稱為 L 2 L_2 L2?損失函數。
當模型輸出預測值與實際觀測值之間的誤差服從高斯分布的假設成立時,最小化均方誤差損失函數與極大似然估計本質上是一致的,在此情形下(如回歸任務),均方誤差損失函數是最優的選擇。
(3)絕對損失函數
絕對損失函數(Absolute Loss Function)是模型輸出的預測值與實際觀測值之差的絕對值,其數學表達式為:
L ( y i , f ( x i ; θ ) ) = ∣ y i ? f ( x i ; θ ) ∣ L(y_i, f({\bm x}_i; {\bm \theta})) = |y_i - f({\bm x}_i; {\bm \theta})| L(yi?,f(xi?;θ))=∣yi??f(xi?;θ)∣
絕對損失函數也稱為 L 1 L_1 L1?損失函數。與平方損失函數類似,絕對損失函數也只考慮預測值與實際觀測值之間誤差的大小,不考慮其正負。所不同的是,由于絕對損失與絕對誤差之間是線性關系,平方損失與誤差之間是平方關系,當誤差非常大的時候,平方損失會遠大于絕對損失。因此,當樣本中出現一個誤差非常大的離群樣本(Outlier)時,平方損失會產生一個非常大的損失,對模型的訓練會產生較大的影響。所以,與平方損失函數相比,絕對損失函數對于離群樣本更加魯棒,即不易受到離群樣本的影響。
另一方面,當使用梯度下降算法時,平方損失函數的梯度為 [ y i ? f ( x i ; θ ) ] [y_i - f({\bm x}_i; {\bm \theta})] [yi??f(xi?;θ)],而絕對損失函數的梯度為 ± 1 \pm 1 ±1,即平方損失函數的梯度的幅度會隨誤差大小變化,而絕對損失函數的梯度的幅度則一直保持為 1,即便在絕對誤差 ∣ y i ? f ( x i ; θ ) ∣ |y_i - f({\bm x}_i; {\bm \theta})| ∣yi??f(xi?;θ)∣很小時,絕對損失函數的梯度的幅度也同樣為 1,這實際上是非常不利于模型的訓練的。當然,也可以通過在訓練過程中動態調整學習率來緩解這個問題,但是總的來說,平方損失函數通常比絕對損失函數可以更快地收斂。
(4)對數損失函數
其定義為:
L ( y i , f ( x i ; θ ) ) = ? log ? P ( y i ∣ x i ) L(y_i, f({\bm x}_i; {\bm \theta})) = -\log P(y_i \mid {\bm x}_i) L(yi?,f(xi?;θ))=?logP(yi?∣xi?)
對數損失函數(Logarithmic Loss Function)或負對數似然損失函數(Negative Log Likelihood Loss Function)源于極大似然估計的思想——極大化對數似然函數,而通常習慣于最小化損失函數,因此將它轉變為最小化負對數似然函數。取對數是為了方便計算極大似然估計,因為在極大似然估計中,直接求導比較困難,所以通常都是先取對數再求導尋找極值點。 P ( y i ∣ x i ) P(y_i \mid {\bm x}_i) P(yi?∣xi?)是指當前模型對于輸入樣本 x i {\bm x}_i xi?的預測值為 y i y_i yi?的概率,即預測正確的概率。因為對數函數是單調遞增的,所以在公式中加上負號之后,表示預測正確的概率越高,其損失函數值越小,即最大化 P ( y i ∣ x i ) P(y_i \mid {\bm x}_i) P(yi?∣xi?)等價于最小化損失函數。對數損失函數通常用于邏輯斯諦回歸(Logistic Regression)模型的推導中。
(5)交叉熵損失函數
交叉熵(Cross Entropy)是 Shannon 信息論中一個重要概念,用于衡量同一個隨機變量中的兩個不同概率分布的差異程度。假設一個樣本集中有兩個概率分布 p p p和 q q q,其中 p p p表示真實概率分布, q q q表示非真實概率分布。假如,按照真實概率分布 p p p來衡量表示一個樣本所需要的編碼長度的期望為:
H ( p ) = ? ∑ i p i log ? p i H(p) = -\sum_{i} p_i \log p_i H(p)=?i∑?pi?logpi?
但是,如果按照非真實概率分布 q q q來衡量表示服從真實概率分布 p p p的一個樣本所需要的平均編碼長度,則應該是:
H ( p , q ) = ? ∑ i p i log ? q i H(p, q) = -\sum_{i} p_i \log q_i H(p,q)=?i∑?pi?logqi?
此時將 H ( p , q ) H(p, q) H(p,q)稱為交叉熵。
在機器學習中,交叉熵可作為損失函數。交叉熵損失函數(Cross-Entropy Loss Function)定義為:
L ( y i , f ( x i ; θ ) ) = ? [ y i log ? f ( x i ; θ ) + ( 1 ? y i ) log ? ( 1 ? f ( x i ; θ ) ) ] L(y_i, f({\bm x}_i; {\bm \theta})) = -[y_i \log f({\bm x}_i; {\bm \theta}) + (1 - y_i) \log (1 - f({\bm x}_i; {\bm \theta}))] L(yi?,f(xi?;θ))=?[yi?logf(xi?;θ)+(1?yi?)log(1?f(xi?;θ))]
(6)合頁損失函數
對于一個二分類的問題,數據集的標簽取值是 { + 1 , ? 1 } \{+1, -1\} {+1,?1},預測值是一個連續型實數值函數,那么合頁損失函數(Hinge Loss Function)的定義為:
L ( y i , f ( x i ; θ ) ) = max ? ( 0 , 1 ? y i f ( x i ; θ ) ) L(y_i, f({\bm x}_i; {\bm \theta})) = \max(0, 1 - y_i f({\bm x}_i; {\bm \theta})) L(yi?,f(xi?;θ))=max(0,1?yi?f(xi?;θ))
在機器學習中,軟間隔支持向量機(SVM)模型的原始最優化問題等價于最小化合頁損失。只有當樣本被正確分類且函數間隔大于 1 時,合頁損失才等于 0;否則損失是 1 ? y i f ( x i ; θ ) 1 - y_i f({\bm x}_i; {\bm \theta}) 1?yi?f(xi?;θ),只能大于 0。
除了上述幾種損失函數外,還有其他針對特定任務的損失函數。總而言之,沒有一個適合所有機器學習問題的損失函數,損失函數的設計是以能夠更好地解決具體問題為目的的。針對特定問題選擇損失函數涉及許多因素,例如所選機器學習模型的類型、是否易于計算導數以及訓練樣本集中離群樣本所占比例等。
2. 期望風險
模型的輸入 X {\bm X} X和輸出 Y Y Y都可以看作是輸入和輸出聯合空間的隨機變量,服從聯合概率分布 P ( x , y ) P({\bm x}, y) P(x,y),稱損失函數在該聯合概率分布上的期望為 期望風險(Expected Risk),其數學表達式為:
R exp ? ( θ ) = E ( X , Y ) ~ P ( x , y ) [ L ( y , f ( x ; θ ) ) ] = ∫ L ( y , f ( x ; θ ) ) P ( x , y ) d x d y R_{\exp}({\bm \theta}) = E_{({\bm X}, Y) \sim P({\bm x}, y)}[L(y, f({\bm x}; {\bm \theta}))] = \int L(y, f({\bm x}; {\bm \theta})) P({\bm x}, y) \, {\rm d}{\bm x} {\rm d}y Rexp?(θ)=E(X,Y)~P(x,y)?[L(y,f(x;θ))]=∫L(y,f(x;θ))P(x,y)dxdy
期望風險是損失函數的期望,用來度量平均意義下模型預測的性能好壞。
3. 經驗風險
一個好的模型應當有較小的期望風險。機器學習的目標在于從假設空間中選取最優模型,而選取最優模型的準則是期望風險最小化。顯然,要使期望風險 R exp ? ( θ ) R_{\exp}({\bm \theta}) Rexp?(θ)最小化,需要知道聯合概率分布 P ( x , y ) P({\bm x}, y) P(x,y),在模式分類問題中,即必須已知先驗概率和條件概率密度。但是,在實際的機器學習問題中,無法得知真實的聯合概率分布函數,因此也沒有辦法直接計算期望風險。事實上,如果知道數據的聯合概率分布 P ( x , y ) P({\bm x}, y) P(x,y),可以直接利用貝葉斯公式求得條件概率 P ( y i ∣ x i ) P(y_i \mid {\bm x}_i) P(yi?∣xi?),也沒必要學習模型了。
然而,從另一個方面來看,可以利用訓練樣本集中的 N N N個觀測樣本近似地求出經驗風險。給定一個訓練樣本數據集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ? , ( x i , y i ) , ? , ( x N , y N ) } , T = \{({\bm x}_1, y_1), ({\bm x}_2, y_2), \cdots, ({\bm x}_i, y_i), \cdots, ({\bm x}_N, y_N)\}, T={(x1?,y1?),(x2?,y2?),?,(xi?,yi?),?,(xN?,yN?)},
很容易計算出模型的經驗風險(Empirical Risk)或經驗損失(Empirical Loss),即根據訓練樣本集的平均損失。
R emp ( θ ) = 1 N ∑ i = 1 N L ( y i , f ( x i ; θ ) ) R_{\text{emp}}({\bm \theta}) = \frac{1}{N} \sum_{i=1}^{N} L(y_i, f({\bm x}_i; {\bm \theta})) Remp?(θ)=N1?i=1∑N?L(yi?,f(xi?;θ))
由于 R emp ( θ ) R_{\text{emp}}({\bm \theta}) Remp?(θ)是用已知訓練樣本(即經驗數據)定義的,因此稱為經驗風險。在假設空間、損失函數以及訓練樣本集確定的情況下,經驗風險可以確定。根據大數定律,當訓練樣本集中的樣本數量 N N N趨向于無窮大時,經驗風險收斂于期望風險。這樣,可用經驗風險 R emp ( θ ) R_{\text{emp}}({\bm \theta}) Remp?(θ)來逼近期望風險 R exp ? ( θ ) R_{\exp}({\bm \theta}) Rexp?(θ)。使得經驗風險最小的模型是最優的模型,這是經驗風險最小化(Empirical Risk Minimization, ERM)準則。按照經驗風險最小化準則,求解模型的最優參數估計是求解如下的最優化問題:
θ ^ = arg ? min ? θ R emp ( θ ) = arg ? min ? θ 1 N ∑ i = 1 N L ( y i , f ( x i ; θ ) ) \hat{{\bm \theta}} = \arg \min_{{\bm \theta}} R_{\text{emp}}({\bm \theta}) = \arg \min_{{\bm \theta}} \frac{1}{N} \sum_{i=1}^{N} L(y_i, f({\bm x}_i; {\bm \theta})) θ^=argθmin?Remp?(θ)=argθmin?N1?i=1∑N?L(yi?,f(xi?;θ))
4. 結構風險
當訓練集中的樣本數量足夠大時,經驗風險最小化(ERM)準則能保證有很好的效果,在現實中被廣泛采用。例如,極大似然估計(Maximum Likelihood Estimation)是經驗風險最小化的一個例子。當模型是條件概率分布、損失函數是對數損失函數時,經驗風險最小化等價于極大似然估計。然而,通常情況下,由于訓練樣本集中的樣本數量是有限的,而且訓練集中的樣本數據包含了各種噪聲,因此實際所用的訓練集不能很好地反映樣本數據的真實分布。在這種情況下,如果利用經驗風險最小化準則,則會導致模型產生“過擬合”(Overfitting)現象。
導致“過擬合”發生的因素有很多,最主要的原因是訓練樣本數量不足以及模型過于復雜。為了解決這一問題,需要引入結構風險函數,即對經驗風險函數進行矯正,即在經驗風險上加上表示模型復雜度的正則(Regularization)項或懲罰(Penalty)項。在假設空間、損失函數以及訓練樣本集確定的情況下,結構風險函數定義為:
R str ( θ ) = 1 N ∑ i = 1 N L ( y i , f ( x i ; θ ) ) + λ φ ( θ ) R_{\text{str}}({\bm \theta}) = \frac{1}{N} \sum_{i=1}^N L(y_i, f({\bm x}_i; {\bm \theta})) + \lambda \varphi ({\bm \theta}) Rstr?(θ)=N1?i=1∑N?L(yi?,f(xi?;θ))+λφ(θ)
式中, λ ( λ > 0 ) \lambda (\lambda > 0) λ(λ>0)為正則化系數,也稱懲罰因子,用以權衡經驗風險和模型復雜度; φ ( θ ) \varphi ({\bm \theta}) φ(θ)代表模型函數的復雜度,是定義在假設空間上的泛函,簡單來說是函數的函數。模型函數的復雜度越高, φ ( θ ) \varphi ({\bm \theta}) φ(θ)也越大。一般使用模型參數向量 θ {\bm \theta} θ的 ? 2 \ell_2 ?2?范數或 ? 1 \ell_1 ?1?范數來近似模型的復雜度。通過設置正則化系數 λ \lambda λ,來權衡經驗風險和正則項,減小參數規模,達到模型簡化的目的,從而使模型具有更好的泛化能力。因此,結構風險函數強制使模型的復雜度不應過高,這種學習準則(策略)稱為結構風險最小化(Structural Risk Minimization, SRM)準則。正則化可以看成結構風險最小化的實現,是為了防止過擬合而提出來的策略。
結構風險小意味著經驗風險小、模型復雜度低。結構風險小的模型通常對訓練樣本以及新的測試樣本都有較好的預測性能。結構風險最小化的策略認為結構風險最小的模型是最優的模型。所以按照結構風險最小化準則,求解模型的最優參數估計是求解如下的最優化問題:
θ ^ = arg ? min ? θ R str ( θ ) = arg ? min ? θ [ 1 N ∑ i = 1 N L ( y i , f ( x i ; θ ) ) + λ R ( θ ) ] \hat{{\bm \theta}} = \arg \min_{{\bm \theta}} R_{\text{str}}({\bm \theta}) = \arg \min_{{\bm \theta}} \left[ \frac{1}{N} \sum_{i=1}^N L(y_i, f({\bm x}_i; {\bm \theta})) + \lambda R({\bm \theta}) \right] θ^=argθmin?Rstr?(θ)=argθmin?[N1?i=1∑N?L(yi?,f(xi?;θ))+λR(θ)]
優化算法
在獲得了訓練樣本集、確定了假設空間以及選定了合適的學習準則之后,要根據準則(策略)從假設空間中選擇最優模型,需要考慮用什么樣的計算方法來求解模型參數估計。
機器學習模型的訓練和學習的過程,實際上是求解最優化問題的過程。如果最優化問題存在顯式的解析解,則這個最優化問題比較簡單,可以求出它的閉式解。但是,如果不存在解析解,則需要通過數值計算的方法來不斷逼近。在機器學習中,很多優化函數是凸函數,因此,如何高效地尋找到全局最優解,是一個值得研究的問題。
目前,常用的優化算法有梯度下降法(Gradient Descent, GD)、隨機梯度下降法(Stochastic Gradient Descent, SGD)、批量梯度下降法(Mini-Batch Gradient Descent, MBGD)、牛頓法、擬牛頓法、坐標下降法等。