1. 程式人生 > >機器學習總結(七):基本神經網路、BP演算法、常用啟用函式對比

機器學習總結(七):基本神經網路、BP演算法、常用啟用函式對比

1.   神經網路

(1)為什麼要用神經網路?

對於非線性分類問題,如果用多元線性迴歸進行分類,需要構造許多高次項,導致特徵特多學習引數過多,從而複雜度太高。

(2)常用的啟用函式及其優缺點

階躍函式sgn(x)(理想,但不連續,不光滑);

Sigmoid函式(下圖左):


優點:能夠把輸入的連續實值壓縮到0到1之間;

缺點:(1)容易飽和,當輸入非常大或非常小的時候,神經元的梯度就接近0了,這使得在反向傳播演算法中反向傳播接近於0的梯度,導致最終權重基本沒什麼更新;(2)Sigmoid的輸出不是0均值的,這會導致後層的神經元的輸入是非0均值的訊號,這會對梯度產生影響,假設後層神經元的輸入都為正(e.g. x>0elementwise in f=wTx+b),那麼對w求區域性梯度則都為正,這樣在反向傳播的過程中w要麼都往正方向更新,要麼都往負方向更新,導致有一種捆綁的效果,使得收斂緩慢。  

解決方法:注意引數的初始值設定來避免飽和情況。

Tanh函式(下圖右):

 優點:0均值,能夠壓縮資料到-1到1之間;

 缺點:同Sigmoid缺點第二個,梯度飽和;


ReLU函式


優點:(1)因為是線性,而且梯度不會飽和,所以收斂速度會比Sigmoid/tanh快很多;(2)相比於Sigmoid/tanh需要計算指數等,計算複雜度高,ReLU只需要一個閾值就可以得到啟用值;

缺點:訓練的時候很脆弱,有可能導致神經元壞死。舉個例子:由於ReLU在x<0時梯度為0,這樣就導致負的梯度在這個ReLU被置零,而且這個神經元有可能再也不會被任何資料啟用。如果這個情況發生了,那麼這個神經元之後的梯度就永遠是0了,也就是ReLU神經元壞死了,不再對任何資料有所響應。實際操作中,如果你的learning rate 很大,那麼很有可能你網路中的40%的神經元都壞死了。

解決方法:設定合適的較小的learning rate.

Maxout函式:



優點:ReLU是Maxout的變形,具有ReLU的優點,同時沒有它的缺點,可以擬合任意的凸函式

缺點:把引數double了,造成引數增多。

(3)誤差逆傳播演算法(BP)

資料預處理:歸一化

如何訓練資料:增量學習:一個樣本一個樣本的輸入,調整權重閾值,要求輸入模式要有足夠的隨機性,對輸入模式的噪聲比較敏感,即對於劇烈變化的輸入模式,訓練效果比較差,適合線上處理。批量學習:全部樣本一次性輸入調整,不存在輸入模式次序問題,穩定性好,但是隻適合離線處理。

基本思想:輸出層的預測值與目標值的誤差往回傳播。

兩個過程:(1)工作訊號正向傳遞;(2)誤差訊號反向傳遞。

隱含層節點個數選取經驗: ,m為輸入層節點數,n為輸出層,a為1~10之間的調節常數。

反向傳遞過程:(1)在(0,1)範圍內隨即初始化網路中所有連線權和閾值;(2)對所有的樣本(x,y),計算當前樣本輸出,根據誤差平方和的最速下降方向,連續調整網路的權值和閾值。(這個規則叫 學習規則或Hoff學習規則)。

優點:很強的非線性對映能力,一個3層的BP神經網路能夠實現對任意非線性函式進行逼近。

缺點:(1)容易陷入區域性極小,可以多次隨即初始化;(2)訓練時學習新樣本有遺忘舊樣本的趨勢;(3)訓練次數多使得學習效率低,收斂速度慢。

改進:(1)增加動量項,加快收斂。


(2)“模擬退火”:在每一步都以一定的概率接受比當前解更差的結果,接受次優解;

(3)使用隨機梯度下降,加入隨機因素,有機會跳出區域性極小;

(4)遺傳演算法,逼近全域性最小。

如何防止過擬合:1)早停:將資料集分為訓練集和驗證集,若訓練集誤差降低但驗證集誤差升高,則停止訓練,同時返回最小驗證集誤差的連線權和閾值;(2)正則化:在誤差目標函式後加一個用於描述網路複雜度的部分,L1,L2正則化;(3)Dropout:開始,刪除掉隱藏層隨機選取的一半神經元,然後在這個更改的神經元網路上正向和反向更新,然後再恢復之前刪除過的神經元,重新選取一般神經元刪除,正向反向,更新w,b.重複此過程,最後學習出來的神經網路中的每個神經元都是在一半神經元的基礎上學習的,當所有神經元被恢復後,為了補償,我們把隱藏層的所有權重減半。

L1正則化和L2的區別:

L1範數:向量中各個元素的絕對值和,可以把特徵拉稀疏。L0(向量中非0元素個數)也可實現稀疏,但是難以優化求解,而且L1範數是L0的最優凸近似。

L2範數:向量中各個元素平方和再開方,會把各個維度的權重拉平均一些,抑制住各個維度權重幅度的方差。

為什麼Dropout可以減少overfitting?

每次扔掉了一般隱藏層的神經元,相當於在不同的神經網路訓練了,減少了神經元的依賴性,迫使神經網路去學習更加健碩的特徵。

(4)常用的cost function

均方誤差函式(MSE)(啟用函式選擇sigmoid):

   比如一個神經元,單輸入單輸出,計算代價函式對w和b的導數:

   這樣在更新w和b時,由於sigmoid函式兩邊趨於平緩,導致更新非常慢;

交叉熵代價函式(cross-entropy):


為什麼可以作為代價函式?(1)非負性;(2)當真實輸出a和期望輸出y接近的時候,接近於0;

對w和b求偏導:

優點:誤差大,更新多,誤差小,學習慢

(5)多分類問題softmax

與sigmoid不同的是輸出層函式不同:


特點:每個輸出值都大於等於0,而且總和為1,有概率分佈的特點。

是否有學習慢的問題(取決於對w和b的偏導):

代價函式:


求導:


與誤差有關,不存在

(6)初始化權重

隨機初始化:容易梯度飽和,sigmoid函式特點;

正態分佈初始化:均值為0,標準差為1/sqrt(輸入層節點個數),可以把資料壓縮在-1~1之間,學習過程不會被減慢。

(7)學習率和正則化引數如何設定?

學習率:可以從0.001,0.01,0.1,1,10開始嘗試,如果發現cost開始增大,停止,實驗更小的微調;

正則化引數:先不設定正則項,把學習率調好,然後再實驗1,10,100.找到大致合適的再微調。

其他幾種常見網路:

RBF網路:

基本思想:一種單隱層前饋神經網路,使用徑向基函式作為隱層神經元啟用函式,輸出層是對隱層神經元輸出的線性組合。

函式模型:

隱層的功能:將低維空間通過非線性函式對映到一個高維空間,然後在這個高維空間進行曲線的擬合。

徑向基函式中心如何確定:隨機選擇h個樣本,通過聚類得到h個聚類匯中心;

方差如何確定(cmax為中心之間最大距離,h為隱層節點個數):

 隱含層到輸出層權值如何確定:梯度下降,代價函式為均方誤差。