深度學習中的正則化技術詳解

深度學習中的正則化

  機器學習中的一個核心問題是設計不只在訓練集上偏差小,並且在新樣本上泛化能力好的算法。許多機器學習算法都須要採起相應的策略來減小測試偏差,這些策略被統稱爲正則化。而神經網絡因爲其強大的表示能力常常遭遇過擬合,因此須要使用許多不一樣形式的正則化策略。python

  正則化經過對學習算法的修改,旨在減小泛化偏差而不是訓練偏差。目前有不少正則化策略,有些是向機器學習模型中添加限制參數值的額外約束,有些是向目標函數添加額外項來對參數值進行軟約束。在本章中咱們將更詳細地介紹正則化,重點介紹深度模型的正則化策略,包括參數範數懲罰、提早終止、Dropout等等。git

基本概念

在開始本章以前,咱們回顧如下幾個概念:github

  • Hessian矩陣:在數學中,海森矩陣(Hessian matrix 或 Hessian)是一個多變量實值函數的二階偏導數組成的方陣,假設有一實數函數$f(x_1,x_2,...,x_n)$,若是$f$全部的二階偏導數都存在,那麼$f$的Hessian矩陣的第$ij$-項是$\frac{\partial^2f}{\partial x_i\partial x_j}$,即Hessian矩陣爲

$$ H(f)= \left[ \begin{matrix} \frac{\partial^2f}{\partial x_1^2} & \frac{\partial^2f}{\partial x_1\partial x_2} & \ldots & \frac{\partial^2f}{\partial x_1\partial x_n} \\ \frac{\partial^2f}{\partial x_2\partial x_1} & \frac{\partial^2f}{\partial x_2^2} & \ldots & \frac{\partial^2f}{\partial x_2\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^2f}{\partial x_n\partial x_1} & \frac{\partial^2f}{\partial x_n\partial x_2} & \ldots & \frac{\partial^2f}{\partial x_n^2} \end{matrix} \right] $$算法

  若是函數$f$在定義域$D$內的每一個二階導數都是連續函數,那麼$f$的海森矩陣在$D$區域內爲對稱矩陣。bootstrap

  • 極值點:基於Hessian矩陣$H$咱們能夠判斷多元函數的極值狀況:數組

    • 若是$H$是正定矩陣,則臨界點必定是局部極小值點。
    • 若是$H$是負定矩陣,則臨界點必定是局部極大值點。
    • 若是行列式$\|H\|=0$,須要更高階的導數來幫助判斷。
    • 在其他狀況下,臨界點不是局部極值點。
  • 實對稱矩陣可對角化:若$A$是實對稱矩陣,則存在正交矩陣$Q$使得

$QAQ^T=\Lambda=diag(\lambda_1,...,\lambda_n)$,其中$\lambda_i$是矩陣A的特徵值。若A可逆(即非奇異),則每一個$\lambda_i$都非零且$\lambda_i^{-1}$是$A^{-1}$的特徵值,$i=1,2,...,n$。安全

1. 參數範數懲罰

在本節中,咱們討論各類範數懲罰對模型的影響。許多正則化方法(如神經網絡、線性迴歸、邏輯迴歸)經過對目標函數$J$添加一個參數範數懲罰$\Omega(\theta)$,限制模型的學習能力。將正則化後的目標函數記爲$\tilde{J}$:網絡

$$\tilde{J}(\theta;X,y)=J(\theta;X,y)+\alpha\Omega(\theta)$$app

其中$\alpha\in [0,+\infty)$是衡量參數範數懲罰程度的超參數。$\alpha=0$表示沒有正則化,$\alpha$越大對應正則化懲罰越大。框架

在神經網絡中,參數包括每層線性變換的權重和偏置,咱們一般只對權重作懲罰而不對偏置作正則懲罰;使用向量$\omega$表示應受懲罰影響的權重,用向量$\theta$表示全部參數。

1.1 $L^2$正則化

$L^2$參數正則化(也稱爲嶺迴歸、Tikhonov正則)一般被稱爲權重衰減(weight decay),是經過向目標函數添加一個正則項$\Omega(\theta)=\frac{1}{2}\|\omega\|_2^2$使權重更加接近原點。

目標函數

$$ \tilde{J}(\omega;X,y)=J(\omega;X,y)+\frac{\alpha}{2}\omega^T \omega $$

計算梯度

$$ \nabla_{\omega}\tilde{J}(\omega;X,y)=\nabla_{\omega}J(\omega;X,y)+\alpha\omega $$

更新權重

