機器學習中的Bias和Variance是指什麼

首先明確一點,Bias和Variance是針對Generalization(一般化,泛化)來說的。

在機器學習中,我們用訓練數據集去訓練(學習)一個model(模型),通常的做法是定義一個Loss function(誤差函數),通過將這個Loss(或者叫error)的最小化過程,來提高模型的性能(performance)。然而我們學習一個模型的目的是爲了解決實際的問題(或者說是訓練數據集這個領域(field)中的一般化問題),單純地將訓練數據集的loss最小化,並不能保證在解決更一般的問題時模型仍然是最優,甚至不能保證模型是可用的。這個訓練數據集的loss與一般化的數據集的loss之間的差異就叫做generalization error。

generalization error又可以細分爲Bias和Variance兩個部分。
首先如果我們能夠獲得所有可能的數據集合,並在這個數據集合上將loss最小化,這樣學習到的模型就可以稱之爲“真實模型”,當然,我們是無論如何都不能獲得並訓練所有可能的數據的,所以“真實模型”肯定存在,但無法獲得,我們的最終目標就是去學習一個模型使其更加接近這個真實模型。

而bias和variance分別從兩個方面來描述了我們學習到的模型與真實模型之間的差距。
Bias是 “用所有可能的訓練數據集訓練出的所有模型的輸出的平均值” 與 “真實模型”的輸出值之間的差異;
Variance則是“不同的訓練數據集訓練出的模型”的輸出值之間的差異。

這裏需要注意的是我們能夠用來學習的訓練數據集只是全部數據中的一個子集。想象一下我們現在收集幾組不同的數據,因爲每一組數據的不同,我們學習到模型的最小loss值也會有所不同,當然,它們與“真實模型”的最小loss也是不一樣的。

其他答主有提到關於cross validation中k值對bias和variance的影響,那我就從其他方面來舉個例子。

假設我們現在有一組訓練數據,需要訓練一個模型(基於梯度的學習,不包括最近鄰等方法)。在訓練過程的最初,bias很大,因爲我們的模型還沒有來得及開始學習,也就是與“真實模型”差距很大。然而此時variance卻很小,因爲訓練數據集(training data)還沒有來得及對模型產生影響,所以此時將模型應用於“不同的”訓練數據集也不會有太大差異。

而隨着訓練過程的進行,bias變小了,因爲我們的模型變得“聰明”了,懂得了更多關於“真實模型”的信息,輸出值與真實值之間更加接近了。但是如果我們訓練得時間太久了,variance就會變得很大,因爲我們除了學習到關於真實模型的信息,還學到了許多具體的,只針對我們使用的訓練集(真實數據的子集)的信息。而不同的可能訓練數據集(真實數據的子集)之間的某些特徵和噪聲是不一致的,這就導致了我們的模型在很多其他的數據集上就無法獲得很好的效果,也就是所謂的overfitting(過學習)。

因此,在實際的訓練過程中會用到validation set,會用到諸如early stopping以及regularization等方法來避免過學習的發生,然而沒有一種固定的策略方法適用於所有的task和data,所以bias和variance之間的tradeoff應該是機器學習永恆的主題吧。

最後說一點,從bias和variance的討論中也可以看到data對於模型訓練的重要性,假如我們擁有全部可能的數據,就不需要所謂的tradeoff了。但是既然這是不現實的,那麼儘量獲取和使用合適的數據就很重要了。

轉載:https://www.zhihu.com/question/27068705/answer/82132134

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章