【NLP】Task5:神经网络基础
文章目錄
- 一、前饋神經(jīng)網(wǎng)絡(luò)
- 二、簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)(tensorflow)
- 三、激活函數(shù)
- 1、概述
- 2、sigmoid 激活函數(shù)
- (1)定義
- (2)特點(diǎn)
- (3)缺點(diǎn)
- 3、tanh函數(shù)
- 4、ReLU函數(shù)
- 5、Leaky ReLU
- 6、Maxout
- 7、ELU
- 8、激活函數(shù)的選擇
- 四、正則化
- 1、參數(shù)范數(shù)懲罰
- (1)相關(guān)定義
- (2)L0正則化
- (3)L1正則化
- (4)L2正則化
- 2、數(shù)據(jù)擴(kuò)增(data agumentation)
- 3、噪聲添加
- 4、Dropout
- 5、早期停止(early stopping)
- 五、深度模型中的優(yōu)化(待完善)
- 1、參數(shù)初始化策略
- (1)全零初始化??
- (2)隨機(jī)初始化 (Random Initialization)
- (3)Xavier
- (4)MSRA
- (5)bias初始化
- (6)小結(jié)
- 2、自適應(yīng)學(xué)習(xí)率算法
- 3、batch norm層
- 4、layer norm層
一、前饋神經(jīng)網(wǎng)絡(luò)
概念:前饋神經(jīng)網(wǎng)絡(luò)、網(wǎng)絡(luò)層數(shù)、輸入層、隱藏層、輸出層、隱藏單元、激活函數(shù)
前饋神經(jīng)網(wǎng)絡(luò):前饋神經(jīng)網(wǎng)絡(luò)是一種最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò),各神經(jīng)元分層排列。每個(gè)神經(jīng)元只與前一層的神經(jīng)元相連。接收前一層的輸出,并輸出給下一層.各層間沒有反饋。
網(wǎng)絡(luò)層數(shù):一般是指設(shè)置或者搭建的模型有多少層。以上圖為例,網(wǎng)絡(luò)層為3。注:一般不包括輸入層。
輸入層:一般指數(shù)據(jù)輸入模型的一層,如圖中 Layer L1L_1L1? 層。
輸出層:一般指模型的最后一層,即Layer L4L_4L4? 層;
隱藏層:指除開輸入層和輸出層之外的中間層,如圖Layer L2L_2L2? 層和 L3L_3L3? 層;
隱藏單元:一般指隱藏層中的單元結(jié)構(gòu)。
激活函數(shù):一般指加權(quán)之后的值到輸出之間函數(shù),通過(guò)激活函數(shù)將上一層的輸出作為下一層輸入之前進(jìn)行非線性變化,使模型不再是單一的線性變換。
二、簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)(tensorflow)
前期準(zhǔn)備
首先給網(wǎng)絡(luò)提供 MMM 個(gè)訓(xùn)練對(duì) (X,Y)(X,Y)(X,Y),XXX 為輸入,YYY 為期望的輸出。輸入通過(guò)激活函數(shù) g(h)g(h)g(h) 和隱藏層傳播到輸出層。輸出 Y^\hat{Y}Y^ 是網(wǎng)絡(luò)的輸出,得到 error=Y?Y^error=Y-\hat{Y}error=Y?Y^。其損失函數(shù) J(W)J(W)J(W) 如下:
J(W)=12M∑i=1N(Yi?Y^i)2J(W)=\frac{1}{2M}\sum_{i=1}^{N}(Y_i-\hat{Y}_i)^2J(W)=2M1?i=1∑N?(Yi??Y^i?)2
其中,iii 取遍所有輸出層的神經(jīng)元(1 到 N)。然后可以使用 J(W)J(W)J(W) 的梯度并使用鏈?zhǔn)椒▌t求導(dǎo),來(lái)計(jì)算連接第 iii 個(gè)輸出層神經(jīng)元到第 jjj 個(gè)隱藏層神經(jīng)元的權(quán)重 WijW_{ij}Wij? 的變化:
ΔWij=?η?J?Wij=η1M?(Yi?Y^i)2?Y^?Y^?hi?hi?Wij=η1M(Yi?Y^i)g′(hi)Oj\Delta W_{ij}=-\eta\frac{\partial{J}}{\partial W_{ij}}=\eta\frac{1}{M}\frac{\partial{(Y_i-\hat{Y}_i)^2}}{\partial{\hat{Y}}} \frac{\partial{\hat{Y}}}{\partial{h_i}} \frac{\partial{h_i}}{\partial{W_{ij}}}=\eta\frac{1}{M}(Y_i-\hat{Y}_i)g'(h_i)O_j ΔWij?=?η?Wij??J?=ηM1??Y^?(Yi??Y^i?)2??hi??Y^??Wij??hi??=ηM1?(Yi??Y^i?)g′(hi?)Oj?
這里,OjO_jOj? 是隱藏層神經(jīng)元的輸出,hih_ihi? 表示輸出層的輸入值。這很容易理解,但現(xiàn)在怎么更新連接第 nnn 個(gè)隱藏層的神經(jīng)元 kkk 到第 n+1n+1n+1 個(gè)隱藏層的神經(jīng)元 jjj 的權(quán)值 WjkW_{jk}Wjk??過(guò)程是相同的:將使用損失函數(shù)的梯度和鏈?zhǔn)椒▌t求導(dǎo),但這次計(jì)算 WjkW_{jk}Wjk?:
通過(guò)二層的全連接網(wǎng)絡(luò),實(shí)現(xiàn) mnist 數(shù)據(jù)集分類任務(wù)。
輸出結(jié)果
Epoch: 0 loss: 0.3155866861343384 Epoch: 1000 loss: 0.023114416748285294 Epoch: 2000 loss: 0.017101742327213287 Epoch: 3000 loss: 0.01927866041660309 Epoch: 4000 loss: 0.019498592242598534 Epoch: 5000 loss: 0.017000144347548485 Epoch: 6000 loss: 0.006083908025175333 Epoch: 7000 loss: 0.018798980861902237 Epoch: 8000 loss: 0.04835653677582741 Epoch: 9000 loss: 0.0037784664891660213 Accuracy Train%: 84.58166666666666 Accuracy Test%: 92.65三、激活函數(shù)
1、概述
主要作用:提供網(wǎng)絡(luò)的非線性建模能力。
假設(shè)一個(gè)神經(jīng)網(wǎng)絡(luò)中僅包含線性卷積和全連接運(yùn)算,那么該網(wǎng)絡(luò)僅能夠表達(dá)線性映射,即無(wú)論神經(jīng)網(wǎng)絡(luò)有多少層,輸出都是輸入的線性組合,與沒有隱藏層效果相當(dāng)。加入(非線性)激活函數(shù)之后,深度神經(jīng)網(wǎng)絡(luò)才具備了分層的非線性映射學(xué)習(xí)能力,幾乎可以逼近任意函數(shù)。
激活函數(shù)的性質(zhì):
- 可微性: 當(dāng)優(yōu)化方法是基于梯度的時(shí)候,這個(gè)性質(zhì)是必須的。
- 單調(diào)性: 當(dāng)激活函數(shù)是單調(diào)的時(shí)候,單層網(wǎng)絡(luò)能夠保證是凸函數(shù)。
- 輸出值的范圍: 當(dāng)激活函數(shù)輸出值是 有限 的時(shí)候,基于梯度的優(yōu)化方法會(huì)更加 穩(wěn)定,因?yàn)樘卣鞯谋硎臼苡邢迿?quán)值的影響更顯著;當(dāng)激活函數(shù)的輸出是 無(wú)限 的時(shí)候,模型的訓(xùn)練會(huì)更加高效,不過(guò)在這種情況小,一般需要更小的learning rate
常用的激活函數(shù):
- sigmoid
- tanh
- ReLU
- Leaky ReLU
- Maxout
- ELU
2、sigmoid 激活函數(shù)
(1)定義
sigmoidsigmoidsigmoid 函數(shù),即著名的 LogisticLogisticLogistic 函數(shù),是常用的非線性激活函數(shù),可將變量映射到 (0,1)(0,1)(0,1) 之間,公式如下:
f(x)=11+e?xf(x)=\frac{1}{1+e^{-x}}f(x)=1+e?x1?
幾何圖像如下:
(2)特點(diǎn)
能將輸入的連續(xù)實(shí)值映射到 (0,1)(0,1)(0,1) 之間。特別的,若非常小的負(fù)值,輸出為 0;非常大的正值,輸出為1。
(3)缺點(diǎn)
缺點(diǎn)1:梯度爆炸和梯度消失
在深度神經(jīng)網(wǎng)絡(luò)中梯度反向傳播時(shí)可能會(huì)導(dǎo)致梯度爆炸和梯度消失,其中梯度爆炸發(fā)生的概率非常小,而梯度消失發(fā)生的概率比較大。
sigmoidsigmoidsigmoid 函數(shù)的導(dǎo)數(shù)為:
f′(x)=e?x(1+e?x)2=f(x)(1?f(x))f'(x)=\frac{e^{-x}}{(1+e^{-x})^2}=f(x)(1-f(x))f′(x)=(1+e?x)2e?x?=f(x)(1?f(x))
當(dāng)網(wǎng)絡(luò)權(quán)值初始化為 (1,+∞)(1,+∞)(1,+∞)區(qū)間內(nèi)的值,則會(huì)出現(xiàn)梯度爆炸情況。
sigmoid 的軟飽和性。從上圖可以看到,其兩側(cè)導(dǎo)數(shù)逐漸趨近于0,具有這種性質(zhì)的稱為軟飽和激活函數(shù)。具體的,飽和又可分為左飽和與右飽和。
lim?n→∞f′(x)=0\lim_{n \to \infty} f'(x)=0 \quadn→∞lim?f′(x)=0
與軟飽和對(duì)應(yīng)的是硬飽和,即
f′(x)=0,當(dāng)∣x∣>c,其中c為常數(shù)。f'(x)=0,當(dāng)|x|>c,其中 c 為常數(shù)。f′(x)=0,當(dāng)∣x∣>c,其中c為常數(shù)。
sigmoidsigmoidsigmoid 的軟飽和性,使得深度神經(jīng)網(wǎng)絡(luò)在二三十年里一直難以有效的訓(xùn)練,是阻礙神經(jīng)網(wǎng)絡(luò)發(fā)展的重要原因。具體來(lái)說(shuō),由于在后向傳遞過(guò)程中,sigmoidsigmoidsigmoid 向下傳導(dǎo)的梯度包含了一個(gè) f′(x)f'(x)f′(x) 因子(sigmoidsigmoidsigmoid 關(guān)于輸入的導(dǎo)數(shù)),因此一旦輸入落入飽和區(qū), f′(x)f'(x)f′(x) 就會(huì)變得接近于 000,導(dǎo)致了向底層傳遞的梯度也變得非常小。此時(shí),網(wǎng)絡(luò)參數(shù)很難得到有效訓(xùn)練。這種現(xiàn)象被稱為梯度消失。一般來(lái)說(shuō),sigmoidsigmoidsigmoid 網(wǎng)絡(luò)在 5 層之內(nèi)就會(huì)產(chǎn)生梯度消失現(xiàn)象
缺點(diǎn)2:Sigmoid 的 output 不是0均值(即zero-centered)
其值域在[0,1]之間,函數(shù)輸出不是0均值的,權(quán)重更新效率降低,因?yàn)檫@會(huì)導(dǎo)致后層的神經(jīng)元的輸入是非0均值的信號(hào),這會(huì)對(duì)梯度產(chǎn)生影響:假設(shè)后層神經(jīng)元的輸入都為正(e.g. x>0x>0x>0 elementwise in ),那么對(duì)w求局部梯度則都為正,這樣在反向傳播的過(guò)程中w要么都往正方向更新,要么都往負(fù)方向更新,導(dǎo)致有一種捆綁的效果,使得收斂緩慢。 當(dāng)然了,若按batch去訓(xùn)練,那么每個(gè)batch可能得到不同的符號(hào)(正或負(fù)),那么相加一下這個(gè)問(wèn)題還是可以緩解。因此,非0均值這個(gè)問(wèn)題雖然會(huì)產(chǎn)生一些不好的影響,不過(guò)跟上面提到的梯度消失問(wèn)題相比還是要好很多的。
缺點(diǎn)3:耗時(shí)
其解析式中含有冪運(yùn)算,計(jì)算機(jī)求解時(shí)相對(duì)來(lái)講比較耗時(shí)。對(duì)于規(guī)模比較大的深度網(wǎng)絡(luò),這會(huì)較大地增加訓(xùn)練時(shí)間。
缺點(diǎn)4:梯度彌散(死區(qū))
受現(xiàn)有的梯度下降算法所限(嚴(yán)重依賴逐層的梯度計(jì)算值),Sigmoid函數(shù)對(duì)落入 (?∞,?5)∪(5,+∞)(-∞,-5) ∪ (5,+∞)(?∞,?5)∪(5,+∞)的輸入值,梯度計(jì)算為 000,發(fā)生 梯度彌散。因此該函數(shù)存在一正一負(fù) 兩塊“死區(qū)”[藍(lán)框區(qū)域]:
3、tanh函數(shù)
tanh是雙曲函數(shù)中的一種,又名 雙曲正切:
tanh(x)=ex?e?xex+e?x=2sigmoid(2x)?1tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}=2sigmoid(2x)-1tanh(x)=ex+e?xex?e?x?=2sigmoid(2x)?1
導(dǎo)數(shù)為:
tanh′(x)=4e?2x(e?2x+1)2=2tanh(x)(1?tanh(x))tanh'(x)=\frac{4 e^{-2x}}{(e^{-2x}+1)^2}=2tanh(x)(1-tanh(x))tanh′(x)=(e?2x+1)24e?2x?=2tanh(x)(1?tanh(x))
優(yōu)點(diǎn):
- tanh解決了sigmoid的輸出非“零為中心”的問(wèn)題。
缺點(diǎn):
- 依然有sigmoid函數(shù)梯度消失的問(wèn)題。
- 依然指數(shù)運(yùn)算。
4、ReLU函數(shù)
ReLU(Rectified Linear Unit,修正線性單元),是一種線性且不飽和的激活函數(shù)。公式如下:
f(x)=max(0,x)f(x)=max(0,x)f(x)=max(0,x)
導(dǎo)數(shù)如下:
f′(x)={1,if?x>00,if?x≤0f'(x)=\begin{cases} 1, & \text{if $x>0$} \\ 0 , & \text{if $x\leq0$ } \end{cases}f′(x)={1,0,?if?x>0if?x≤0??
優(yōu)點(diǎn)
- ReLU解決了梯度消失的問(wèn)題,至少 xxx 在正區(qū)間內(nèi),神經(jīng)元不會(huì)飽和。
- 由于ReLU線性、非飽和的形式,在SGD中能夠快速收斂。
- 計(jì)算速度要快很多。線性計(jì)算
缺點(diǎn)
- ReLU的輸出不是“零為中心”(Notzero-centered output)。
- 隨著訓(xùn)練的進(jìn)行,可能會(huì)出現(xiàn)神經(jīng)元死亡,權(quán)重?zé)o法更新的情況。(不可逆轉(zhuǎn)的死亡)
- 解釋:訓(xùn)練神經(jīng)網(wǎng)絡(luò)的時(shí)候,一旦學(xué)習(xí)率沒有設(shè)置好,第一次更新權(quán)重的時(shí)候,輸入是負(fù)值,那么這個(gè)含有ReLU的神經(jīng)節(jié)點(diǎn)就會(huì)死亡,再也不會(huì)被激活。
- 因?yàn)?#xff1a;ReLU的導(dǎo)數(shù)在x>0的時(shí)候是1,在x<=0的時(shí)候是0。如果x<=0,那么ReLU的輸出是0,那么反向傳播中梯度也是0,權(quán)重就不會(huì)被更新,導(dǎo)致神經(jīng)元不再學(xué)習(xí)。 也就是說(shuō),這個(gè)ReLU激活函數(shù)在訓(xùn)練中將不可逆轉(zhuǎn)的死亡,導(dǎo)致了訓(xùn)練數(shù)據(jù)多樣化的丟失。
- 在實(shí)際訓(xùn)練中,如果學(xué)習(xí)率設(shè)置的太高,可能會(huì)發(fā)現(xiàn)網(wǎng)絡(luò)中40%的神經(jīng)元都會(huì)死掉,且在整個(gè)訓(xùn)練集中這些神經(jīng)元都不會(huì)被激活。所以,設(shè)置一個(gè)合適的較小的學(xué)習(xí)率,會(huì)降低這種情況的發(fā)生。為了解決神經(jīng)元節(jié)點(diǎn)死亡的情況,有人提出了Leaky ReLU、P-ReLU、R-ReLU、ELU等激活函數(shù)。
5、Leaky ReLU
Leaky ReLU 是 ReLU 激活函數(shù)的改進(jìn)版本,公式如下:
f(x)={x,if?x>0ax,if?x≤0f(x)=\begin{cases} x, & \text{if $x>0$} \\ ax , & \text{if $x\leq0$ } \end{cases}f(x)={x,ax,?if?x>0if?x≤0??
導(dǎo)數(shù)如下:
f(x)={1,if?x>0a,if?x≤0f(x)=\begin{cases} 1, & \text{if $x>0$} \\ a , & \text{if $x\leq0$ } \end{cases}f(x)={1,a,?if?x>0if?x≤0??
優(yōu)點(diǎn)
- 神經(jīng)元不會(huì)出現(xiàn)死亡的情況。
- 對(duì)于所有的輸入,不管是大于等于0還是小于0,神經(jīng)元不會(huì)飽和。
- 由于Leaky ReLU線性、非飽和的形式,在SGD中能夠快速收斂。
- 計(jì)算速度要快很多。只有線性關(guān)系。
缺點(diǎn)
- Leaky ReLU函數(shù)中的 ααα,需要通過(guò)先驗(yàn)知識(shí)人工賦值,通常 α=0.01\alpha=0.01α=0.01。
6、Maxout
Maxout 是 ReLU 的推廣,定義如下:
f(x)=max(w1Tx+b1,w2Tx+b2,?,wnTx+bn)f(x)=max(w^T_1x+b_1,w^T_2x+b_2,?,w^T_nx+b_n)f(x)=max(w1T?x+b1?,w2T?x+b2?,?,wnT?x+bn?)
Maxout 網(wǎng)絡(luò)能夠近似任意連續(xù)函數(shù),且當(dāng)w2,b2,…,wn,bnw_2,b_2,…,w_n,b_nw2?,b2?,…,wn?,bn?為0時(shí),退化為ReLU。
優(yōu)點(diǎn)
- Maxout能夠緩解梯度消失
- 規(guī)避了ReLU神經(jīng)元死亡的缺點(diǎn)
缺點(diǎn)
- 增加了參數(shù)和計(jì)算量。
7、ELU
ELU(Exponential Linear Units,指數(shù)線性單元)。它試圖將激活函數(shù)的輸出平均值接近零,從而加快學(xué)習(xí)速度。同時(shí),它還能通過(guò)正值的標(biāo)識(shí)來(lái)避免梯度消失的問(wèn)題。
公式如下:
?f(x)={x,if?x>0a(ex?1),otherwise?f(x)=\begin{cases} x, & \text{if $x>0$} \\ a(e^x-1) , & \text{otherwise } \end{cases}f(x)={x,a(ex?1),?if?x>0otherwise??
其中,超參數(shù) α\alphaα 常被設(shè)定為 1
導(dǎo)數(shù)如下:
?f′(x)={1,if?x>0aex,otherwise?f'(x)=\begin{cases} 1, & \text{if $x>0$} \\ ae^x , & \text{otherwise } \end{cases}f′(x)={1,aex,?if?x>0otherwise??
優(yōu)點(diǎn)
- 完美解決了死區(qū)問(wèn)題。
- ELU激活函數(shù)的輸出均值是接近于零的
缺點(diǎn)
- 計(jì)算較復(fù)雜。
8、激活函數(shù)的選擇
(1)深度學(xué)習(xí)需要大量時(shí)間處理大量數(shù)據(jù),模型的收斂速度尤為重要。所以,總體來(lái)講,訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)盡量使用 zero-centered 數(shù)據(jù)(預(yù)處理實(shí)現(xiàn)) 和 zero-centered 輸出。
==》盡量選擇輸出具有 zero-centered 特點(diǎn)的激活函數(shù)來(lái)加速模型的收斂速度。
(2)在使用 ReLU 時(shí),小心設(shè)置 learning_rate,而且注意不要出現(xiàn)很多神經(jīng)元死亡。若不好解決,可嘗試 Leaky ReLU、Maxout 等。
(3)最好不使用 sigmoid、tanh
(4)conv -> bn -> relu 標(biāo)配的 module。
四、正則化
正則化是選擇模型的一種方法,具體來(lái)說(shuō),選擇經(jīng)驗(yàn)風(fēng)險(xiǎn)與模型復(fù)雜度同時(shí)較小的模型(防止過(guò)擬合),這樣可以較少泛化誤差而不是訓(xùn)練誤差。
常用正則化方法
- 參數(shù)范數(shù)懲罰:L1正則化、L2正則化;
- 數(shù)據(jù)集增強(qiáng);
- 噪聲添加;
- early stop;
- Dropout層
1、參數(shù)范數(shù)懲罰
參數(shù)范數(shù)懲罰通過(guò)對(duì)目標(biāo)函數(shù) JJJ 添加一個(gè)參數(shù)范數(shù)懲罰 Ω(θ)Ω(θ)Ω(θ),限制模型的學(xué)習(xí)能力。
將正則化歐的目標(biāo)函數(shù)記為 J~\tilde{J}J~:
J~(θ;X,y)=J(θ;X,y)+αΩ(θ)\tilde{J}(\theta;X,y)=J(\theta;X,y)+\alphaΩ(θ)J~(θ;X,y)=J(θ;X,y)+αΩ(θ)
其中 α≥0\alpha\geq0α≥0 是權(quán)衡范數(shù)懲罰項(xiàng) ΩΩΩ 和標(biāo)準(zhǔn)目標(biāo)函數(shù) J(X;θ)J(X;θ)J(X;θ) 相對(duì)貢獻(xiàn)的超參數(shù),通過(guò)調(diào)整 α\alphaα 的大小,可以獲得不同的參數(shù)選擇偏好。
注意:參數(shù)包括模型中每一層仿射變換的權(quán)重和偏置,我們通常只對(duì)權(quán)重做懲罰,而不對(duì)偏置做正則懲罰。因?yàn)榫_擬合偏置所需的數(shù)據(jù)通常比權(quán)重少的多,正則化偏置參數(shù)可能會(huì)導(dǎo)致明顯的欠擬合。
(1)相關(guān)定義
L0范數(shù):權(quán)重向量 WWW 中非0的元素的個(gè)數(shù),通常表示為 ∣∣W∣∣0||W||_0∣∣W∣∣0?。
L1范數(shù):權(quán)值向量 WWW 中各個(gè)元素的絕對(duì)值之和,通常表示為 ∣∣W∣∣1||W||_1∣∣W∣∣1?。
L2范數(shù):權(quán)值向量 WWW 中各個(gè)元素的平方的和的開方值,通常表示為 ∣∣W∣∣2||W||_2∣∣W∣∣2?。
任何的規(guī)則化算子,如果它在 Wi=0W_i=0Wi?=0 處不可微,并且可以分解為一個(gè)“求和”的形式,則該規(guī)則化算子就可以實(shí)現(xiàn)稀疏。
稀疏的好處
-
特征選擇(Feature Selection):能實(shí)現(xiàn)特征的自動(dòng)選擇
稀疏規(guī)則化算子會(huì)學(xué)習(xí)地去掉這些對(duì)最終輸出結(jié)果沒有關(guān)系或者不提供任何信息的特征,也就是把這些特征對(duì)應(yīng)的權(quán)重置為0。 -
可解釋性(Interpretability)
非零權(quán)重的特征為輸出結(jié)果提供的信息是巨大的、決策性的。
(2)L0正則化
從直觀上看,利用非零參數(shù)的個(gè)數(shù),可以很好的來(lái)選擇特征,實(shí)現(xiàn)特征稀疏的效果,具體操作時(shí)選擇參數(shù)非零的特征即可。
但因?yàn)長(zhǎng)0正則化很難求解,是個(gè)NP難問(wèn)題,因此一般采用L1正則化。L1正則化是L0正則化的最優(yōu)凸近似,比L0容易求解,并且也可以實(shí)現(xiàn)稀疏的效果。
(3)L1正則化
L1范數(shù)也稱叫“稀疏規(guī)則算子”(Lasso regularization),L1范數(shù)和 L0范數(shù) 可以實(shí)現(xiàn)稀疏,L1因具有比L0更好的優(yōu)化求解特性而被廣泛應(yīng)用。
(4)L2正則化
L2范數(shù),在回歸中稱為:“嶺回歸” (Ridge Regression) 或 “權(quán)值衰減weight decay”。
讓L2范數(shù)的規(guī)則項(xiàng) ∣∣W∣∣2||W||_2∣∣W∣∣2? 最小,可以使得 WWW 的每個(gè)元素都很小,都接近于0(不會(huì)讓它等于0)。而越小的參數(shù)說(shuō)明模型越簡(jiǎn)單,越簡(jiǎn)單的模型則越不容易產(chǎn)生過(guò)擬合現(xiàn)象。
2、數(shù)據(jù)擴(kuò)增(data agumentation)
較少過(guò)擬合的最簡(jiǎn)單方法:增加訓(xùn)練集樣本,也稱數(shù)據(jù)擴(kuò)增(data agumentation)。但是由于標(biāo)注數(shù)據(jù)昂貴,需要通過(guò)其他方式增加樣本。
- 圖像處理:旋轉(zhuǎn)、翻轉(zhuǎn)、放縮、平移等等。
- GAN(對(duì)抗式生成網(wǎng)絡(luò))
3、噪聲添加
噪聲添加:將其直接添加到學(xué)習(xí)到的權(quán)重上。這項(xiàng)技術(shù)主要被用于循環(huán)神經(jīng)網(wǎng)絡(luò)的情況下。
在某些假設(shè)下,施加于權(quán)重的噪聲可以被解釋為與更傳統(tǒng)的正則化形式等同,鼓勵(lì)要學(xué)習(xí)的函數(shù)保持穩(wěn)定。
4、Dropout
Dropout:在用前向傳播算法和反向傳播算法訓(xùn)練模型時(shí),隨機(jī)的從全連接DNN網(wǎng)絡(luò)中去掉一部分隱含層的神經(jīng)元。
兩種理解:
- 減少神經(jīng)元之間復(fù)雜的共適應(yīng)關(guān)系:在每次訓(xùn)練的時(shí)候使用dropout,每個(gè)神經(jīng)元有一定的概率被移除,這樣可以使得一個(gè)神經(jīng)元的訓(xùn)練不依賴于另外一個(gè)神經(jīng)元,同樣也就使得特征之間的協(xié)同作用被減弱。 Hinton認(rèn)為,過(guò)擬合可以通過(guò)阻止某些特征的協(xié)同作用來(lái)緩解。
- 多模型效果平均的方式。對(duì)于減少測(cè)試集中的錯(cuò)誤,我們可以將多個(gè)不同神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)結(jié)果取平均,而因?yàn)閐ropout的隨機(jī)性,在每次dropout后,網(wǎng)絡(luò)模型可看成不同結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),而要訓(xùn)練的參數(shù)數(shù)目卻是不變的,這就解脫了訓(xùn)練多個(gè)獨(dú)立的不同神經(jīng)網(wǎng)絡(luò)的時(shí)耗問(wèn)題。在測(cè)試輸出的時(shí)候,將輸出權(quán)重乘以保留概率1-p%,從而達(dá)到類似平均的效果。
左邊的圖為一個(gè)完全的全連接層,右邊為應(yīng)用dropout后的全連接層。
做法
- 訓(xùn)練階段:每次更新參數(shù)之前,每個(gè)神經(jīng)元有一定的概率被丟棄,假設(shè)為p%,p可以設(shè)為50或者根據(jù)驗(yàn)證集的表現(xiàn)來(lái)選取,輸入層的p比較小,保留概率接近于1
- 測(cè)試階段不dropout,保留所有單元的權(quán)重,而且要乘以保留概率1-p%,為了保證輸出期望一致。
dropout不只用于前饋神經(jīng)網(wǎng)絡(luò),還可以用于圖模型,比如玻爾茲曼機(jī)。
5、早期停止(early stopping)
早期停止是一種交叉驗(yàn)證策略,將一部分?jǐn)?shù)據(jù)集作為驗(yàn)證集(validation set)。
當(dāng)我們看到驗(yàn)證集上的性能越來(lái)越差時(shí),就停止對(duì)模型的訓(xùn)練。
五、深度模型中的優(yōu)化(待完善)
1、參數(shù)初始化策略
目的:在訓(xùn)練中學(xué)到有用的信息,需要參數(shù)更新時(shí)的梯度不為0。而一般來(lái)講,參數(shù)更新的梯度和反向傳播得到的狀態(tài)梯度以及輸入激活值有關(guān)。
==》初始化條件:
- 各層激活值不會(huì)出現(xiàn)飽和現(xiàn)象(eg: sigmoid、tanh)
- 各層激活值不為0。
(1)全零初始化??
全零初始化:模型無(wú)法更新,而且模型權(quán)重的相同,導(dǎo)致模型的高度對(duì)稱性。
==》需要破壞對(duì)稱性
(2)隨機(jī)初始化 (Random Initialization)
將參數(shù)值(通過(guò)高斯分布或均勻分布)隨機(jī)初始化為 接近0的 一個(gè)很小的隨機(jī)數(shù)(有正有負(fù)),從而使對(duì)稱失效。
(3)Xavier
基本思想:保持輸入和輸出的方差一致,這樣就避免了所有輸出值都趨向于0。
(4)MSRA
(5)bias初始化
通常初始化為0(若初始化為0.01等值,可能并不能得到好的提升,反而可能下降)
(6)小結(jié)
-
Gaussian
滿足mean=0mean=0mean=0,std=1std=1std=1的高斯分布x~N(mean,std)x~N(mean,std)x~N(mean,std) -
Xavier
定義參數(shù)所在層的輸入維度為n,輸出維度為m,那么參數(shù)將以均勻分布的方式在[?6m+n,6m+n][-\sqrt{\frac{6}{m+n}},\sqrt{\frac{6}{m+n}}][?m+n6??,m+n6??]的范圍內(nèi)進(jìn)行初始化。 -
MSRA
滿足x~N(0,σ2)x~N(0,σ2)x~N(0,σ2) 的高斯分布,其中σ=sqrt(2/n)σ = sqrt(2/n)σ=sqrt(2/n) -
Uniform
滿足min=0,max=1的均勻分布。x~U(min,max)x~U(min,max)x~U(min,max)
2、自適應(yīng)學(xué)習(xí)率算法
梯度下降、AdaGrad、RMSProp、Adam;優(yōu)化算法的選擇
3、batch norm層
提出背景、解決什么問(wèn)題、層在訓(xùn)練和測(cè)試階段的計(jì)算公式
4、layer norm層
參考鏈接:
- TensorFlow實(shí)現(xiàn)反向傳播算法詳解
- 詳解機(jī)器學(xué)習(xí)中的梯度消失、爆炸原因及其解決方法
- 梯度爆炸和梯度消失的本質(zhì)原因
- 深度學(xué)習(xí)中Dropout原理解析
- 理解神經(jīng)網(wǎng)絡(luò)中的Dropout
總結(jié)
以上是生活随笔為你收集整理的【NLP】Task5:神经网络基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【LeetCode】687. 最长同值路
- 下一篇: 【数据竞赛】“达观杯”文本智能处理挑战赛