1. 正則化
正則化是指,在損失函數的基礎上加上了正則化項,即原來的loss function$ \frac{1}{m}\sum_{i=1}^n(y_i-\hat y)^2$ 變爲$ \frac{1}{m}\sum_{i=1}^n(y_i-\hat y)^2+\frac{\lambda}{2m} \sum_{i=1}^n||w||^2$函數
**正則化的目的是爲了防止過擬合 **測試
正則化能夠防止過擬合的緣由,從直觀意義上講,咱們須要最小化損失函數,因爲加了正則化項,因此在最小化損失函數的基礎上參數值也越小越好,參數值 $ \theta $ 小的好處是:spa
一、由於參數值很小,接近於0,可讓減小多項式的項數。blog
二、參數值很小,可讓函數更平滑,好比帶入兩個樣本點,因爲參數值很小,因此預測值波動不大,所以函數更平滑。圖片
1.1 過擬合
在談正則化以前咱們須要先看看爲何須要正則化,先看下面三張圖。get
第一張圖能夠看出欠擬合,由於擬合的分界線過於簡單,有不少叉形和圓形沒法分類正確。io
第二張圖擬合正常,基本分類正確function
第三張圖爲過擬合,雖然每一個點都分類正確,可是分界線過於複雜。過擬合會帶來什麼問題呢?假以下方表明咱們的訓練集,由於咱們擬合的邊界完美的區分了圓跟叉,因此在訓練集上的偏差是極小的。可是用在測試集上效果就會不好。對比第二張圖處於圓形中的叉應該爲異常點,因此應該歸爲圓。那又是什麼帶來了過擬合呢,咱們知道根據泰勒公式,全部的函數多能夠用多項式函數進行近似,因此若是咱們假設的邊界函數的項數過多,就會擬合出很是複雜的線,形成過擬合。好比第一張圖片的假設函數(決策邊界)爲$ f(x_1,x_2) = \theta_0+\theta_1 x_1+\theta_2 x_2 $ ,而第三張圖片的假設函數爲$f(x_1,x_2)=\theta_0 + \theta_1 x_1 +\theta_2 x^2_1+\theta_3 x^2_1 x_2+\theta_4 x^2_1 x^2_2+\theta_5 x^2_1 x^3_2+...$class
因爲過擬合問題的存在咱們提出了正則化的概念,正則化的目的就是爲了防止過擬合。正則化有L1正則化與L2正則化兩種。這裏主要說L2正則化基礎
1.2 範數
L1正則化即在損失函數上加上L1正則化項(L1範數),L2正則化即在損失函數上加上L2正則化項(L2範數)。那麼什麼是範數?
範數是具備「長度」概念的函數,每一個向量都對應一個長度,不過不一樣的範數求出的向量的長度是不一樣的。好比咱們平時求得向量的長度即歐式距離就是L2範數。
知道什麼是範數後,咱們能夠探討爲何L2範數能夠防止過擬合。L2範數是指向量個元素的平方和而後求平方根, 咱們讓L2範數的規則項$||w||^2$最小,可使$w$的每一個元素都很小,都接近於0。但與L1範數不一樣,L2範數的每一項不會等於0。$w$越小,模型越簡單,所以擬合的函數就不會太複雜,防止了過擬合。
下圖直觀解釋了爲何L1範數會使參數等於0而L2範數不會使參數等於0,圖1爲L1範數,圖2爲L2範數
$ L( \theta )=\frac{1}{m}\sum_{i=1}^n(y_i-\hat y)^2+\frac{\lambda}{2m} \sum_{i=1}^n||w||^2$
菱形或表示L1約束條件即損失函數後面那一項,等高線表示沒有正則化的損失函數即損失函數前面那一項,等高線越接近中心,損失函數前面那一項值越小。
咱們的目標是等高線很接近中心(損失函數前面那一項很小),同時菱形也很小。這樣咱們能夠看出當菱形與等高線只有一個焦點的時候兩個會同時比較小,而由於菱形的緣由,交點通常在座標上,所以$||w^2||$的值通常會等於0。
同理圖二爲L2範數,由於交點不會交在座標軸上,而會交在附近,所以L2範數可讓解比較小,而不會等於0.
1.3 權重衰減
$ L( \theta )=\frac{1}{m}\sum_{i=1}^n(y_i-\hat y)^2+\frac{\lambda}{2m} \sum_{i=1}^n||w||^2$
咱們對上述公式$w$的偏導即梯度
$\frac {\partial L}{\partial w_i} = (未加正則化的損失函數對w的偏導)+\frac{\lambda}{2m}w_i$
因此進行梯度降低更新參數時
$w_i = w_i-\alpha[(未加正則化的損失函數對w的偏導)+\frac{\lambda}{2m}w_i]$
$w_i = w_i(1-\alpha\frac{\lambda}{2m})-\alpha(未加正則化的損失函數對w的偏導)$
發現跟沒有加正則化項的梯度降低$w_i = w_i-\alpha(未加正則化的損失函數對w的偏導)$相比,由於$(1-\alpha\frac{\lambda}{2m})<1$,$w_i$會強制變小,由於乘了一個比1小的數,因此權重在不停的衰減。
1.4 總結
咱們平時的正則化是指加了L2範數,因爲L2範數的性質,會使參數$w$($\theta$)的值接近0,所以使假設函數(決策邊界)或者說模型變得簡單,防止過擬合,在預測的時候就不會波動特別大。所以在測試集上就會表現的比表好。這就是正則。
2. 方差誤差
方差跟誤差也是在談論模型擬合程度的時候常常說到的問題。
誤差:模型總體的預測值與真實值的偏離程度
方差:模型的預測值之間的離散程度
能夠看到誤差是模型與真實值之間的比較,方差是模型自身的比較。下圖形象展現了誤差跟方差。
能夠看到誤差是指裏數據的平均值離靶心的程度,而方差是指數據間的離散程度。
咱們平時說模型過於簡單欠擬合,是高誤差,低方差。由於預測老是偏離真實值,形成高誤差,但又由於函數簡單,預測的值波動不大,聚到一塊兒。所以是低方差。
過擬合相反是高方差,低誤差。由於函數複雜雖然預測也偏離真實值可是是在真實值上下波動,所以低誤差,函數複雜度高,預測值離散程度高,因此高方差
3. 交叉驗證
咱們在對數據集進行測試的時候要保證,徹底不能經過測試集來調整參數跟超參數。所以咱們對數據集進行劃分的時候能夠將數據集劃分爲訓練集,驗證集跟測試集。訓練集來訓練模型參數,驗證集來尋找模型超參數,好比正則化參數$\lambda$。最後在測試集上進行測試。切記不能經過測試集來調整任何參數。
4.參考
- L1正則化與L2正則化 - bingo醬的文章 - 知乎 https://zhuanlan.zhihu.com/p/35356992
- 誤差和方差有什麼區別? - Jason Gu的回答 - 知乎 https://www.zhihu.com/question/20448464/answer/20039077
- L1範數與L2範數的區別 - 魚濤之歡的文章 - 知乎 https://zhuanlan.zhihu.com/p/28023308