天天看點

深度學習:偏差(bias)和方差(Variance)

文章目錄

    • 一、期望、機率論方差、均方差
    • 二、為什麼會有偏差和方差
    • 三、偏差、方差、噪聲是什麼?
      • 1. 簡述偏差、方差、噪聲
      • 2. 數學公式定義偏差、方差、噪聲
    • 四、泛化誤差、偏差和方差的關系?
    • 五、用圖形解釋偏差和方差
    • 六、偏差、方差囧境
    • 七、偏差、方差與過拟合、欠拟合的關系?
    • 八、偏差、方差與模型複雜度的關系
    • 九、偏差、方差與bagging、boosting的關系?
    • 十、偏差、方差和K折交叉驗證的關系?
    • 十一、如何解決偏差、方差問題?

一、期望、機率論方差、均方差

  1. 期望

    機率論中描述一個随機事件中的随機變量的平均值的大小可以用數學期望這個概念,數學期望的定義是實驗中可能的結果的機率乘以其結果的總和。

    深度學習:偏差(bias)和方差(Variance)
  2. 方差
    深度學習:偏差(bias)和方差(Variance)
    深度學習:偏差(bias)和方差(Variance)
    深度學習:偏差(bias)和方差(Variance)
  3. 标準差

    又叫均方差, 是離均差平方的算數平方根。标準差能展現一個資料集的離散程度,平均數相同的兩組數,标準差未必相同。

    深度學習:偏差(bias)和方差(Variance)

    标準差和方差都是用來衡量樣本離散程度的量,那麼為什麼要有标準差呢?

    因為方差和樣本的量綱不一樣。換句話說不在一個層次,怎麼了解這個層次,從公式來看方差是樣本和均值的平方和的平均。這裡有一個平方運算,這是導緻量綱不在一個層次的原因。而标準差和均值的量綱(機關)是一緻的,在描述一個波動範圍時标準差比方差更友善。

二、為什麼會有偏差和方差

對學習算法除了通過實驗估計其泛化性能之外,人們往往還希望了解它為什麼具有這樣的性能。

“偏差-方差分解”(bias-variance decomposition)就是從偏差和方差的角度來解釋學習算法泛化性能的一種重要工具。

在機器學習中,我們用訓練資料集去訓練一個模型,通常的做法是定義一個誤差函數,通過将這個誤差的最小化過程,來提高模型的性能。然而我們學習一個模型的目的是為了解決訓練資料集這個領域中的一般化問題,單純地将訓練資料集的損失最小化,并不能保證在解決更一般的問題時模型仍然是最優,甚至不能保證模型是可用的。

這個訓練資料集的損失與一般化的資料集的損失之間的差異就叫做泛化誤差(generalization error)。

而泛化誤差可以分解為偏差(Biase)、方差(Variance)和噪聲(Noise)。

三、偏差、方差、噪聲是什麼?

1. 簡述偏差、方差、噪聲

如果我們能夠獲得所有可能的資料集合,并在這個資料集合上将損失最小化,那麼學習得到的模型就可以稱之為“真實模型”。

當然,在現實生活中我們不可能擷取并訓練所有可能的資料,是以“真實模型”肯定存在,但是無法獲得。我們的最終目的是學習一個模型使其更加接近這個真實模型。

Bias和Variance分别從兩個方面來描述我們學習到的模型與真實模型之間的差距。

Bias是用所有可能的訓練資料集訓練出的所有模型的輸出的平均值與真實模型的輸出值之間的差異。

Variance是不同的訓練資料集訓練出的模型輸出值之間的差異。

噪聲的存在是學習算法所無法解決的問題,資料的品質決定了學習的上限。假設在資料已經給定的情況下,此時上限已定,我們要做的就是盡可能的接近這個上限。

注意:我們能夠用來學習的訓練資料集隻是全部資料中的一個子集。想象一下,我們現在收集幾組不同的資料,因為每一組資料的不同,我們學習到模型的最小損失值也會有所不同,它們與“真實模型”的最小損失也是不一樣的。

2. 數學公式定義偏差、方差、噪聲

深度學習:偏差(bias)和方差(Variance)

以回歸任務為例,學習算法的期望預測為:

深度學習:偏差(bias)和方差(Variance)

這裡的期望預測也就是針對不同資料集D,模型 f 對樣本 x 的預測值取其期望,也叫做平均預測(average predicted)。

