權值衰減和L2正則化傻傻分不清楚?

語言: CN / TW / HK

我報名參加金石計劃1期挑戰——瓜分10萬獎池,這是我的第31篇文章,點選檢視活動詳情

導讀

權值衰減和L2正則化,到底是不是同一個東西,這篇文章給你答案。

神經網路是偉大的函式逼近器和特徵提取器,但有時它們的權值變得過於特定化,導致過擬合。這就是正則化概念出現的地方,我們將討論兩種主要權重正則化技術之間的細微差別,它們經常被錯誤地認為是相同的。

圖片

介紹

1943年,Warren McCulloch和Walter Pitts首先提出了神經網路,但當時還不夠流行,因為神經網路需要大量資料和計算能力,這在當時是不可行的。但隨著上述約束條件和其他訓練技術的進步(如引數初始化和更好的啟用函式)變得可行,它們再次開始主導各種比賽,並在各種人類輔助技術中找到了它的應用。

如今,神經網路構成了許多著名應用的最主要的部分,如自動駕駛汽車、谷歌翻譯、人臉識別系統等,並應用於幾乎所有人類發展所使用的技術。

神經網路非常擅長於將函式近似為線性或非線性,在從輸入資料中提取特徵時也非常出色。這種能力使他們在大量的任務中表現出色,無論是計算機視覺領域還是語言建模。但我們都聽過這句名言:

“能力越大,責任越大。”

這句話也適用於全能的神經網路。它們作為強大的函式近似器的能力有時會導致它們通過逼近一個函式來過擬合數據集,這個函式在它被訓練過的資料上表現得非常好,但在測試它之前從未見過的資料時卻敗得很慘。更有技術意義的是,神經網路學習的權值對給定的資料更加專門化,而不能學習可以一般化的特徵。為了解決過擬合的問題,應用了一類稱為正則化的技術來降低模型的複雜性和約束權值,迫使神經網路學習可泛化的特徵。

正則化

正則化可以定義為我們為了減少泛化誤差而不是減少訓練誤差而對訓練演算法所做的任何改變。有許多正規化策略。有的對模型新增額外的約束,如對引數值新增約束,有的對目標函式新增額外的項,可以認為是對引數值新增間接或軟約束。如果我們仔細使用這些技術,這可以改善測試集的效能。在深度學習的環境中,大多數正則化技術都基於正則化估計器。當正則化一個估計量時,有一個折衷,我們必須選擇一個增加偏差和減少方差的模型。一個有效的正規化是使一個有利可圖的交易,顯著減少方差,而不過度增加偏差。

在實踐中使用的主要正規化技術有:

  1. L2正則化
  2. L1正則化
  3. 資料增強
  4. Dropout
  5. Early Stopping

在這篇文章中,我們主要關注L2正則化,並討論我們是否可以將L2正則化和權重衰減作為同一枚硬幣的兩面。

L2 正則化

L2正則化屬於正則化技術的一類,稱為引數範數懲罰。之所以提到這類技術,是因為在這類技術中,特定引數的範數(主要是權重)被新增到被優化的目標函式中。在L2範數中,在網路的損失函式中加入一個額外的項,通常稱為正則化項。例如:

交叉熵損失函式的定義如下所示。

圖片

圖片

為了將L2正則化應用於任何有交叉熵損失的網路,我們將正則化項新增到損失函式中,其中正則化項如下所示:

圖片

在上式中,λ是正則化引數,與應用的正則化量成正比。如果λ=0,則不應用正則化,當λ= 1時,對網路應用最大正則化。λ是一個超引數,這意味著它不是在訓練期間學習的,而是由使用者手動調整或使用一些超引數調整技術,如隨機搜尋。

現在讓我們把這些放在一起,形成L2正則化的最終方程,應用於下式所給出的交叉熵損失函式。

上面的例子展示了L2正則化應用於交叉熵損失函式,但這一概念可以推廣到所有可用的損失函式。下式給出了L2正則化更一般的公式,其中C0為非正則化損失函式,C為加入正則化項的正則化損失函式。

:我們在對網路進行正則化時不考慮網路的bias,原因如下:

1、與權重相比,bias通常需要更少的資料來精確擬合。每個權重指定了兩個變數如何相互作用(w和x),因此要想很好地擬合權重,就需要在各種條件下觀察兩個變數,而每個bias只控制一個單一變數(b)。因此,我們對bias不使用正則化,以免引入太多的方差。2、對bias進行正則化可能引入大量的欠擬合。

為什麼L2 正則化有用?

實踐推理

讓我們試著理解L2正則化基於損失函式的梯度的工作原理。如果我們對網路中所有權重和偏差取上面式子中所示方程的偏導數或梯度,即∂C/∂w和∂C/∂b。求偏導數,我們得到:

圖片

我們可以使用backpropagation演算法計算上述方程中提到的∂C0/∂w和∂C0/∂b項。由於沒有應用正則化項,偏置引數的偏導將不變,而權重引數將包含額外的(λ/n)*w)正則化項。

偏置和權重的學習規則由此變為:

圖片

圖片

上面的權值方程類似於通常的梯度下降學習規則,除了現在我們首先通過 (1−(η*λ)/n)重新調整權值w。這就是L2正則化經常被稱為權重衰減的原因,因為它使權重變小。因此,你可以看到為什麼正則化工作的時候,它使網路的權值更小。權值變小意味著,如果我們在這裡或那裡改變一些隨機輸入,網路的行為不會有太大的變化,這反過來使正則化的網路很難學習資料中的區域性噪聲。這迫使網路只學習那些在訓練集中經常看到的特徵。\

個人的直覺

簡單地從優化損失函式的角度來考慮L2正則化,當我們把正則化項新增到損失函式中我們實際上增加了損失函式的值。因此,如果權值越大,損失也就越高,訓練演算法會試圖通過懲罰權值來降低損失函式,迫使它們取更小的值,從而使網路正則化。

L2 正則化和權值衰減是一樣的嗎?

L2正則化和權值衰減並不是一回事,但是可以根據學習率對權值衰減因子進行重新引數化,從而使SGD等價。不明白?讓我給你詳細解釋一下。

以λ為衰減因子,給出了權值衰減方程。

圖片

在以下證明中可以證明L2正則化等價於SGD情況下的權值衰減:

  1. 讓我們首先考慮下面圖中給出的L2正則化方程。我們的目標是對它進行重新引數化,使其等價於上式中給出的權值衰減方程。
  1. 首先,我們找到L2正則化損失函式相對於引數w的偏導數(梯度),如下式所示。

注意:上圖中這兩種符號的意思是一樣的。

  1. 得到損失函式的偏導數結果後,將結果代入梯度下降學習規則中,如下式所示。代入後,開啟括號,重新排列,使其等價於在一定假設下的權值衰減方程。
  1. 你可以注意到,最終重新排列的L2正則化方程和權值衰減方程之間的唯一區別是α(學習率)乘以λ(正則化項)。為了得到兩個方程,我們用λ來重新引數化L2正則化方程。

圖片

  1. 將λ'替換為λ,對L2正則化方程進行重新引數化,將其等價於權值衰減方程,如下式所示。

圖片

從上面的證明中,你必須理解為什麼L2正則化在SGD情況下被認為等同於權值衰減,但對於其他基於自適應梯度的優化演算法,如Adam, AdaGrad等,卻不是這樣。特別是,當與自適應梯度相結合時,L2正則化導致具有較大歷史引數和/或梯度振幅的權值比使用權值衰減時正則化得更少。這導致與SGD相比,當使用L2正則化時adam表現不佳。另一方面,權值衰減在SGD和Adam身上表現得一樣好。

一個令人震驚的結果是,帶有動量的SGD優於像Adam這樣的自適應梯度方法,因為常見的深度學習庫實現了L2正則化,而不是原始的權重衰減。因此,在使用L2正則化有利於SGD的任務上,Adam的結果要比使用動量的SGD差。

總結

因此,我們得出結論,儘管權值衰減和L2正則化在某些條件下可以達到等價,但概念上還是有細微的不同,應該區別對待,否則可能導致無法解釋的效能下降或其他實際問題。

英文原文:https://towardsdatascience.com/weight-decay-l2-regularization-90a9e17713cd