人工智慧裡的數學修煉 | 是什麼決定了你的學習演算法泛化效能?偏差—方差分解(bias-variance decomposition)
阿新 • • 發佈:2019-01-24
一段可以解釋學習演算法泛化效能的推導過程,要想提升自己模型的預測能力,得先了解這種能力受什麼影響
偏差-方差分解可以對學習演算法的期望泛化錯誤率進行拆解,得到清晰明確的錯誤構成
對於測試樣本x,令yD為x在資料集中的標記,y為x的真實標記,f(x;D)為訓練集D上學得模型f在x上的預測輸出。以迴歸任務為例
學習演算法的期望預測為:
F(x) = ED[f(x;D)]
使用樣本數相同的不同訓練集產生的方差為:
var(x) = ED[(f(x;D)-F(x))**2]
噪聲為:
e**2 = ED[(yD-y)**2]
期望輸出與真實標記的差別稱為偏差:
bias(x)**2 = (F(x)-y)**2
為了便於討論,假定噪聲期望為零,即ED[yD-y] = 0.通過簡單的多項式展開合併,可對演算法的期望泛化誤差進行分解:
E(f;D) = ED[(f(x;D)-yD)**2]
= ED[(f(x;D)-F(x)+F(x)-yD)**2]
= ED[(f(x;D)-F(x))**2] + ED[(F(x)-yD)**2]
+ ED[2(f(x;D)-F(x))(F(x)-yD)]
= ED[(f(x;D)-F(x))**2] + ED[(F(x)-yD)**2]
+ 2[ED(f(x;D)-F(x))ED(F(x)-yD)]
= ED[(f(x;D)-F(x))**2] + ED[(F(x)-yD)**2]
+ 2[(F(x)-F(x))ED(F(x)-yD)]
= ED[(f(x;D)-F(x))**2] + ED[(F(x)-yD)**2]
= ED[(f(x;D)-F(x))**2] + ED[(F(x)-y+y-yD)**2]
= ED[(f(x;D)-F (x))**2] + ED[(F(x)-y)**2] + ED[(y-yD)**2]
+ 2ED[(F(x)-y)(y-yD)]
= ED[(f(x;D)-F(x))**2] + ED[(F(x)-y)**2] + ED[(y-yD)**2]
= bias(x)**2 + var(x) + e**2
上式表明,泛化誤差可以分解為偏差、方差和噪聲之和。偏差度量了學習演算法的期望預測與真實結果的偏離程度,即刻畫了學習演算法本身的擬合能力;方差度量了同樣大小的訓練集的變動所導致的學習效能的變化,即刻畫了資料擾動所造成的影響;噪聲表達了在當前任務上任何學習演算法所能達到的期望泛化誤差的下界,即刻畫了學習問題本身的難度。
偏差-方差分解說明,泛化效能是由學習演算法的能力、資料的充分性以及學習任務本身的能力決定的
偏差-方差窘境:
對於給定的學習任務,假定我們能夠控制學習演算法的訓練程度,則在訓練不足時,學習器的擬合能力不夠強,訓練資料的擾動不足以使學習器產生顯著變化,此時偏差主導泛化錯誤率;隨著訓練程度的加深,學習器擬合能力的增強,訓練資料發生的擾動漸漸能被學習器學習到,方差逐漸主導了泛化錯誤率
參考文獻
周志華.機器學習[M].北京:清華大學出版社,2015: 44~46