(1)方差定義:

使用樣本數相同的不同訓練集産生的方差為:

深度學習:偏差(bias)和方差(Variance)

方差的含義:方差度量了同樣大小的訓練集的變動所導緻的學習性能的變化,即刻畫了資料擾動所造成的影響。

(2)偏差定義:

期望輸出與真實标記的差别稱為偏差(bias),即:

深度學習:偏差(bias)和方差(Variance)

偏差的含義:偏差度量了學習算法的期望預測與真實結果的偏離程度,即刻畫了學習算法本身的拟合能力。

噪聲的含義:噪聲則表達了在目前任務上任何學習算法所能達到的期望泛化誤差的下界,即刻畫了學習問題本身的難度。

偏差度量的是單個模型的學習能力,而方差度量的是同一個模型在不同資料集上的穩定性。

(3)噪聲:

噪聲為:

深度學習:偏差(bias)和方差(Variance)

噪聲的含義:噪聲則表達了在目前任務上任何學習算法所能達到的期望泛化誤差的下界,即刻畫了學習問題本身的難度。

偏差度量的是單個模型的學習能力,而方差度量的是同一個模型在不同資料集上的穩定性。

四、泛化誤差、偏差和方差的關系?

深度學習:偏差(bias)和方差(Variance)

也就是說,泛化誤差可以通過一系列公式分解運算證明:泛化誤差為偏差、方差與噪聲之和。證明過程如下:

為了便于讨論,我們假定噪聲期望為零,即 [公式] 。通過簡單的多項式展開合并,可對算法的期望泛化誤差進行分解:

深度學習:偏差(bias)和方差(Variance)

于是,最終得到:

深度學習:偏差(bias)和方差(Variance)

“偏差-方差分解”說明,泛化性能是由學習算法的能力、資料的充分性以及學習任務本身的難度所共同決定的。給定學習任務,為了取得好的泛化性能,則需使偏差較小,即能夠充分拟合資料,并且使方差較小,即使得資料擾動産生的影響小。

五、用圖形解釋偏差和方差

深度學習:偏差(bias)和方差(Variance)

假設紅色的靶心區域是學習算法完美的正确預測值,藍色點為訓練資料集所訓練出的模型對樣本的預測值,當我們從靶心逐漸往外移動時,預測效果逐漸變差。

從上面的圖檔中很容易可以看到,左邊一列的藍色點比較集中,右邊一列的藍色點比較分散,它們描述的是方差的兩種情況。比較集中的屬于方差比較小,比較分散的屬于方差比較大的情況。

我們再從藍色點與紅色靶心區域的位置關系來看,靠近紅色靶心的屬于偏差較小的情況,遠離靶心的屬于偏差較大的情況。

思考:從上面的圖中可以看出,模型不穩定時會出現偏差小、方差大的情況,那麼偏差和方差作為兩種度量方式有什麼差別呢?

Bias的對象是單個模型,是期望輸出與真實标記的差别。它描述了模型對本訓練集的拟合程度。

Variance的對象是多個模型,是相同分布的不同資料集訓練出模型的輸出值之間的差異。它刻畫的是資料擾動對模型的影響。

六、偏差、方差囧境

一般來說,偏差與方差是有沖突的,這稱為偏差-方差窘境(bias-variance dilemma)。

下圖給出了一個示意圖。給定學習任務,假定我們能控制學習算法的訓練程度,則在訓練不足時,學習器的拟合能力不夠強,訓練資料的擾動不足以使學習器産生顯著變化,此時偏差主導了泛化錯誤率;随着訓練程度的加深,學習器的拟合能力逐漸增強,訓練資料發生的擾動漸漸能被學習器學到,方差逐漸主導了泛化錯誤率;在訓練程度充足後,學習器的拟合能力已經非常強,訓練資料發生的輕微擾動都會導緻學習器發生顯著變化,若訓練資料自身的、非全局的特性被學習器學到了,則将發生過拟合。

深度學習:偏差(bias)和方差(Variance)

七、偏差、方差與過拟合、欠拟合的關系?

一般來說,簡單的模型會有一個較大的偏差和較小的方差,複雜的模型偏差較小方差較大。

欠拟合:模型不能适配訓練樣本,有一個很大的偏差。