$$ \omega\leftarrow \omega-\epsilon(\alpha\omega+\nabla_{\omega}J(\omega;X,y))=(1-\epsilon\alpha)\omega-\epsilon\nabla_{\omega}J(\omega;X,y) $$

從上式能夠看出,加入權重衰減後會致使學習規則的修改,即在每步執行梯度更新前先收縮權重(乘以$(1-\epsilon\alpha)$)。

下面咱們進一步分析,令$\omega^{* }$爲未正則化的目標函數取得最小訓練偏差時的權重向量,即 $ \omega^* =\mathop{\arg\min}_\omega J(\omega) $,在$\omega^*$的鄰域對目標函數$J(\theta)$做二階泰勒展開近似:

$$ \hat{J}(\theta)=J(\omega^* )+\frac{1}{2}(\omega-\omega^* )^TH(\omega-\omega^*)$$ 其中$H$是$J$在$\omega^{* }$處的Hessian矩陣。注意這裏由於$\omega^{* }$是最優勢,因此一階項即梯度爲0,而且$H$是半正定矩陣。 當$\hat{J}$最小時,其梯度爲0,即 $$\nabla_{\omega}\hat{J}(\omega)=H(\omega-\omega^* )$$ 在上式中加入權重衰減的梯度,用$\tilde{\omega}$表示此時正則化後的最優勢: $$H(\tilde{\omega}-\omega^*)+\alpha\tilde{\omega}=0$$ $$(H+\alpha I)\tilde{\omega}=H\omega^*$$ $$\tilde{\omega}=(H+\alpha I)^{-1}H\omega^*$$ 當$\alpha\rightarrow 0$時,正則化的解$\tilde{\omega}\rightarrow\omega^*$。由於$H$是實對稱矩陣,因此能夠對角化,即存在正交矩陣$Q$(由$H$特徵向量組成)使得$H=Q\Lambda Q^T$。因而有: $$\tilde{\omega} =(Q\Lambda Q^T+\alpha I)^{-1}Q\Lambda Q^T\omega^* = [Q(\Lambda+\alpha I)Q^T]^{-1}Q\Lambda Q^T\omega^* =Q(\Lambda+\alpha I)^{-1}\Lambda Q^T\omega^* $$

也就是說,權重衰減的效果是沿着由$H$的特徵向量所定義的軸縮放$\omega^*$,縮放因子是$\frac{\lambda_i}{\lambda_i+\alpha}$。

1)沿特徵值較大的方向正則化影響較小。即$\lambda_i \gg\alpha$時,$\frac{\lambda_i}{\lambda_i+\alpha}\simeq 1$。

2)沿特徵值較小的方向,權重份量收縮到0。即$\lambda_i\ll\alpha$時,$\frac{\lambda_i}{\lambda_i+\alpha}\simeq 0$。

L2_regularization

補充知識: 馬氏距離
馬氏距離表示數據的協方差距離,是一種有效的計算類似度的方法,定義: $ d(x, y) = \sqrt{(x - y)^T\sum^{-1}(x -y)}$ ) , 其中($\sum$)是x、y的協方差矩陣。
若是協方差矩陣爲單位矩陣,那麼馬氏距離就簡化爲歐式距離,若是協方差矩陣爲對角陣,則其也可稱爲正規化的歐氏距離。通常狀況下,$\sum$ 老是可逆的,經過類似變換獲得一個對角矩陣。所以,能夠說馬氏距離就是正規化的歐氏距離歐氏距離是一種特殊的馬氏距離
更直觀的理解,假設咱們的數據是二維的,當咱們將 $\sum$ 對角化之後,$d(x,y) = \sqrt{\frac{(x_1 - y_1)^2}{a} + \frac{(x_2 - y_2)^2}{b}}$ , 單位陣的狀況下變爲 $d(x,y) = \sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2}$ 。
馬氏距離是對歐氏距離更通常狀況的推廣。對於二維高斯分佈的狀況,馬氏距離等高線對應一個橢圓,若是協方差矩陣的各個特徵值相等,變成一個圓,歐氏距離對位一個標準單位圓,以下所示:

clipboard.png

那麼對於高維的狀況,高維分佈二次項等機率曲線的幾何意義的就是一個廣義上的橢球體,以下所示: $\sum^D_{i = 1}\frac{y_i^2}{\lambda} = const$ .

1.2 $L^1$正則化

將$L^2$正則化的參數懲罰項$\Omega(\theta)$由權重衰減項修改成各個參數的絕對值之和,即獲得$L^1$正則化:

$$ \Omega(\theta)=\|\omega\|_1=\sum_i |\omega_i| $$

目標函數:

$$ \tilde{J}(\omega;X,y)=J(\omega;X,y)+\alpha \|\omega\|_1 $$

梯度:

$$\nabla_{\omega}\tilde{J}(\omega;X,y) = \nabla_{\omega}J(\omega;X,y)+\alpha sgn(\omega)$$

其中$sgn(x)$爲符號函數,取各個元素的正負號。與以前的分析同樣,將目標函數做二次泰勒展開近似:

$$\hat{J}(\omega;X,y)=J(\omega^* ;X,y)+\frac{1}{2}(\omega-\omega^*)^T H(\omega - \omega^*)$$

咱們進一步假設Hessian是對角矩陣,即$H=diag([H_{1,1},...,H_{n,n}])$,$H_{i,i}>0$,因而$L^1$正則化目標函數二次近似爲:
$$\hat{J}(\omega;X,y)=J(\omega^*;X,y)+\frac{1}{2}(\omega-\omega^*)^Tdiag(H_{1,1}, H_{2,2},...,H_{n,n})(\omega-\omega^*)+\alpha\|\omega\|_1$$

$$=J(\omega^*;X,y)+\sum_i\left[\frac{1}{2}H_{i,i}(\omega-\omega^*)^2+\alpha|\omega_i|\right]$$

最小化這個近似函數,有以下形式的解析解:

$$\omega_i=sgn(\omega_i^*)max\{|\omega_i^* |-\frac{\alpha}{H_{i,i}},0\}$$

對每一個$i$,咱們考慮$\omega_i^*>0$的情形:

1)$\omega_i^* \leq\frac{\alpha}{H_{i,i}}$,正則化目標中的最優值是$\omega_i=0$。

2)$\omega_i^{* }> \frac{\alpha}{H_{i,i}}$,
$\omega_i=\omega_i^{*}-\frac{\alpha}{H_{i,i}}$,正則化不會將$\omega_i$的最優值推至0,而是在該方向上移動 $\frac{\alpha}{H_{i,i}}$ 的距離。

clipboard.png

1.3 總結$L^2$與$L^1$正則化

  • 相比$L^2$正則化,$L^1$正則化會產生更稀疏的解。若是考慮Hessian矩陣是對角正定矩陣,咱們獲得$L^2$正則化的最優解是$\tilde{\omega_i}=\frac{H_{i,i}}{H_{i,i}+\alpha}\omega_i^{* }$。若是$\omega_i^{* }\neq 0$,則 $\tilde{\omega_i}\neq 0$,這說明$L^2$正則化不會使參數變得稀疏,而$L^1$正則化有可能經過足夠大的$\alpha$實現稀疏。
  • 正則化策略能夠被解釋爲最大後驗(MAP)貝葉斯推斷。

    • $L^2$正則化至關於權重是高斯先驗的MAP貝葉斯推斷。
    • $L^1$正則化至關於權重是Laplace先驗的MAP貝葉斯推斷。

      最大後驗估計選擇後驗機率最大的點:

      $$\Theta_{MAP}=\mathop{\arg\max}_{\theta}p(\theta|x)=\mathop{\arg\max}_{\theta}\log p(x|\theta)+\log p(\theta)$$

      右邊的$\log p(x\|\theta)$對應標準的對數似然項,$\log p(\theta)$對應先驗分佈。在神經網絡中上述公式中的$\theta$即咱們考慮的權重$\omega$。

      • 若是先驗是高斯分佈$\mathcal{N}(\omega;0,\frac{1}{\alpha}I^2)$,即$p(\omega)\propto exp(-\frac{\alpha}{2}\omega^T\omega)$,從而有$\log p(\omega)\propto \alpha\omega^T\omega$。所以$L^2$正則化權重衰減對應着權重是高斯先驗的MAP貝葉斯推斷。
      • 若是先驗是Laplace分佈$Laplace(\omega;0,\frac{1}{\alpha})$,即$p(\omega)=\frac{\alpha}{2}\exp(-\alpha\|x\|)$,對數先驗項$\log p(\omega)=\sum_i\log Laplace(\omega_i;0,\frac{1}{\alpha})=-\alpha\|\omega\|_1+n\log \alpha-n\log 2$與$L^1$正則化代價函數懲罰項$\alpha\Omega(\omega)=\alpha \sum_i \|\omega_i\|$等價。

2. 做爲約束的範數懲罰

考慮參數範數正則化的代價函數:

$$\tilde{J}(\theta;X,y)=J(\theta;X,y)+\alpha\Omega(\theta)$$

在上一節中考慮的是無約束問題,若是想約束$\Omega(\theta)<k$,$k$是某個常數,能夠構造廣義Lagrange函數

