科普一下機器學習熱門概念
本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。
機器學習日常:不是在建模,就是在建模的路上。
而在建模過程中,又能聽到煉丹愛好者時而念念有詞“怎么又過擬合了?”,時而自我安慰“找到偏差和方差的平衡點是成功的訣竅”。
所以為了能讓非專業者也能愉快地玩(zhuang)耍(bi),今天就來科普一下機器學習的幾個常見概念。
泛化
如何判別一個每天都刷題的高中班級的成績怎么樣呢?
拉去考一場。
那怎么判斷一個機器學習領域的新算法到底棒不棒呢?
去新數據里溜一圈。
這種對于訓練集以外的數據也能進行良好的判別,或得到合適輸出的能力,就稱為機器學習模型的泛化(generalization)能力。
并且,說一個模型泛化能力弱,那也是有很多種弱法的。
過擬合與欠擬合
有些模型,直接死在提取數據特征這一步。

訓練集上就沒有完全擬合數據,實際樣本中的表現同樣誤差很大。
類似一個高中生每天都拿著五三刷,但是始終找不到做題規律,模擬題做得拉跨,考試就更不用說。
這種在訓練集和測試集(實際樣本)中都表現不好的情況,就叫做欠擬合(Underfitting)。
這通常是因為模型復雜度低引起的(就是菜得很實在)。
而有些模型在訓練時表現良好:

但一到實戰就撲街。
這種在訓練集上表現良好,但在測試集上表現很差的情況,就叫做過擬合(Overfitting)。
訓練集質量不高就可能導致過擬合,比如樣本不足,或者訓練數據中的噪聲(干擾數據)過多。
也有可能因為模型復雜度高于實際問題,只是死記硬背下了訓練數據的信息,但完全無法推廣到沒見過的新數據上。

不管菜到底有幾種方式,對于一個機器模型來說,總歸是在實際應用里表現不好,發生了泛化誤差(Generalization Error)。
而這種誤差,可以再次細化為兩個方面:
誤差(Error) = 偏差(Bias) + 方差(Variance)
偏差與方差
在機器學習領域,偏差(bias)是指模型的預測值相對于真實結果的偏離程度。

△其中f(x)為預測函數,y為樣本數據真實值
而方差(variance)與真實值沒有關系,只描述通過模型得到的預測值之間的分布情況。

對于一個模型來說,偏差反映模型本身的精確度,而方差則衡量模型的穩定性。

如果模型過于簡單且參數很少,那么它可能具有高偏差和低方差的特征,也就會造成欠擬合。
而如果模型復雜而具有大量參數,那么它將具有高方差和低偏差的特征,造成過擬合。
看上去,一個好的機器模型就是要同時追求更低的偏差和方差。
但在實際應用中,偏差和方差往往不可兼得。
偏差與方差的權衡
先來看這兩個模型:

右邊的模型明顯比左邊要復雜很多,也因此它的偏差更低,方差更高,與左邊的模型相反。
這種偏差與方差之間的沖突就是偏差-方差窘境(Bias- Variance dilemma):

在改進算法時,要減少偏差就會增大方差,反之亦然。
因此,我們需要找到一個合適的平衡點,既不會因為高偏差而造成欠擬合,也不會因為高方差而造成過擬合。
這種偏差與方差之間的權衡(bias and variance trade-off),實際上也就是模型復雜度的權衡。
為什么要提出這些概念?
簡單來說,為了讓計算機也學會人類的概括能力。
比如,如果我們要通過某地房屋面積與房價之間的關系,進而幫助房屋售賣者選取更合適的售價,那么下面哪個函數最好呢?
△紅色為事先給定的樣本數據
第一個明顯欠擬合。都沒有從給定的數據中找到一般規律,更不用說讓函數去預測新房價面積可能對應的售價了。
第三個就是過擬合,函數參數過多,想要抓住所變化,反而導致模型的通用性下降,預測效果大打折扣。
而第二個函數基本擬合了樣本數據,形成了一般規律,也保證了對新數據的預測能力。
能從海量數據中找到一般規律,這就是一個模型的泛化能力。
模型的泛化能力越高,通用性也就越強,這樣能完成的任務范圍也就越廣。
但就算是ANN(人工神經網絡)這樣優秀的機器學習模型,目前也還是受限于偏差與方差的權衡。
算法工程師們提出了各種方法,如正則化(Regularization)、套袋法(Bagging)、貝葉斯法(Bayesian),使模型能夠更好地概括舊數據,預測新數據。
并期望著最終能構建一個機器學習模型,使其能力無限逼近目前最強的通用模型——人類大腦。