以下內容有任何不理解可以翻看我之前的博客哦:吳恩達deeplearning.ai專欄
這節我們看看正則化系數
文章目錄
- 以線性回歸為例
- 指定用于性能評估的基準
- 語音識別的例子
以線性回歸為例
讓我們舉一個例子:
模型:
f w , b ( x ) = w 1 x + w 2 x 2 + w 3 x 3 + w 4 x 4 + b f_{w,b}(x)=w_1x+w_2x^2+w_3x^3+w_4x^4+b fw,b?(x)=w1?x+w2?x2+w3?x3+w4?x4+b
其中代價函數我們使用帶正則化的:
J ( w , b ) = 1 2 m ∑ ( f w , b ( x ) ? y ) 2 + λ 2 m ∑ w j 2 J(w,b)=\frac{1}{2m}\sum(f_{w,b}(x)-y)^2+\frac{\lambda}{2m}\sum w_j^2 J(w,b)=2m1?∑(fw,b?(x)?y)2+2mλ?∑wj2?
讓我們從設置一個比較大的 λ \lambda λ開始:
通過之前章節的學習很容易意識到,當 λ \lambda λ特別大時,那么w1和w2將會接近于0。在這種情況下,得出的擬合曲線就接近一條平行于x軸的直線。很顯然,這個模型具有很高的偏差和方差。
而當 λ \lambda λ的值特別小的時候,那么正則化的作用將會無限趨近0,此時曲線就容易過擬合,從而出現低偏差,高方差的情況。
當然,如果你的 λ \lambda λ取值合適,那么此時將會得到一條擬合程度剛好的曲線,就可以做到低方差和低偏差了。
交叉驗證誤差對于確定 λ \lambda λ的作用
作者給出的方法就是,一系列的 λ \lambda λ你就試吧,然后通過看交叉驗證誤差的大小來確定 λ \lambda λ應該取多大效果最好。最后為了嚴謹,你可以再測一下選出數據的測試集誤差。
我們也可以通過畫圖,來看看 λ \lambda λ對于訓練集誤差和驗證集誤差的影響趨勢:
因此和上一節類似,我們的 λ \lambda λ取值也需要適中,從而使得模型達到合適的效果。
既然我們已經知道了偏差和方差的意義以及規律,那么我們可以指定一個基準,讓學習算法能夠自動進行評估。
指定用于性能評估的基準
語音識別的例子
本次語音識別指的是將語音的內容轉化為文字的形式。它當中的錯誤當然就是你訓練算法中翻譯錯誤的內容占所有內容的百分比,我們可以就用這個百分比來代表 J t r a i n J_{train} Jtrain?
假設一個訓練集它的訓練誤差為10.8%,這意味著它成功轉化了89.2%的訓練集,但在10.8%的數據集出現了錯誤。之后你肯定就該在交叉驗證集上來測試準確度了,假設 J c v J_{cv} Jcv?為14.8%。
在語音識別中這樣的錯誤率感覺已經很高了,但是這樣就妄下定論其實是不太公平的,因為還沒考慮到人說話的質量。如果讓人來聽訓練集中說的話然后再翻譯,準確度能達到多少,然后再和 J t r i a n J_{trian} Jtrian?進行比較,這樣看上去比較公平。
假設你最后發現,人類的識別錯誤率也高達10.6%,那么就可以為你的模型血洗冤屈了,因為這說明聽不清是訓練集數據的鍋。
因此可以知道,判斷算法是否合適,其中一個重要的方法是看看它與人類水平相比是否更好,在本文的例子之中,機器的水平只比人類差了0.2個百分點,其實就可以說明在訓練集的表現已經很不錯了。但與之相比, J c v J_{cv} Jcv? 4.2%的錯誤其實還有進步的空間。
在之前,我們提出的觀點是觀察偏差和方差來判斷模型的好壞,但其實有時候也需要考慮進去例如訓練集質量的問題。所以盡管訓練集誤差和驗證集誤差看上去差距不大,但其實在這個例子之中更主要的問題集中在交叉驗證集上。
所以,建立性能評估基準主要取決于你對于模型的正確率的期望值為多少,是你合理的希望學習算法達到的最終水平,這取決于很多的擾動因素例如:
之后相比于將錯誤率和0相比,更應該和基準水平進行比較。
為了給讀者你造成不必要的麻煩,博主的所有視頻都沒開僅粉絲可見,如果想要閱讀我的其他博客,可以點個小小的關注哦。