舉個例子:我們可能有本質上是多項式的連續非線性資料,但模型隻能表示線性關系。在此情況下,我們向模型提供多少資料不重要,因為模型根本無法表示資料的基本關系,模型不能适配訓練樣本,有一個很大的偏差,是以我們需要更複雜的模型。那麼,是不是模型越複雜拟合程度越高越好呢?也不是,因為還有方差。

過拟合:模型很好的适配訓練樣本,但在測試集上表現很糟,有一個很大的方差。

方差就是指模型過于拟合訓練資料,以至于沒辦法把模型的結果泛化。而泛化正是機器學習要解決的問題,如果一個模型隻能對一組特定的資料有效,換了資料就無效,我們就說這個模型過拟合。這就是模型很好的适配訓練樣本,但在測試集上表現很糟,有一個很大的方差。

八、偏差、方差與模型複雜度的關系

由前面偏差和方差的介紹,我們來總結一下偏差和方差的來源:

我們訓練的機器學習模型,必不可少地對資料依賴。但是,如果你不清楚資料服從一個什麼樣的分布,或是沒辦法拿到所有可能的資料(肯定拿不到所有資料),那麼我們訓練出來的模型和真實模型之間存在不一緻性。這種不一緻性表現在兩個方面:偏差和方差。

那麼,既然偏差和方差是這麼來的,而且還是無法避免的,那麼我們有什麼辦法盡量減少它對模型的影響呢?

一個好的辦法就是正确選擇模型的複雜度。複雜度高的模型通常對訓練資料有很好的拟合能力,但是對測試資料就不一定了。而複雜度太低的模型又不能很好的拟合訓練資料,更不能很好的拟合測試資料。是以,模型複雜度和模型偏差和方差具有如下圖所示關系。

深度學習:偏差(bias)和方差(Variance)

九、偏差、方差與bagging、boosting的關系?

Bagging算法是對訓練樣本進行采樣,産生出若幹不同的子集,再從每個資料子集中訓練出一個分類器,取這些分類器的平均,是以是降低模型的方差(variance)。

Bagging算法和Random Forest這種并行算法都有這個效果。

Boosting則是疊代算法,每一次疊代都根據上一次疊代的預測結果對樣本進行權重調整,是以随着疊代不斷進行,誤差會越來越小,是以模型的偏差(bias)會不斷降低。

十、偏差、方差和K折交叉驗證的關系?

K-fold Cross Validation的思想:将原始資料分成K組(一般是均分),将每個子集資料分别做一次驗證集,其餘的K-1組子集資料作為訓練集,這樣會得到K個模型,用這K個模型最終的驗證集的分類準确率的平均數作為此K-CV下分類器的性能名額。

深度學習:偏差(bias)和方差(Variance)

當K較大時,m較小,模型建立在較大的N-m上,經過更多次數的平均可以學習得到更符合真實資料分布的模型,Bias就小了,但是這樣一來模型就更加拟合訓練資料集,再去測試集上預測的時候預測誤差的期望值就變大了,進而Variance就大了;k較小的時候,模型不會過度拟合訓練資料,進而Bias較大,但是正因為沒有過度拟合訓練資料,Variance也較小。

十一、如何解決偏差、方差問題?

整體思路:首先,要知道偏差和方差是無法完全避免的,隻能盡量減少其影響。

(1)在避免偏差時,需盡量選擇正确的模型,一個非線性問題而我們一直用線性模型去解決,那無論如何,高偏差是無法避免的。

(2)有了正确的模型,我們還要慎重選擇資料集的大小,通常資料集越大越好,但大到資料集已經對整體所有資料有了一定的代表性後,再多的資料已經不能提升模型了,反而會帶來計算量的增加。而訓練資料太小一定是不好的,這會帶來過拟合,模型複雜度太高,方差很大,不同資料集訓練出來的模型變化非常大。

(3)最後,要選擇合适的模型複雜度,複雜度高的模型通常對訓練資料有很好的拟合能力。

針對偏差和方差的思路:

偏差:實際上也可以稱為避免欠拟合。

1、尋找更好的特征 -- 具有代表性。
2、用更多的特征 -- 增大輸入向量的次元。(增加模型複雜度)
方差:避免過拟合
1、增大資料集合 -- 使用更多的資料,減少資料擾動所造成的影響
2、減少資料特征 -- 減少資料次元,減少模型複雜度
3、正則化方法
4、交叉驗證法
           

參考:

【1】https://blog.csdn.net/siyue0211/article/details/80309799