摘要:深度學(xué)習(xí)中的正則化機(jī)器學(xué)習(xí)中的一個核心問題是設(shè)計不僅在訓(xùn)練集上誤差小,而且在新樣本上泛化能力好的算法。沿特征值較大的方向正則化影響較小。正則化策略可以被解釋為最大后驗(yàn)貝葉斯推斷。
深度學(xué)習(xí)中的正則化
??機(jī)器學(xué)習(xí)中的一個核心問題是設(shè)計不僅在訓(xùn)練集上誤差小,而且在新樣本上泛化能力好的算法。許多機(jī)器學(xué)習(xí)算法都需要采取相應(yīng)的策略來減少測試誤差,這些策略被統(tǒng)稱為正則化。而神經(jīng)網(wǎng)絡(luò)由于其強(qiáng)大的表示能力經(jīng)常遭遇過擬合,所以需要使用許多不同形式的正則化策略。
??正則化通過對學(xué)習(xí)算法的修改,旨在減少泛化誤差而不是訓(xùn)練誤差。目前有很多正則化策略,有些是向機(jī)器學(xué)習(xí)模型中添加限制參數(shù)值的額外約束,有些是向目標(biāo)函數(shù)添加額外項(xiàng)來對參數(shù)值進(jìn)行軟約束。在本章中我們將更詳細(xì)地介紹正則化,重點(diǎn)介紹深度模型的正則化策略,包括參數(shù)范數(shù)懲罰、提前終止、Dropout等等。
基本概念在開始本章之前,我們回顧以下幾個概念:
Hessian矩陣:在數(shù)學(xué)中,海森矩陣(Hessian matrix 或 Hessian)是一個多變量實(shí)值函數(shù)的二階偏導(dǎo)數(shù)組成的方陣,假設(shè)有一實(shí)數(shù)函數(shù)$f(x_1,x_2,...,x_n)$,如果$f$所有的二階偏導(dǎo)數(shù)都存在,那么$f$的Hessian矩陣的第$ij$-項(xiàng)是$frac{partial^2f}{partial x_ipartial x_j}$,即Hessian矩陣為
$$ H(f)= left[ egin{matrix} frac{partial^2f}{partial x_1^2} & frac{partial^2f}{partial x_1partial x_2} & ldots & frac{partial^2f}{partial x_1partial x_n} frac{partial^2f}{partial x_2partial x_1} & frac{partial^2f}{partial x_2^2} & ldots & frac{partial^2f}{partial x_2partial x_n} vdots & vdots & ddots & vdots frac{partial^2f}{partial x_npartial x_1} & frac{partial^2f}{partial x_npartial x_2} & ldots & frac{partial^2f}{partial x_n^2} end{matrix} ight] $$
??如果函數(shù)$f$在定義域$D$內(nèi)的每個二階導(dǎo)數(shù)都是連續(xù)函數(shù),那么$f$的海森矩陣在$D$區(qū)域內(nèi)為對稱矩陣。
極值點(diǎn):基于Hessian矩陣$H$我們可以判斷多元函數(shù)的極值情況:
如果$H$是正定矩陣,則臨界點(diǎn)一定是局部極小值點(diǎn)。
如果$H$是負(fù)定矩陣,則臨界點(diǎn)一定是局部極大值點(diǎn)。
如果行列式$|H|=0$,需要更高階的導(dǎo)數(shù)來幫助判斷。
在其余情況下,臨界點(diǎn)不是局部極值點(diǎn)。
實(shí)對稱矩陣可對角化:若$A$是實(shí)對稱矩陣,則存在正交矩陣$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. 參數(shù)范數(shù)懲罰在本節(jié)中,我們討論各種范數(shù)懲罰對模型的影響。許多正則化方法(如神經(jīng)網(wǎng)絡(luò)、線性回歸、邏輯回歸)通過對目標(biāo)函數(shù)$J$添加一個參數(shù)范數(shù)懲罰$Omega( heta)$,限制模型的學(xué)習(xí)能力。將正則化后的目標(biāo)函數(shù)記為$ ilde{J}$:
$$ ilde{J}( heta;X,y)=J( heta;X,y)+alphaOmega( heta)$$
其中$alphain [0,+infty)$是衡量參數(shù)范數(shù)懲罰程度的超參數(shù)。$alpha=0$表示沒有正則化,$alpha$越大對應(yīng)正則化懲罰越大。
在神經(jīng)網(wǎng)絡(luò)中,參數(shù)包括每層線性變換的權(quán)重和偏置,我們通常只對權(quán)重做懲罰而不對偏置做正則懲罰;使用向量$omega$表示應(yīng)受懲罰影響的權(quán)重,用向量$ heta$表示所有參數(shù)。
1.1 $L^2$正則化$L^2$參數(shù)正則化(也稱為嶺回歸、Tikhonov正則)通常被稱為權(quán)重衰減(weight decay),是通過向目標(biāo)函數(shù)添加一個正則項(xiàng)$Omega( heta)=frac{1}{2}|omega|_2^2$使權(quán)重更加接近原點(diǎn)。
目標(biāo)函數(shù)
$$ ilde{J}(omega;X,y)=J(omega;X,y)+frac{alpha}{2}omega^T omega $$
計算梯度
$$ abla_{omega} ilde{J}(omega;X,y)= abla_{omega}J(omega;X,y)+alphaomega $$
更新權(quán)重
$$ omegaleftarrow omega-epsilon(alphaomega+ abla_{omega}J(omega;X,y))=(1-epsilonalpha)omega-epsilon abla_{omega}J(omega;X,y) $$
從上式可以看出,加入權(quán)重衰減后會導(dǎo)致學(xué)習(xí)規(guī)則的修改,即在每步執(zhí)行梯度更新前先收縮權(quán)重(乘以$(1-epsilonalpha)$)。
下面我們進(jìn)一步分析,令$omega^{* }$為未正則化的目標(biāo)函數(shù)取得最小訓(xùn)練誤差時的權(quán)重向量,即 $ omega^* =mathop{argmin}_omega J(omega) $,在$omega^*$的鄰域?qū)δ繕?biāo)函數(shù)$J( heta)$作二階泰勒展開近似:
$$ hat{J}( heta)=J(omega^* )+frac{1}{2}(omega-omega^* )^TH(omega-omega^*)$$ 其中$H$是$J$在$omega^{* }$處的Hessian矩陣。注意這里因?yàn)?omega^{* }$是最優(yōu)點(diǎn),所以一階項(xiàng)即梯度為0,并且$H$是半正定矩陣。 當(dāng)$hat{J}$最小時,其梯度為0,即 $$ abla_{omega}hat{J}(omega)=H(omega-omega^* )$$ 在上式中加入權(quán)重衰減的梯度,用$ ilde{omega}$表示此時正則化后的最優(yōu)點(diǎn): $$H( ilde{omega}-omega^*)+alpha ilde{omega}=0$$ $$(H+alpha I) ilde{omega}=Homega^*$$ $$ ilde{omega}=(H+alpha I)^{-1}Homega^*$$ 當(dāng)$alpha ightarrow 0$時,正則化的解$ ilde{omega} ightarrowomega^*$。因?yàn)?H$是實(shí)對稱矩陣,所以可以對角化,即存在正交矩陣$Q$(由$H$特征向量組成)使得$H=QLambda Q^T$。于是有: $$ ilde{omega} =(QLambda Q^T+alpha I)^{-1}QLambda Q^Tomega^* = [Q(Lambda+alpha I)Q^T]^{-1}QLambda Q^Tomega^* =Q(Lambda+alpha I)^{-1}Lambda Q^Tomega^* $$
也就是說,權(quán)重衰減的效果是沿著由$H$的特征向量所定義的軸縮放$omega^*$,縮放因子是$frac{lambda_i}{lambda_i+alpha}$。
1)沿特征值較大的方向正則化影響較小。即$lambda_i ggalpha$時,$frac{lambda_i}{lambda_i+alpha}simeq 1$。
2)沿特征值較小的方向,權(quán)重分量收縮到0。即$lambda_illalpha$時,$frac{lambda_i}{lambda_i+alpha}simeq 0$。
補(bǔ)充知識: 馬氏距離
馬氏距離表示數(shù)據(jù)的協(xié)方差距離,是一種有效的計算相似度的方法,定義: $ d(x, y) = sqrt{(x - y)^Tsum^{-1}(x -y)}$ ) , 其中($sum$)是x、y的協(xié)方差矩陣。
如果協(xié)方差矩陣為單位矩陣,那么馬氏距離就簡化為歐式距離,如果協(xié)方差矩陣為對角陣,則其也可稱為正規(guī)化的歐氏距離。一般情況下,$sum$ 總是可逆的,通過相似變換得到一個對角矩陣。因此,可以說馬氏距離就是正規(guī)化的歐氏距離,歐氏距離是一種特殊的馬氏距離。
更直觀的理解,假設(shè)我們的數(shù)據(jù)是二維的,當(dāng)我們將 $sum$ 對角化以后,$d(x,y) = sqrt{frac{(x_1 - y_1)^2}{a} + frac{(x_2 - y_2)^2}}$ , 單位陣的情況下變?yōu)? $d(x,y) = sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2}$ 。
馬氏距離是對歐氏距離更一般情況的推廣。對于二維高斯分布的情況,馬氏距離等高線對應(yīng)一個橢圓,如果協(xié)方差矩陣的各個特征值相等,變成一個圓,歐氏距離對位一個標(biāo)準(zhǔn)單位圓,如下所示:
那么對于高維的情況,高維分布二次項(xiàng)等概率曲線的幾何意義的就是一個廣義上的橢球體,如下所示: $sum^D_{i = 1}frac{y_i^2}{lambda} = const$ .
1.2 $L^1$正則化將$L^2$正則化的參數(shù)懲罰項(xiàng)$Omega( heta)$由權(quán)重衰減項(xiàng)修改為各個參數(shù)的絕對值之和,即得到$L^1$正則化:
$$ Omega( heta)=|omega|_1=sum_i |omega_i| $$
目標(biāo)函數(shù):
$$ ilde{J}(omega;X,y)=J(omega;X,y)+alpha |omega|_1 $$
梯度:
$$ abla_{omega} ilde{J}(omega;X,y) = abla_{omega}J(omega;X,y)+alpha sgn(omega)$$
其中$sgn(x)$為符號函數(shù),取各個元素的正負(fù)號。與之前的分析一樣,將目標(biāo)函數(shù)作二次泰勒展開近似:
$$hat{J}(omega;X,y)=J(omega^* ;X,y)+frac{1}{2}(omega-omega^*)^T H(omega - omega^*)$$
我們進(jìn)一步假設(shè)Hessian是對角矩陣,即$H=diag([H_{1,1},...,H_{n,n}])$,$H_{i,i}>0$,于是$L^1$正則化目標(biāo)函數(shù)二次近似為:
$$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_ileft[frac{1}{2}H_{i,i}(omega-omega^*)^2+alpha|omega_i| ight]$$
最小化這個近似函數(shù),有如下形式的解析解:
$$omega_i=sgn(omega_i^*)max{|omega_i^* |-frac{alpha}{H_{i,i}},0}$$
對每個$i$,我們考慮$omega_i^*>0$的情形:
1)$omega_i^* leqfrac{alpha}{H_{i,i}}$,正則化目標(biāo)中的最優(yōu)值是$omega_i=0$。
2)$omega_i^{* }> frac{alpha}{H_{i,i}}$,
$omega_i=omega_i^{*}-frac{alpha}{H_{i,i}}$,正則化不會將$omega_i$的最優(yōu)值推至0,而是在該方向上移動 $frac{alpha}{H_{i,i}}$ 的距離。
相比$L^2$正則化,$L^1$正則化會產(chǎn)生更稀疏的解。如果考慮Hessian矩陣是對角正定矩陣,我們得到$L^2$正則化的最優(yōu)解是$ ilde{omega_i}=frac{H_{i,i}}{H_{i,i}+alpha}omega_i^{* }$。如果$omega_i^{* } eq 0$,則 $ ilde{omega_i} eq 0$,這說明$L^2$正則化不會使參數(shù)變得稀疏,而$L^1$正則化有可能通過足夠大的$alpha$實(shí)現(xiàn)稀疏。
正則化策略可以被解釋為最大后驗(yàn)(MAP)貝葉斯推斷。
$L^2$正則化相當(dāng)于權(quán)重是高斯先驗(yàn)的MAP貝葉斯推斷。
$L^1$正則化相當(dāng)于權(quán)重是Laplace先驗(yàn)的MAP貝葉斯推斷。
最大后驗(yàn)估計選擇后驗(yàn)概率最大的點(diǎn):
$$Theta_{MAP}=mathop{argmax}_{ heta}p( heta|x)=mathop{argmax}_{ heta}log p(x| heta)+log p( heta)$$
右邊的$log p(x| heta)$對應(yīng)標(biāo)準(zhǔn)的對數(shù)似然項(xiàng),$log p( heta)$對應(yīng)先驗(yàn)分布。在神經(jīng)網(wǎng)絡(luò)中上述公式中的$ heta$即我們考慮的權(quán)重$omega$。
如果先驗(yàn)是高斯分布$mathcal{N}(omega;0,frac{1}{alpha}I^2)$,即$p(omega)propto exp(-frac{alpha}{2}omega^Tomega)$,從而有$log p(omega)propto alphaomega^Tomega$。因此$L^2$正則化權(quán)重衰減對應(yīng)著權(quán)重是高斯先驗(yàn)的MAP貝葉斯推斷。
如果先驗(yàn)是Laplace分布$Laplace(omega;0,frac{1}{alpha})$,即$p(omega)=frac{alpha}{2}exp(-alpha|x|)$,對數(shù)先驗(yàn)項(xiàng)$log p(omega)=sum_ilog Laplace(omega_i;0,frac{1}{alpha})=-alpha|omega|_1+nlog alpha-nlog 2$與$L^1$正則化代價函數(shù)懲罰項(xiàng)$alphaOmega(omega)=alpha sum_i |omega_i|$等價。
2. 作為約束的范數(shù)懲罰考慮參數(shù)范數(shù)正則化的代價函數(shù):
$$ ilde{J}( heta;X,y)=J( heta;X,y)+alphaOmega( heta)$$
在上一節(jié)中考慮的是無約束問題,如果想約束$Omega( heta) $$mathcal{L}( heta,alpha;X,y)=J( heta;X,y)+alpha(Omega( heta)-k)$$ 該約束問題的解是 $$ heta^*=argmin_ hetamax_{alpha,alphageq 0}mathcal{L}( heta,alpha)$$ 可以通過調(diào)節(jié)$alpha$與$k$的值來擴(kuò)大或縮小權(quán)重的約束區(qū)域。較大的$alpha$將得到一個較小的約束區(qū)域,而較小的$alpha$將得到一個較大的約束區(qū)域。 使用顯示約束(相比于懲罰約束)的優(yōu)點(diǎn): 可以先用梯度下降法計算$J( heta)$的下降步,再投影到區(qū)域$Omega( heta) 懲罰可能導(dǎo)致目標(biāo)函數(shù)非凸,而使得算法陷入局部極小。 重投影的顯示約束對優(yōu)化過程增加了一定的穩(wěn)定性。例如當(dāng)學(xué)習(xí)率較高時,很可能進(jìn)入正反饋,即大的權(quán)重誘導(dǎo)大的梯度,使權(quán)重獲得較大的更新。如果持續(xù)更新增加權(quán)重大小,則會使$ heta$迅速增大而遠(yuǎn)離原點(diǎn)發(fā)生溢出。 機(jī)器學(xué)習(xí)中許多線性模型,如線性回歸和PCA,都依賴與矩陣$X^TX$求逆,如果$X^TX$不可逆,這些方法就會失效。這種情況下,正則化的許多形式對應(yīng)求逆$X^TX+alpha I$,這個正則化矩陣是可逆的。大多數(shù)正則化方法能夠保證應(yīng)用于欠定問題的迭代方法收斂。 讓機(jī)器學(xué)習(xí)模型泛化得更好的最好辦法是使用更多的數(shù)據(jù)進(jìn)行訓(xùn)練,因此需要在有限的數(shù)據(jù)中創(chuàng)建假數(shù)據(jù)并添加到訓(xùn)練集中。數(shù)據(jù)集增強(qiáng)在對象識別領(lǐng)域是特別有效的方法。 數(shù)據(jù)集的各種變換,如對圖像的平移、旋轉(zhuǎn)和縮放。 在輸入層注入噪聲,也可以看作數(shù)據(jù)集增強(qiáng)的一種方法(如去噪自編碼器)。通過將隨機(jī)噪聲添加到輸入再進(jìn)行訓(xùn)練能夠大大改善神經(jīng)網(wǎng)絡(luò)的健壯性。 將噪聲加入到輸入。在一般情況下,注入噪聲遠(yuǎn)比簡單地收縮參數(shù)強(qiáng)大,特別是噪聲被添加到隱藏單元時會更加強(qiáng)大(如Dropout)。對于某些模型而言,向輸入添加方差極小的噪聲等價于對權(quán)重施加范數(shù)懲罰。
將噪聲加入到權(quán)重。這項(xiàng)技術(shù)主要用于循環(huán)神經(jīng)網(wǎng)絡(luò)。這可以被解釋為關(guān)于權(quán)重的貝葉斯推斷的隨機(jī)實(shí)現(xiàn)。貝葉斯學(xué)習(xí)過程將權(quán)重視為不確定的,并且可以通過概率分布表示這種不確定性,向權(quán)重添加噪聲是反映這種不確定性的一種實(shí)用的隨機(jī)方法。 例如對回歸問題,假設(shè)對每個輸入,網(wǎng)絡(luò)權(quán)重添加隨機(jī)擾動$epsilon sim mathcal{N}(epsilon;0,eta I)$,將擾動后的模型記為 $hat{y}\_{epsilon_{omega}}(x)$。目標(biāo)函數(shù)為: $$ ilde{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)-2yhat{y}_{epsilon_omega}(x)+y^2]$$
最小化帶權(quán)重噪聲的$J$等價于最小化附加正則項(xiàng):$etamathbb{E}\_{p(x,y)}[||
abla_omega hat{y}(x)||^2]$的$J$。 這種正則化鼓勵參數(shù)進(jìn)入權(quán)重小擾動對輸出相對影響較小的參數(shù)空間區(qū)域。換句話說,它推動模型進(jìn)入對權(quán)重小的變化相對不敏感的區(qū)域,找到的點(diǎn)不只是極小點(diǎn),而且是由平坦區(qū)域所包圍的極小點(diǎn)
將噪聲加入到輸出。即顯式地對標(biāo)簽上的噪聲進(jìn)行建模,假設(shè)訓(xùn)練集上的標(biāo)記$y$正確的概率是$1-epsilon$,其他標(biāo)簽是正確的可能性是$epsilon$。例如,標(biāo)簽平滑通過把確切分類目標(biāo)從$0$和$1$換成$frac{epsilon}{k-1}$和$1-epsilon$,正則化具有$k$個輸出的softmax函數(shù)的模型。softmax函數(shù)值永遠(yuǎn)在$(0,1)$區(qū)間內(nèi)而達(dá)不到$0$或$1$,標(biāo)簽平滑的優(yōu)勢是能夠防止模型追求確切概率而不影響模型學(xué)習(xí)正確分類。
6. 半監(jiān)督學(xué)習(xí)在半監(jiān)督學(xué)習(xí)的框架下,$P(x)$產(chǎn)生的未標(biāo)記樣本和$P(x, y)$中的標(biāo)記樣本都用于估計$P(y | x)$。在深度學(xué)習(xí)的背景下,半監(jiān)督學(xué)習(xí)通常指的是學(xué)習(xí)一個表示$h = f (x)$,學(xué)習(xí)表示的目的是使相同類中的樣本有類似的表示。
我們可以構(gòu)建這樣一個模型,其中生成模型$P(x)$或$P(x, y)$與判別模型$P(y | x)$共享參數(shù),而不用分離無監(jiān)督和監(jiān)督部分。
7. 多任務(wù)學(xué)習(xí)多任務(wù)學(xué)習(xí)是通過合并幾個任務(wù)中的樣例(可以視為對參數(shù)施加的軟約束)來提高泛化的一種方式。當(dāng)模型的一部分被多個額外的任務(wù)共享時,這部分將被約束為良好的值,通常會帶來更好的泛化能力。
下圖展示了多任務(wù)學(xué)習(xí)的一種普遍形式。不同的監(jiān)督任務(wù)共享相同的輸入$x$和中間表示層$h^{(shared)}$,能學(xué)習(xí)共同的因素池。
從深度學(xué)習(xí)的觀點(diǎn)看,底層的先驗(yàn)知識為:能解釋數(shù)據(jù)變化的因素中,某些因素是跨多個任務(wù)共享的。
8. 提前終止由于神經(jīng)網(wǎng)絡(luò)強(qiáng)大的表示能力,當(dāng)訓(xùn)練次數(shù)過多時會經(jīng)常遭遇過擬合,即訓(xùn)練誤差會隨時間推移減少,而驗(yàn)證集誤差會再次上升。
如果我們只要返回使驗(yàn)證集誤差最低的參數(shù),就可以獲得驗(yàn)證集誤差更低的模型。這種策略被稱為提前終止(early stopping)。由于它的有效性和簡單性,這可能是深度學(xué)習(xí)中最常用的正則化形式。
提前終止是一種非常不顯眼的正則化形式,幾乎不需要改變基本訓(xùn)練過程、目標(biāo)函數(shù)。而使用權(quán)重衰減則必須小心不能使用太多的權(quán)重衰減,否則容易陷入局部極小點(diǎn)。
8.1 提前終止算法_
輸入:$n$為評估間隔步數(shù),$p$為patience(即觀察到$p$次更差的驗(yàn)證集表現(xiàn)后終止),$ heta_0$為初始參數(shù)
過程:
1: 初始化$ heta= heta_0$,$i=0$,$j=0$,$v=infty$,$ heta^* = heta$,$i^* = i$
2: $while(j
3:??運(yùn)行訓(xùn)練算法$n$步,更新$ heta$。
4:??$i=i+n$,$v"=ValidationSetError( heta)$
5:??$if (v" 6:????$j=0$,$ heta^* = heta$,$i^{* }=i$,$v=v" $ 7:??$else$ 8:????$j=j+1$ 9:??$end$ $if$ 10:$end$ $while$ 輸出:最佳參數(shù)$ heta^* $,最佳訓(xùn)練步數(shù)$i^* $ 由于限制了訓(xùn)練迭代次數(shù),減少了訓(xùn)練時的計算成本 具有正則化效果而不需要添加懲罰項(xiàng)或計算其梯度。 提前終止為何具有正則化效果?其真正機(jī)制可理解為將優(yōu)化過程的參數(shù)空間限制在初始參數(shù)值$ heta_0$的小鄰域內(nèi)。假如學(xué)習(xí)率為$epsilon$,進(jìn)行$ au$次訓(xùn)練迭代,則$frac{1}{epsilon au}$等價于權(quán)重衰減系數(shù)$alpha$。我們下面進(jìn)行證明: 我們考慮二次誤差的簡單線性模型,采用梯度下降法,參數(shù)$ heta=omega$,代價函數(shù)$J$在最優(yōu)值$omega^*$附近作泰勒級數(shù)二階展開近似: $$hat{J}( heta)=J(omega^* )+frac{1}{2}(omega-omega^* )^TH(omega-omega^*)$$ 其中$H$是$J$關(guān)于$omega$在$omega^{* }$點(diǎn)的Hessian。由于$omega^{* }$是全局最小點(diǎn),$H$是半正定對稱矩陣,因此可以對角化,即存在正交矩陣$Q$使得$H=QLambda Q^T$。進(jìn)一步,$Q$是特征向量的一組標(biāo)準(zhǔn)正交基,$Lambda$是(對角元素是$H$特征值的)對角矩陣。 在局部泰勒級數(shù)逼近下,梯度由下式給出: $$
ablahat{J}(omega)=H(omega-omega^*)$$ 將權(quán)重參數(shù)初始化為原點(diǎn),即$omega^{(0)}=0$,梯度下降法由下面公式給出: $$omega^{( au)}=omega^{( au-1)}-epsilon
abla_{omega}hat{J}(omega^{( au-1)})=omega^{( au-1)}-epsilon H(omega^{( au-1)}-omega^*)$$ $$omega^{( au)}-omega^* =(I-epsilon H)(omega^{( au-1)}-omega^*)$$ 利用$H$的正交分解$H=QLambda Q^T$,得到: $$omega^{( au)}-omega^* =(I-epsilon QLambda Q^T)(omega^{( au-1)}-omega^*)$$ $$Q^T(omega^{( au)}-omega^* )=(I-epsilon Lambda) Q^T(omega^{( au-1)}-omega^* )=ldots=(I-epsilonLambda)^ au Q^T(omega^{(0)}-omega^*)$$ 假定$epsilon$足夠小以保證$|1-epsilonlambda_i|<1$,則經(jīng)過$ au$次迭代后: $$Q^Tomega^{( au)}=Q^Tomega^* -(I-epsilon Lambda)^ au Q^Tomega^* =[I-(I-epsilon Lambda)^ au] Q^Tomega^*$$ 我們回顧1.1節(jié)中$L^2$正則化的形式:$Q^T ilde{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 ilde{omega}=[I-(Lambda+alpha I)^{-1}alpha] Q^T omega^*
$$ 對比這兩個式子右端,如果滿足 $$(I-epsilonLambda)^ au=(Lambda+alpha I)^{-1}alpha$$ 那么$L^2$正則化和提前終止是等價的(在目標(biāo)函數(shù)的二階近似下)。 利用級數(shù)展開$log (1+x)=x-frac{x^2}{2}+ldots+frac{(-1)^{n-1}x^n}{n}+ldots$該等式即: $$ aulog (I-epsilonLambda)=-log (I+frac{1}{alpha}Lambda)$$ $$ au(-epsilonLambda-ldots)=-(frac{1}{alpha}Lambda-ldots)$$ 如果所有$lambda_i$是小的($epsilonlambda_ill 1$且$frac{lambda_i}{alpha}ll 1$),則: $$alpha approx frac{1}{ auepsilon}$$ 提前終止和$L^2$正則化是等價的(在二階近似、$lambda_i$小的情況下),即$frac{1}{epsilon au}approx alpha$。也就是說訓(xùn)練迭代次數(shù)$ au$和學(xué)習(xí)率$epsilon$起著與$L^2$正則化(權(quán)重衰減)系數(shù)$alpha$成反比的作用。 長度為$ au$的軌跡結(jié)束于$L^2$正則化目標(biāo)的極小點(diǎn),但是提前終止通常涉及監(jiān)控驗(yàn)證集誤差,以便在空間特別好的點(diǎn)處終止軌跡。 提前終止比$L^2$正則化更具有優(yōu)勢,提前終止能自動確定正則化的正確量,而權(quán)重衰減需要進(jìn)行多個不同超參數(shù)的訓(xùn)練實(shí)驗(yàn)。 參數(shù)范數(shù)懲罰或約束是相對于固定區(qū)域或點(diǎn),如$L^2$正則化是對參數(shù)偏離$0$固定值進(jìn)行懲罰。但有時我們需要對模型參數(shù)之間的相關(guān)型進(jìn)行懲罰,使模型參數(shù)盡量接近或者相等。 參數(shù)共享:強(qiáng)迫模型某些參數(shù)相等 主要應(yīng)用:卷積神經(jīng)網(wǎng)絡(luò)(CNN) 優(yōu)點(diǎn):顯著降低了CNN模型的參數(shù)數(shù)量(CNN模型參數(shù)數(shù)量經(jīng)常是千萬量級以上),減少模型所占用的內(nèi)存,并且顯著提高了網(wǎng)絡(luò)大小而不需要相應(yīng)的增加訓(xùn)練數(shù)據(jù)。 稀疏表示也是卷積神經(jīng)網(wǎng)絡(luò)經(jīng)常用到的正則化方法。$L^1$正則化會誘導(dǎo)稀疏的參數(shù),使得許多參數(shù)為$0$;而稀疏表示是懲罰神經(jīng)網(wǎng)絡(luò)的激活單元,稀疏化激活單元。換言之,稀疏表示是使得每個神經(jīng)元的輸入單元變得稀疏,很多輸入是0。 例如下圖,$h_3$只依賴于上一層的3個神經(jīng)元輸入$x_2$、$x_3$、$x_4$,而其他神經(jīng)元到$h_3$的輸入都是0。 Bagging(bootstrap aggregating)是通過結(jié)合幾個模型降低泛化誤差的技術(shù)。主要想法是分別訓(xùn)練幾個不同的模型,然后讓所有模型表決測試樣例的輸出。這是機(jī)器學(xué)習(xí)中常規(guī)策略的一個例子,被稱為模型平均(model averaging)。采用這種策略的技術(shù)被稱為集成方法。 Bagging是一種允許重復(fù)多次使用同一種模型、訓(xùn)練算法和目標(biāo)函數(shù)的方法。具體來說,Bagging涉及構(gòu)造$k$個不同的數(shù)據(jù)集。每個數(shù)據(jù)集從原始數(shù)據(jù)集中重復(fù)采樣構(gòu)成,和原始數(shù)據(jù)集具有相同數(shù)量的樣例。 模型平均是一個減少泛化誤差的非常強(qiáng)大可靠的方法。例如我們假設(shè)有$k$個回歸模型,每個模型誤差是$epsilon_i$,誤差服從零均值、方差為$v$、協(xié)方差為$c$的多維正態(tài)分布。則模型平均預(yù)測的誤差為$frac{1}{k}sum_iepsilon_i$,均方誤差的期望為 $$mathbb{E}left[(frac{1}{k}sum_iepsilon_i)^2
ight]=frac{1}{k^2}mathbb{E}left[sum_i(epsilon_i^2+sum_{i
eq j}epsilon_iepsilon_j)
ight]=frac{1}{k}v+frac{k-1}{k}c$$ 在誤差完全相關(guān)即$c=v$的情況下,均方誤差為$v$,模型平均沒有幫助。在誤差完全不相關(guān)即$c=0$時,模型平均的均方誤差的期望僅為$frac{1}{k}v$。這說明集成平方誤差的期望隨集成規(guī)模的增大而線性減少。 其他集成方法,如Boosting,通過向集成逐步添加神經(jīng)網(wǎng)絡(luò),可以構(gòu)建比單個模型容量更高的集成模型。 Dropout可以被認(rèn)為是集成大量深層神經(jīng)網(wǎng)絡(luò)的實(shí)用Bagging方法。但是Bagging方法涉及訓(xùn)練多個模型,并且在每個測試樣本上評估多個模型。當(dāng)每個模型都是一個大型神經(jīng)網(wǎng)絡(luò)時,Bagging方法會耗費(fèi)很多的時間和內(nèi)存。而Dropout則提供了一種廉價的Bagging集成近似,能夠訓(xùn)練和評估指數(shù)級數(shù)量的神經(jīng)網(wǎng)絡(luò)。 Dropout訓(xùn)練的集成包括所有從基礎(chǔ)網(wǎng)絡(luò)中除去神經(jīng)元(非輸出單元)后形成的子網(wǎng)絡(luò)。只需將一些單元的輸出乘零就能有效的刪除一個單元(稱之為乘零的簡單Dropout算法)。假如基本網(wǎng)絡(luò)有$n$個非輸出神經(jīng)元,則一共有$2^n$個子網(wǎng)絡(luò)。
Dropout的目標(biāo)是在指數(shù)級數(shù)量的神經(jīng)網(wǎng)絡(luò)上近似Bagging過程。具體來說,在訓(xùn)練中使用Dropout時,我們會使用基于小批量產(chǎn)生較小步長的學(xué)習(xí)算法,如隨機(jī)梯度下降。 每次在小批量中加載一個樣本,然后隨機(jī)抽樣(用于網(wǎng)絡(luò)中所有輸入和隱藏單元的)不同二值掩碼。 對于每個單元,掩碼是獨(dú)立采樣的。通常輸入單元被包括的概率為$0.8$,隱藏單元被包括的概率為$0.5$。 然后與之前一樣,運(yùn)行前向傳播、反向傳播和學(xué)習(xí)更新。
8.2 提前終止的優(yōu)點(diǎn)
Bagging:所有模型都是獨(dú)立的。
??Dropout:所有模型共享參數(shù),其中每個模型繼承父神經(jīng)網(wǎng)絡(luò)參數(shù)的不同子集。參數(shù)共享使得在有限內(nèi)存下表示指數(shù)級數(shù)量的模型變得可能。
Bagging:每個模型在其相應(yīng)的訓(xùn)練集上訓(xùn)練到收斂。
??Dropout:大部分模型沒有被顯式地被訓(xùn)練,因?yàn)楦干窠?jīng)網(wǎng)絡(luò)通常很大,幾乎不可能采樣完指數(shù)級數(shù)量的子網(wǎng)絡(luò);取而代之的是,在單個步驟中訓(xùn)練一小部分子網(wǎng)絡(luò),通過參數(shù)共享使得剩余的子網(wǎng)絡(luò)也有好的參數(shù)設(shè)定。
除此之外,Dropout與Bagging算法一樣。例如每個子網(wǎng)絡(luò)中遇到的訓(xùn)練集是有放回采樣的原始訓(xùn)練集的一個子集。
模型輸出:
Bagging情況下,每個模型$i$產(chǎn)生一個概率分布$p^{(i)}(y|x)$,集成的預(yù)測由這些分布的算術(shù)平均值給出:
$$frac{1}{k}sum_{i=1}^{k}p^{(i)}(y|x)$$
Dropout情況下,通過掩碼$mu$定義每個子模型的概率分布$p(y|x,mu)$。所有掩碼的算術(shù)平均值由下式給出:
$$sum_{mu}p(mu)p(y|x,mu)$$
其中$p(mu)$是訓(xùn)練時采樣$mu$的概率分布。但該求和包含指數(shù)級的項(xiàng),一般是不可計算的,我們可以通過采樣近似推斷,即平均許多掩碼的輸出。通過幾何平均直接定義的非標(biāo)準(zhǔn)化概率分布由下式給出:
$$ ilde{p}_{ensemble}(y|x)=sqrt[2^d]{prod_{mu}p(y|x,mu)}$$
其中$d$是可被丟棄的單元數(shù)。為了作出預(yù)測,需要進(jìn)行標(biāo)準(zhǔn)化,例如對均勻分布的$mu$,可按下式進(jìn)行標(biāo)準(zhǔn)化:
$$p_{ensemble}(y|x)=frac{ ilde{p}_{ensemble}(y|x)}{sum_{y"} ilde{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小結(jié)
Dropout優(yōu)點(diǎn)
計算方便。訓(xùn)練過程中使用Dropout產(chǎn)生$n$個隨機(jī)二進(jìn)制數(shù)與狀態(tài)相乘即可。每個樣本每次更新的時間復(fù)雜度:$O(n)$,空間復(fù)雜度:$O(n)$。
適用廣。Dropout不怎么限制適用的模型或訓(xùn)練過程,幾乎在所有使用分布式表示且可以用隨機(jī)梯度下降訓(xùn)練的模型上都表現(xiàn)很好。包括:前饋神經(jīng)網(wǎng)絡(luò)、概率模型、受限波爾茲曼機(jī)、循環(huán)神經(jīng)網(wǎng)絡(luò)等。
相比其他正則化方法(如權(quán)重衰減、過濾器約束和稀疏激活)更有效。也可與其他形式的正則化合并,得到進(jìn)一步提升。
Dropout缺點(diǎn)
不適合寬度太窄的網(wǎng)絡(luò)。否則大部分網(wǎng)絡(luò)沒有輸入到輸出的路徑。
不適合訓(xùn)練數(shù)據(jù)太小(如小于5000)的網(wǎng)絡(luò)。訓(xùn)練數(shù)據(jù)太小時,Dropout沒有其他方法表現(xiàn)好。
不適合非常大的數(shù)據(jù)集。數(shù)據(jù)集大的時候正則化效果有限(大數(shù)據(jù)集本身的泛化誤差就很小),使用Dropout的代價可能超過正則化的好處。
Dropout衍生方法
Dropout作用于線性回歸時,相當(dāng)于每個輸入特征具有不同權(quán)重衰減系數(shù)的$L^2$權(quán)重衰減,系數(shù)大小由其方差決定。但對深度模型而言,二者是不等同的。
快速Dropout (Wang and Manning,2013):利用近似解的方法,減小梯度計算中的隨機(jī)性析解,獲得更快的收斂速度。
DropConnect (Wan,2013):將一個標(biāo)量權(quán)重和單個隱藏單元狀態(tài)之間的每個乘積作為可以丟棄的一個單元。
$mu$不取二值,而是服從正態(tài)分布,即$musimmathcal{N}(1,I)$(Srivastava,2014)。
13. 對抗訓(xùn)練對抗樣本主要用于計算機(jī)安全領(lǐng)域。在正則化背景下,通過對抗訓(xùn)練(adversarial training)可以減少原有獨(dú)立同分布的測試集的錯誤率——在對抗擾動的訓(xùn)練集樣本上訓(xùn)練網(wǎng)絡(luò)。
主要原因之一是高度線性,神經(jīng)網(wǎng)絡(luò)主要是基于線性模塊構(gòu)建的。輸入改變$epsilon$,則權(quán)重為$omega$的線性函數(shù)將改變$epsilon||omega||_1$,對于高維的$omega$這是一個非常大的數(shù)。
對抗訓(xùn)練通過鼓勵網(wǎng)絡(luò)在訓(xùn)練數(shù)據(jù)附件的局部區(qū)域恒定來限制這一個高度敏感的局部線性行為。
14. 切面距離、正切傳播和流形正切分類器利用流形假設(shè),假設(shè)數(shù)據(jù)位于低維流形附近來克服維數(shù)災(zāi)難。
切面距離算法
正切傳播算法
流形正切分類器
轉(zhuǎn)自: https://github.com/exacity/si...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/19768.html
摘要:近來在深度學(xué)習(xí)中,卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)等深度模型在各種復(fù)雜的任務(wù)中表現(xiàn)十分優(yōu)秀。機(jī)器學(xué)習(xí)中最常用的正則化方法是對權(quán)重施加范數(shù)約束。 近來在深度學(xué)習(xí)中,卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)等深度模型在各種復(fù)雜的任務(wù)中表現(xiàn)十分優(yōu)秀。例如卷積神經(jīng)網(wǎng)絡(luò)(CNN)這種由生物啟發(fā)而誕生的網(wǎng)絡(luò),它基于數(shù)學(xué)的卷積運(yùn)算而能檢測大量的圖像特征,因此可用于解決多種圖像視覺應(yīng)用、目標(biāo)分類和語音識別等問題。但是,深層網(wǎng)絡(luò)...
摘要:在計算機(jī)視覺領(lǐng)域,對卷積神經(jīng)網(wǎng)絡(luò)簡稱為的研究和應(yīng)用都取得了顯著的成果。文章討論了在卷積神經(jīng)網(wǎng)絡(luò)中,該如何調(diào)整超參數(shù)以及可視化卷積層。卷積神經(jīng)網(wǎng)絡(luò)可以完成這項(xiàng)任務(wù)。 在深度學(xué)習(xí)中,有許多不同的深度網(wǎng)絡(luò)結(jié)構(gòu),包括卷積神經(jīng)網(wǎng)絡(luò)(CNN或convnet)、長短期記憶網(wǎng)絡(luò)(LSTM)和生成對抗網(wǎng)絡(luò)(GAN)等。在計算機(jī)視覺領(lǐng)域,對卷積神經(jīng)網(wǎng)絡(luò)(簡稱為CNN)的研究和應(yīng)用都取得了顯著的成果。CNN網(wǎng)絡(luò)最...
摘要:最普遍的變換是線性變換,即和均將規(guī)范化應(yīng)用于輸入的特征數(shù)據(jù),而則另辟蹊徑,將規(guī)范化應(yīng)用于線性變換函數(shù)的權(quán)重,這就是名稱的來源。他們不處理權(quán)重向量,也不處理特征數(shù)據(jù)向量,就改了一下線性變換的函數(shù)其中是和的夾角。 深度神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練之難眾所周知,其中一個重要的現(xiàn)象就是 Internal Covariate Shift. Batch Normalization 大法自 2015 年由Googl...
閱讀 2458·2021-09-28 09:36
閱讀 3597·2021-09-22 15:41
閱讀 4383·2021-09-04 16:45
閱讀 1956·2019-08-30 15:55
閱讀 2847·2019-08-30 13:49
閱讀 825·2019-08-29 16:34
閱讀 2370·2019-08-29 12:57
閱讀 1679·2019-08-26 18:42