$$\mathcal{L}(\theta,\alpha;X,y)=J(\theta;X,y)+\alpha(\Omega(\theta)-k)$$

該約束問題的解是

$$\theta^*=\arg\min_\theta\max_{\alpha,\alpha\geq 0}\mathcal{L}(\theta,\alpha)$$

能夠經過調節$\alpha$與$k$的值來擴大或縮小權重的約束區域。較大的$\alpha$將獲得一個較小的約束區域,而較小的$\alpha$將獲得一個較大的約束區域。

使用顯示約束(相比於懲罰約束)的優勢:

  • 能夠先用梯度降低法計算$J(\theta)$的降低步,再投影到區域$\Omega(\theta)<k$的最近點。當知道什麼$k$合適時,不須要尋找對應的$\alpha$值。
  • 懲罰可能致使目標函數非凸,而使得算法陷入局部極小。
  • 重投影的顯示約束對優化過程增長了必定的穩定性。例如當學習率較高時,極可能進入正反饋,即大的權重誘導大的梯度,使權重得到較大的更新。若是持續更新增長權重大小,則會使$\theta$迅速增大而遠離原點發生溢出。

3. 欠約束問題

機器學習中許多線性模型,如線性迴歸和PCA,都依賴與矩陣$X^TX$求逆,若是$X^TX$不可逆,這些方法就會失效。這種狀況下,正則化的許多形式對應求逆$X^TX+\alpha I$,這個正則化矩陣是可逆的。大多數正則化方法可以保證應用於欠定問題的迭代方法收斂。

4. 數據集加強

讓機器學習模型泛化得更好的最好辦法是使用更多的數據進行訓練,所以須要在有限的數據中建立假數據並添加到訓練集中。數據集加強在對象識別領域是特別有效的方法。

  • 數據集的各類變換,如對圖像的平移、旋轉和縮放。
  • 在輸入層注入噪聲,也能夠看做數據集加強的一種方法(如去噪自編碼器)。經過將隨機噪聲添加到輸入再進行訓練可以大大改善神經網絡的健壯性。

5. 噪聲魯棒性

  • 將噪聲加入到輸入。在通常狀況下,注入噪聲遠比簡單地收縮參數強大,特別是噪聲被添加到隱藏單元時會更增強大(如Dropout)。對於某些模型而言,向輸入添加方差極小的噪聲等價於對權重施加範數懲罰。
  • 將噪聲加入到權重。這項技術主要用於循環神經網絡。這能夠被解釋爲關於權重的貝葉斯推斷的隨機實現。貝葉斯學習過程將權重視爲不肯定的,而且能夠經過幾率分佈表示這種不肯定性,向權重添加噪聲是反映這種不肯定性的一種實用的隨機方法。

    • 例如對迴歸問題,假設對每一個輸入,網絡權重添加隨機擾動$\epsilon \sim \mathcal{N}(\epsilon;0,\eta I)$,將擾動後的模型記爲 $\hat{y}\_{\epsilon_{\omega}}(x)$。目標函數爲:

$$\tilde{J}_{\omega}=\mathbb{E}_{p(x,y,\epsilon_\omega)}[(\hat{y}_{\epsilon_\omega}(x)-y)^2]=\mathbb{E}_{p(x,y,\epsilon_\omega)}[\hat{y}_{\epsilon_\omega}^2(x)-2y\hat{y}_{\epsilon_\omega}(x)+y^2]$$

    • 最小化帶權重噪聲的$J$等價於最小化附加正則項:$\eta\mathbb{E}\_{p(x,y)}[\|\|\nabla_\omega \hat{y}(x)\|\|^2]$的$J$。
    • 這種正則化鼓勵參數進入權重小擾動對輸出相對影響較小的參數空間區域。換句話說,它推進模型進入對權重小的變化相對不敏感的區域,找到的點不僅是極小點,並且是由平坦區域所包圍的極小點
    • 將噪聲加入到輸出。即顯式地對標籤上的噪聲進行建模,假設訓練集上的標記$y$正確的機率是$1-\epsilon$,其餘標籤是正確的可能性是$\epsilon$。例如,標籤平滑經過把確切分類目標從$0$和$1$換成$\frac{\epsilon}{k-1}$和$1-\epsilon$,正則化具備$k$個輸出的softmax函數的模型。softmax函數值永遠在$(0,1)$區間內而達不到$0$或$1$,標籤平滑的優點是可以防止模型追求確切機率而不影響模型學習正確分類。

    6. 半監督學習

    • 在半監督學習的框架下,$P(x)$產生的未標記樣本和$P(x, y)$中的標記樣本都用於估計$P(y \| x)$。在深度學習的背景下,半監督學習一般指的是學習一個表示$h = f (x)$,學習表示的目的是使相同類中的樣本有相似的表示。
    • 咱們能夠構建這樣一個模型,其中生成模型$P(x)$或$P(x, y)$與判別模型$P(y \| x)$共享參數,而不用分離無監督和監督部分。

    7. 多任務學習

    • 多任務學習是經過合併幾個任務中的樣例(能夠視爲對參數施加的軟約束)來提升泛化的一種方式。當模型的一部分被多個額外的任務共享時,這部分將被約束爲良好的值,一般會帶來更好的泛化能力。
    • 下圖展現了多任務學習的一種廣泛形式。不一樣的監督任務共享相同的輸入$x$和中間表示層$h^{(shared)}$,能學習共同的因素池。

    clipboard.png

    • 從深度學習的觀點看,底層的先驗知識爲:能解釋數據變化的因素中,某些因素是跨多個任務共享的。

    8. 提早終止

    因爲神經網絡強大的表示能力,當訓練次數過多時會常常遭遇過擬合,即訓練偏差會隨時間推移減小,而驗證集偏差會再次上升。

    • 若是咱們只要返回使驗證集偏差最低的參數,就能夠得到驗證集偏差更低的模型。這種策略被稱爲提早終止(early stopping)。因爲它的有效性和簡單性,這多是深度學習中最經常使用的正則化形式。
    • 提早終止是一種很是不顯眼的正則化形式,幾乎不須要改變基本訓練過程、目標函數。而使用權重衰減則必須當心不能使用太多的權重衰減,不然容易陷入局部極小點。

    8.1 提早終止算法

    _

    輸入:$n$爲評估間隔步數,$p$爲patience(即觀察到$p$次更差的驗證集表現後終止),$\theta_0$爲初始參數

    過程

    1: 初始化$\theta=\theta_0$,$i=0$,$j=0$,$v=\infty$,$\theta^* = \theta$,$i^* = i$

    2: $while(j<p)$ $do$

    3:  運行訓練算法$n$步,更新$\theta$。

    4:  $i=i+n$,$v'=ValidationSetError(\theta)$

    5:  $if (v'<v)$ $then$

    6:    $j=0$,$\theta^* =\theta$,$i^{* }=i$,$v=v' $

    7:  $else$

    8:    $j=j+1$

    9:  $end$ $if$

    10:$end$ $while$

    輸出:最佳參數$\theta^* $,最佳訓練步數$i^* $


    8.2 提早終止的優勢

    • 因爲限制了訓練迭代次數,減小了訓練時的計算成本
    • 具備正則化效果而不須要添加懲罰項或計算其梯度。

    8.3 提早終止至關於$L^2$正則化

    提早終止爲什麼具備正則化效果?其真正機制可理解爲將優化過程的參數空間限制在初始參數值$\theta_0$的小鄰域內。假如學習率爲$\epsilon$,進行$\tau$次訓練迭代,則$\frac{1}{\epsilon\tau}$等價於權重衰減係數$\alpha$。咱們下面進行證實:

    咱們考慮二次偏差的簡單線性模型,採用梯度降低法,參數$\theta=\omega$,代價函數$J$在最優值$\omega^*$附近做泰勒級數二階展開近似:

    $$\hat{J}(\theta)=J(\omega^* )+\frac{1}{2}(\omega-\omega^* )^TH(\omega-\omega^*)$$

    其中$H$是$J$關於$\omega$在$\omega^{* }$點的Hessian。因爲$\omega^{* }$是全局最小點,$H$是半正定對稱矩陣,所以能夠對角化,即存在正交矩陣$Q$使得$H=Q\Lambda Q^T$。進一步,$Q$是特徵向量的一組標準正交基,$\Lambda$是(對角元素是$H$特徵值的)對角矩陣。

    在局部泰勒級數逼近下,梯度由下式給出:

    $$\nabla\hat{J}(\omega)=H(\omega-\omega^*)$$

    將權重參數初始化爲原點,即$\omega^{(0)}=0$,梯度降低法由下面公式給出:

    $$\omega^{(\tau)}=\omega^{(\tau-1)}-\epsilon\nabla_{\omega}\hat{J}(\omega^{(\tau-1)})=\omega^{(\tau-1)}-\epsilon H(\omega^{(\tau-1)}-\omega^*)$$

    $$\omega^{(\tau)}-\omega^* =(I-\epsilon H)(\omega^{(\tau-1)}-\omega^*)$$

    利用$H$的正交分解$H=Q\Lambda Q^T$,獲得:

    $$\omega^{(\tau)}-\omega^* =(I-\epsilon Q\Lambda Q^T)(\omega^{(\tau-1)}-\omega^*)$$

    $$Q^T(\omega^{(\tau)}-\omega^* )=(I-\epsilon \Lambda) Q^T(\omega^{(\tau-1)}-\omega^* )=\ldots=(I-\epsilon\Lambda)^\tau Q^T(\omega^{(0)}-\omega^*)$$

    假定$\epsilon$足夠小以保證$\|1-\epsilon\lambda_i\|<1$,則通過$\tau$次迭代後:

    $$Q^T\omega^{(\tau)}=Q^T\omega^* -(I-\epsilon \Lambda)^\tau Q^T\omega^* =[I-(I-\epsilon \Lambda)^\tau] Q^T\omega^*$$

    咱們回顧1.1節中$L^2$正則化的形式:$Q^T\tilde{\omega}=(\Lambda+\alpha I)^{-1}\Lambda Q^T \omega^*$,注意到$(\Lambda+\alpha I)^{-1}(\Lambda+\alpha I)=I$,即$(\Lambda+\alpha I)^{-1}\Lambda=I-(\Lambda+\alpha I)^{-1}\alpha$,因而有:

    $$ Q^T\tilde{\omega}=[I-(\Lambda+\alpha I)^{-1}\alpha] Q^T \omega^* $$

    對比這兩個式子右端,若是知足

    $$(I-\epsilon\Lambda)^\tau=(\Lambda+\alpha I)^{-1}\alpha$$

    那麼$L^2$正則化和提早終止是等價的(在目標函數的二階近似下)。

    利用級數展開$\log (1+x)=x-\frac{x^2}{2}+\ldots+\frac{(-1)^{n-1}x^n}{n}+\ldots$該等式即:

    $$\tau\log (I-\epsilon\Lambda)=-\log (I+\frac{1}{\alpha}\Lambda)$$

    $$\tau(-\epsilon\Lambda-\ldots)=-(\frac{1}{\alpha}\Lambda-\ldots)$$

    若是全部$\lambda_i$是小的($\epsilon\lambda_i\ll 1$且$\frac{\lambda_i}{\alpha}\ll 1$),則:

    $$\alpha \approx \frac{1}{\tau\epsilon}$$

    8.4 小結——提早終止與$L^2$正則化對比

    • 提早終止和$L^2$正則化是等價的(在二階近似、$\lambda_i$小的狀況下),即$\frac{1}{\epsilon\tau}\approx \alpha$。也就是說訓練迭代次數$\tau$和學習率$\epsilon$起着與$L^2$正則化(權重衰減)係數$\alpha$成反比的做用。
    • 長度爲$\tau$的軌跡結束於$L^2$正則化目標的極小點,可是提早終止一般涉及監控驗證集偏差,以便在空間特別好的點處終止軌跡。
    • 提早終止比$L^2$正則化更具備優點,提早終止能自動肯定正則化的正確量,而權重衰減須要進行多個不一樣超參數的訓練實驗。

    9. 參數綁定與參數共享

    參數範數懲罰或約束是相對於固定區域或點,如$L^2$正則化是對參數偏離$0$固定值進行懲罰。但有時咱們須要對模型參數之間的相關型進行懲罰,使模型參數儘可能接近或者相等。

    • 參數共享:強迫模型某些參數相等
    • 主要應用:卷積神經網絡(CNN)
    • 優勢:顯著下降了CNN模型的參數數量(CNN模型參數數量常常是千萬量級以上),減小模型所佔用的內存,而且顯著提升了網絡大小而不須要相應的增長訓練數據。

    10. 稀疏表示

    稀疏表示也是卷積神經網絡常常用到的正則化方法。$L^1$正則化會誘導稀疏的參數,使得許多參數爲$0$;而稀疏表示是懲罰神經網絡的激活單元,稀疏化激活單元。換言之,稀疏表示是使得每一個神經元的輸入單元變得稀疏,不少輸入是0。

    例以下圖,$h_3$只依賴於上一層的3個神經元輸入$x_2$、$x_3$、$x_4$,而其餘神經元到$h_3$的輸入都是0。

    clipboard.png

    11. Bagging和其餘集成方法

    Bagging(bootstrap aggregating)是經過結合幾個模型下降泛化偏差的技術。主要想法是分別訓練幾個不一樣的模型,而後讓全部模型表決測試樣例的輸出。這是機器學習中常規策略的一個例子,被稱爲模型平均(model averaging)。採用這種策略的技術被稱爲集成方法。

    Bagging是一種容許重複屢次使用同一種模型、訓練算法和目標函數的方法。具體來講,Bagging涉及構造$k$個不一樣的數據集。每一個數據集從原始數據集中重複採樣構成,和原始數據集具備相同數量的樣例。

    模型平均是一個減小泛化偏差的很是強大可靠的方法。例如咱們假設有$k$個迴歸模型,每一個模型偏差是$\epsilon_i$,偏差服從零均值、方差爲$v$、協方差爲$c$的多維正態分佈。則模型平均預測的偏差爲$\frac{1}{k}\sum_i\epsilon_i$,均方偏差的指望爲

    $$\mathbb{E}\left[(\frac{1}{k}\sum_i\epsilon_i)^2\right]=\frac{1}{k^2}\mathbb{E}\left[\sum_i(\epsilon_i^2+\sum_{i\neq j}\epsilon_i\epsilon_j)\right]=\frac{1}{k}v+\frac{k-1}{k}c$$

    在偏差徹底相關即$c=v$的狀況下,均方偏差爲$v$,模型平均沒有幫助。在偏差徹底不相關即$c=0$時,模型平均的均方偏差的指望僅爲$\frac{1}{k}v$。這說明集成平方偏差的指望隨集成規模的增大而線性減小。

    其餘集成方法,如Boosting,經過向集成逐步添加神經網絡,能夠構建比單個模型容量更高的集成模型。

    12. Dropout

    Dropout能夠被認爲是集成大量深層神經網絡的實用Bagging方法。可是Bagging方法涉及訓練多個模型,而且在每一個測試樣本上評估多個模型。當每一個模型都是一個大型神經網絡時,Bagging方法會耗費不少的時間和內存。而Dropout則提供了一種廉價的Bagging集成近似,可以訓練和評估指數級數量的神經網絡。

    12.1 Dropout基本原理

    • Dropout訓練的集成包括全部從基礎網絡中除去神經元(非輸出單元)後造成的子網絡。只需將一些單元的輸出乘零就能有效的刪除一個單元(稱之爲乘零的簡單Dropout算法)。假如基本網絡有$n$個非輸出神經元,則一共有$2^n$個子網絡。
    • Dropout的目標是在指數級數量的神經網絡上近似Bagging過程。具體來講,在訓練中使用Dropout時,咱們會使用基於小批量產生較小步長的學習算法,如隨機梯度降低。

      • 每次在小批量中加載一個樣本,而後隨機抽樣(用於網絡中全部輸入和隱藏單元的)不一樣二值掩碼。
      • 對於每一個單元,掩碼是獨立採樣的。一般輸入單元被包括的機率爲$0.8$,隱藏單元被包括的機率爲$0.5$。
      • 而後與以前同樣,運行前向傳播、反向傳播和學習更新。

    clipboard.png

    12.2 Dropout與Bagging區別

    • Bagging:全部模型都是獨立的。

      Dropout:全部模型共享參數,其中每一個模型繼承父神經網絡參數的不一樣子集。參數共享使得在有限內存下表示指數級數量的模型變得可能。

    • Bagging:每一個模型在其相應的訓練集上訓練到收斂。

      Dropout:大部分模型沒有被顯式地被訓練,由於父神經網絡一般很大,幾乎不可能採樣完指數級數量的子網絡;取而代之的是,在單個步驟中訓練一小部分子網絡,經過參數共享使得剩餘的子網絡也有好的參數設定。

    • 除此以外,Dropout與Bagging算法同樣。例如每一個子網絡中遇到的訓練集是有放回採樣的原始訓練集的一個子集。
    • 模型輸出:

      • Bagging狀況下,每一個模型$i$產生一個機率分佈$p^{(i)}(y\|x)$,集成的預測由這些分佈的算術平均值給出:

    $$\frac{1}{k}\sum_{i=1}^{k}p^{(i)}(y|x)$$

    • Dropout狀況下,經過掩碼$\mu$定義每一個子模型的機率分佈$p(y\|x,\mu)$。全部掩碼的算術平均值由下式給出:

    $$\sum_{\mu}p(\mu)p(y|x,\mu)$$

    其中$p(\mu)$是訓練時採樣$\mu$的機率分佈。但該求和包含指數級的項,通常是不可計算的,咱們能夠經過採樣近似推斷,即平均許多掩碼的輸出。經過幾何平均直接定義的非標準化機率分佈由下式給出:

    $$\tilde{p}_{ensemble}(y|x)=\sqrt[2^d]{\prod_{\mu}p(y|x,\mu)}$$

    其中$d$是可被丟棄的單元數。爲了做出預測,須要進行標準化,例如對均勻分佈的$\mu$,可按下式進行標準化:

    $$p_{ensemble}(y|x)=\frac{\tilde{p}_{ensemble}(y|x)}{\sum_{y'}\tilde{p}_{ensemble}(y'|x)}$$

    典型的dropout代碼示例參考以下,感謝做者Jipeng Huang 提供。

    # coding: UTF-8
    '''''''''''''''''''''''''''''''''''''''''''''''''''''
       file name: dropout.py
       create time: Fri 29 Sep 2017 03:00:16 AM EDT
       author: Jipeng Huang 
       e-mail: huangjipengnju@gmail.com
       github: https://github.com/hjptriplebee
    '''''''''''''''''''''''''''''''''''''''''''''''''''''
    #mnist data
    import tensorflow.examples.tutorials.mnist as mnist
    mnist = mnist.input_data.read_data_sets("MNIST_data/", one_hot=True)
    
    import tensorflow as tf
    #ground truth
    x = tf.placeholder(tf.float32, [None, 784])
    y_ = tf.placeholder("float", [None,10])
    
    #dropout
    p = tf.placeholder(tf.float32)
    
    #weight and bias
    W = tf.Variable(tf.zeros([784,10]))
    b = tf.Variable(tf.zeros([10]))
    
    #nn
    h1 = tf.nn.dropout(x, keep_prob = p)
    y = tf.nn.softmax(tf.matmul(h1,W) + b)
    
    #loss and train
    cross_entropy = -tf.reduce_sum(y_*tf.log(y))
    train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
    
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        for i in range(5000):
            batch_xs, batch_ys = mnist.train.next_batch(100)
            sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys, p : 0.95})
        correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
        accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
        print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels, p : 1.0}))

    12.3 Dropout小結

    • Dropout優勢

      • 計算方便。訓練過程當中使用Dropout產生$n$個隨機二進制數與狀態相乘便可。每一個樣本每次更新的時間複雜度:$O(n)$,空間複雜度:$O(n)$。
      • 適用廣。Dropout不怎麼限制適用的模型或訓練過程,幾乎在全部使用分佈式表示且能夠用隨機梯度降低訓練的模型上都表現很好。包括:前饋神經網絡、機率模型、受限波爾茲曼機、循環神經網絡等。
      • 相比其餘正則化方法(如權重衰減、過濾器約束和稀疏激活)更有效。也可與其餘形式的正則化合並,獲得進一步提高。
    • Dropout缺點

      • 不適合寬度太窄的網絡。不然大部分網絡沒有輸入到輸出的路徑。
      • 不適合訓練數據過小(如小於5000)的網絡。訓練數據過小時,Dropout沒有其餘方法表現好。
      • 不適合很是大的數據集。數據集大的時候正則化效果有限(大數據集自己的泛化偏差就很小),使用Dropout的代價可能超過正則化的好處。
    • Dropout衍生方法

      • Dropout做用於線性迴歸時,至關於每一個輸入特徵具備不一樣權重衰減係數的$L^2$權重衰減,係數大小由其方差決定。但對深度模型而言,兩者是不等同的。
      • 快速Dropout (Wang and Manning,2013):利用近似解的方法,減少梯度計算中的隨機性析解,得到更快的收斂速度。
      • DropConnect (Wan,2013):將一個標量權重和單個隱藏單元狀態之間的每一個乘積做爲能夠丟棄的一個單元。
      • $\mu$不取二值,而是服從正態分佈,即$\mu\sim\mathcal{N}(1,I)$(Srivastava,2014)。

    13. 對抗訓練

    對抗樣本主要用於計算機安全領域。在正則化背景下,經過對抗訓練(adversarial training)能夠減小原有獨立同分布的測試集的錯誤率——在對抗擾動的訓練集樣本上訓練網絡。

    主要緣由之一是高度線性,神經網絡主要是基於線性模塊構建的。輸入改變$\epsilon$,則權重爲$\omega$的線性函數將改變$\epsilon\|\|\omega\|\|_1$,對於高維的$\omega$這是一個很是大的數。

    對抗訓練經過鼓勵網絡在訓練數據附件的局部區域恆定來限制這一個高度敏感的局部線性行爲。

    14. 切面距離、正切傳播和流形正切分類器

    利用流形假設,假設數據位於低維流形附近來克服維數災難。

    • 切面距離算法
    • 正切傳播算法
    • 流形正切分類器

    轉自: https://github.com/exacity/si...

    相關文章
    相關標籤/搜索