在深度學習中,監督類學習問題其實就是在規則化引數同時最小化誤差。最小化誤差目的是讓模型擬合訓練資料,而規則化引數的目的是防止模型過分擬合訓練資料。
引數太多,會導致模型複雜度上公升,容易過擬合,也就是訓練誤差小,測試誤差大。因此,我們需要保證模型足夠簡單,並在此基礎上訓練誤差小,這樣訓練得到的引數才能保證測試誤差也小,而模型簡單就是通過規則函式來實現的。
l1範數和l2範數的差別
l1範數
同樣計算導數得:
上式中sgn(w)表示w的符號。那麼權重w的更新規則為:
比原始的更新規則多出了η * λ * sgn(w)/n這一項。當w為正時,更新後的w變小。當w為負時,更新後的w變大——因此它的效果就是讓w往0靠,使網路中的權重盡可能為0,也就相當於減小了網路複雜度,防止過擬合。
另外,上面沒有提到乙個問題,當w為0時怎麼辦?當w等於0時,|w|是不可導的,所以我們只能按照原始的未經正則化的方法去更新w,這就相當於去掉η*λ*sgn(w)/n這一項,所以我們可以規定sgn(0)=0,這樣就把w=0的情況也統一進來了。(在程式設計的時候,令sgn(0)=0,sgn(w>0)=1,sgn(w<0)=-1)
l2正則化
對於l2正則化:c=c0+λ2n∑iω2ic=c0+λ2n∑iωi2,相比於未加正則化之前,權重的偏導多了一項λnωλnω,偏置的偏導沒變化,那麼在梯度下降時ωω的更新變為:
可以看出ωω的係數使得權重下降加速,因此l2正則也稱weight decay(caffe中損失層的weight_decay引數與此有關)。對於隨機梯度下降(對乙個mini-batch中的所有x的偏導求平均):
對於l1正則化:c=c0+λn∑i|ωi|c=c0+λn∑i|ωi|,梯度下降的更新為:
符號函式在ωω大於0時為1,小於0時為-1,在ω=0ω=0時|ω||ω|沒有導數,因此可令sgn(0)=0,在0處不使用l1正則化。
l1相比於l2,有所不同:
實踐中l2正則化通常優於l1正則化。
L1範數與L2範數對比
l0範數是指向量中非0的元素的個數。l0範數很難優化求解 l1範數是指向量中各個元素絕對值之和 l2範數是指向量各元素的平方和然後求平方根 l1範數可以進行特徵選擇,即讓特徵的係數變為0.l2範數可以防止過擬合,提公升模型的泛化能力,有助於處理 condition number不好下的矩陣 資料變化...
L1和L2正規化 範數
範數是形容乙個公式具有廣泛性,類似於有人指桑罵槐但不說名字,但一旦說了名字這句話就有意義了.l1l2都從l p範數中得來,1和2就是p 1和p 2的結果.雖然p可以隨便取,但有被人提到的也只有0,1,2這三個值.l0範數僅靠p 0代入l p範數是很迷惑的,既有0次方也有0次開方,數學上的表示就很怪,...
深度學習 L0 L1及L2範數
在深度學習中,監督類學習問題其實就是在規則化引數同時最小化誤差 最小化誤差目的是讓模型擬合訓練資料,而規則化引數的目的是防止模型過分擬合訓練資料。引數太多,會導致模型複雜度上公升,容易過擬合,也就是訓練誤差小,測試誤差大。因此 我們需要保證模型足夠簡單,並在此基礎上訓練誤差小,這樣訓練得到的引數才能...