`欠擬合和過擬合
欠擬合是指模型不能很好的捕獲到數據特征,不能很好的擬合數據,學習能力底下。解決方法:增加模型的復雜度
過擬合是指模型不僅僅學習了數據集中的有效信息,也學習到了其中的噪音數據,使得模型在訓練集上的表現非常好,但是對於測試集的預測效果很差。解決方案:
(1) 導致過擬合的一個原因可能是由於數據不純、包含大量的噪聲數據,這時候我們需要重新清洗數據。
(2) 增加訓練數據的樣本量
(3) 采用正則化方法,降低模型參數復雜度(參數大小和參數量),從而降低模型復雜度
(4) 神經網絡中常采用dropout方法:在訓練的時候讓神經元以一定的概率不工作。
如何判斷你的模型是欠擬合還是過擬合?通常的做法就是將你的訓練數據集拆分成訓練集和驗證集,通過觀察訓練誤差和驗證誤差的情況來判斷模型對訓練數據的擬合情況。
正則化
監督學習問題無非就是在規則化參數的同時最小化誤差。最小化誤差是為了讓我們模型更好的擬合數據,而規則化參數是為了防止模型對數據的過分擬合。前面我們也提到,當我們的模型處於過擬合時,我們可以通過在模型損失函數上添加正則化項,用於控制模型參數的復雜度,從而得到更為簡單的參數,獲得更為理想的模型。可見,正則化的一個根本目的就是使我們可以選擇出那種既能夠很好的擬合數據,相對來說又最簡單的模型。
線性回歸正則化后的表達式為:
這里的代表正則化系數,
是我們常說的正則化項,正則化項常用的形式有哪些呢?
該范數表示的是參數向量中非0元素的個數。這時候我們可以試想我們用范數正則化一個參數矩陣
的話,就相當於讓
中值為0元素非常多,也就是讓參數矩陣
稀疏。
該范數表示的是參數向量中各元素絕對值之和。范數也稱為稀疏規則算子。我們試想用
范數正則化一個參數向量
的話,就相當於讓
中每一個元素都很小甚至是等於0。
那問題來了Question1:范數為什么可以實現稀疏?
加入范數后的代價函數可以表示為無約束形式
最小化又等價於約束問題
下最小化
這里我們假設參數向量只有兩個元素,我們可以在一個平面上畫出
的等高線圖以及約束條件的表示,如圖
我們知道等高線越向外損失越大(凸函數),約束在圖上可以表示為如圖的正方形,兩圖形的第一個交點就是代價函數取最小時的情形。兩圖形第一個交點相交於正方形頂角上的概率遠遠大於相交於其他位置的概率(很明顯)。頂點坐標只有一個參數不為0,另一個參數為0,也就是更加容易產生稀疏。在更高維的情況下也是如此,因此
會使得參數更多的為0,只是又較少的一部分不為0。
的這種特性使它可以應用於特征選擇。
前面我們也提了范數也可以實現稀疏,那問題又來了Question2:為什么實現稀疏上基本上是使用
范數而很少使用
范數呢?這主要有兩個原因:
(1) 范數很難優化求解
(2) 范數是
范數的最優凸近似,並且
范數更容易優化求解
范數是參數向量中各元素的平方和再開平方。在防止過擬合問題上
范數被廣泛的應用。
那么問題來了Question1:是什么使得它可以非常好的解決過擬合問題呢?我們再來試想:若我們最小化正則項,會使得參數向量發生什么樣的變化? 會使得參數向量的每一個元素都很小,都接近於0,而非等於0(與
最大的不同),這樣就成功的降低了模型參數復雜度,從而避免了過擬合現象的出現。那么問題又來了Question2:為什么
會使得參數元素都趨向於0,而非等於0呢?我們像
那樣給出代價函數的約束等價問題:
該約束問題在圖形上的表示,如下:
與不同,
的約束條件表示為一個圓形,兩個圖形的第一個交點大多不會出現在非坐標軸上,因為要想交於坐標軸那么
的圓心也必須在坐標軸上,這種情況是很少發生的,故
不會擁有
的那種使得參數大部分都是0的特性。而最小化
正則就會使得參數元素都很小,也就是都趨於0。
總結:會趨向於產生少量的特征,而其他特征的參數(權值)都為0,可以用來做特征選擇; 而
會選擇更多的特征,這些特征的參數都趨於0,廣泛應用與過擬合問題。
補充:Question1:其實除了有防止過擬合的特性,它還可以使得梯度下降的求解過程變得穩定而迅速,這又是如何實現的呢?
我們前面給出了加入正則項和
后的線性回歸代價函數的表示形式:
我們對其求導后得到了梯度下降的權值更新公式:
這時我們發現中的
是第j個參數的符號,是個定值; 而
中的
是變得。故,
正則化后的參數更新速度會隨着參數的更新而變動,參數大更新快,參數小更新慢,所以它會進一步優化梯度下降的求解。
Question2:正則化系數要如何確定呢?
可以嘗試一系列數據 0, 0.01, 0.02,0.04, 0.08, ……, 10.24(10),…… 【2倍關系】
每一個的取值都會得到一組參數
,這樣會得到多組參數向量
然后用每一組參數計算檢驗集的誤差
我們選擇檢驗集的誤差最小的那個,作為最優取值。