神經網絡常見名詞小結

若發現有違反侵權地方,請通知我刪除!謝謝

Preprocess_data(數據預處理)

數據預處理具有很重要的意義,由於直接得到的數據具有很大差異性,數據的歸一化有利於算法達到最優的效果。不同的數據具有不同的數據特性,其預處理技術也不一樣。以圖片爲例,會對圖像進行平均歸一化處理。常用的有mean image(圖像均值法)和mean channel(通道均值法)。Mean image: 對所有圖片求平均值得到mean image,再利用每張圖片減去均值圖像進行中心化處理。優點:圖片整體數據歸一化。缺點:當圖片數量過大,存在溢出的風險,且計算量較大。(AlexNet 採用過此方法)Mean channel:每張圖片的三通道分別求通道平均值得到一個(x’,y’,z’),使該圖片每個像素點減去該值得到一副處理後的圖像。優點:計算量小,不存在計算溢出,圖像處理主流預處理方法。缺點:整體歸一化不如Mean image,但對實驗結果幾乎沒有影響。(VGGNet 採用)。


Weights and Bisas Initialization(權值的初始化)

權值初始化的好壞直接影響到模型訓練的好壞。一個壞的權值設置可能會導致網絡不收斂。權值設置是一個經驗問題,一般來說,權值的設定不能太大,太大容易導致參數爆炸(深層網絡時層層累加最後結果會boom),這個問題在sigmoid,tan(h(x))等激活函數中還會導致網絡不收斂。詳細參考激活函數。權值也不能設置全相同或全0。這樣會導致輸出的網絡中每個神經元得到相同的梯度。常規的做法是採用Xavier init,即通常採用(0,1)之間較小的元素來初始化權值。 權值矩陣通常爲: W = 0.01*np.random.randn(D,H);其中randn()表示產生標準的正太分佈隨機數,D,H爲矩陣表示矩陣的大小D。這樣使得每個神經元的權重向量被初始化爲多維的高斯隨機抽樣向量,所以,神經元在輸入空間中指向具有隨機性,具有更好的魯棒性。當然這不是最好的權值初始化方法,在不同的學習特徵和激活函數中,權值的初始化方法也不同。偏置矩陣b的設置,在一般的過程設置中經常把b初始化爲0.原因是在權重初始化中提供了權重的對稱性。但是在人們使用relu激活函數,爲了確保不使大量的神經元初始化後輸出爲0經常將b初始化爲0.01。


activeFunction(激活函數)從網絡結構方面來講,激活函數的作用是引入非線性的作用來使數據可分,沒有激活函數網絡僅是一個線性分類器。從數據角度來講:激活函數的作用是把數據映射到高維的空間中進而使數據變得線性可分。激活函數的目的不是爲了想去激活什麼,重點在函數,函數即映射,而是如何把激活的神經元的特徵通過函數的特徵把其映射出來(保留需要的特徵)它是神經元處理非線性可分數據的關鍵。下圖是神經元基本結構。設輸入爲矩陣X(x0,x1,x2…xn),權值矩陣爲W(w0,w1,w2….wn),所以神經元本體的輸入值爲矩陣


經過激活函數f得到其輸出值爲f(T)。


  再簡單舉個實例來了解下激活函數的功能,如下圖二所示,下面數據不能線性可分。爲了能把它分開,設計一個激活函數其中a是激活閾值。同時設計一個網絡如圖3所示。


分別將A,B,C,D四個點的座標輸入進去,我們可以得到如下的表

因此,從第三層的輸入,這樣我們可以在空間上將其表示出來。從圖4可以看到,我們很容易找出一個平面將ABCD分爲BC 和 AD兩部分。從這個角度看激活函數是一種映射,是非線性的因素變得線性可分。

從第三層的輸出來看,這就是所說的分類了,bc分爲0類,ad分爲1類,其在平面上的表示如圖所示。從這方面可以看出,激活函數是提供非線性因素。使分離面擬合分類數據。


下面介紹幾種經典的激活函數:


此函數值域處於(0,1)之間,並不中心對稱。且兩段趨於平滑,函數處於飽和狀態。當值處於兩段時,梯度趨於0,很難下降。會造成梯度消失。由於映射趨於過於飽和,導致信息會丟失。

2.改進的Sigmoid:tan(h(x)),這個函數處於(-1,1)之間,且中心對稱。但是仍舊沒有解決飽和問題,收斂速度較慢。

3.Relu:較常使用的激活函數,也是現在主流的激活函數。其數學表達式爲:f(x) = max(0,x);如下圖所示:



優點:

收斂較快,只有梯度爲0和1兩種情況;在正半軸方向沒有飽和區域。梯度不會消失。

缺點:

不是中心對稱,不是理想的模型,輸出均值不接近零。

2.    前向傳播時沒有被激活的神經元在bp時,它會被kill掉。不會進行參數的調整。

爲了修正Relu失活問題,減少神經元在訓練中不被激活的情況,有設計出了Leaky-Relu和PRelu,前者是後者的特例,PRelu 的數學表達式如下。

4.PRelu : f(x) =max(ax,x); 其中a處於(0,1),當a = 0.01時是leakyRelu.。

其中不同層之間的a可以不同,a的值也是出於動態更新的。其更新公式如下所示:

其中u爲動量,e爲學習率

不斷更新a,會把a推向於0。但有實驗表明,PRelu和Relu的實驗結果幾乎沒有啥影響。

5.ELU 這更是一個比較神奇的激活函數。其激活函數數學表達式如下所示:


其函數圖像:

圖 ELU激活函數圖

右側現行部分是ELU能緩解梯度消失,左側軟飽和讓ELU對輸入變換和噪聲變得更有魯棒性,ELU的輸出均值爲0.接近於理想模型,收斂更快。

以上只是提出的集中較爲常見的激活函數,其它激活函數還有maxout,cRelu等等。激活函數的選取對網絡是否收斂有着重大影響,因此要慎重選擇。


Gradient descent(梯度下降)

梯度下降是一個最優化算法,梯度下降目的是尋找函數的極小值點。能找到極小值點的原因是負梯度方向是函數值下降最快的方向(泰勒公式展開),這裏涉及到一個求凸函數的最小解的問題。值得注意的是,並非所有的數據集我們都能求得最優解,即達到損失函數最少的那個解。現在的梯度下降方法只是在求一個最優化的近似解。且不斷提升其下降收斂的速度。這裏介紹幾種常見的梯度下降的方法。

Batch gradient descent(整體梯度下降):每一次參數的更新都要利用全部的訓練數據集來計算損失函數的梯度。當數據樣本夠大時,整體梯度下降會變得十分緩慢。

Stochastic gradient descent(隨機梯度下降):SGD,它在執行梯度下降時只隨機從訓練樣本中挑選部分來參與到損失函數的梯度計算中。這是一種抽樣思想,以部分代替整體。但可能會造成造成局部最優的解。其數學表達式如下:

 其中 u爲學習率(learning_rate),爲在t時刻的梯度, 爲調整的方向大小,爲t時刻的向量。
 注意:針對SGD的局部最優問題其實在擁有大量數據集的網絡中中這個問題不會出現的很明顯。梯度圖出現的將不再是溝壑,而更像是一個碗,雖然這個碗的底部並非是圓滑的,存在多個局部最優值,但其得到的最後的損失函數值是相近的。因此局部最優影響不大。

Momentum(動量法):SGD存在一個缺點,更新的方向是完全依賴於當前的選取的樣本batch的方向。因此會存在反覆的震盪,Momentum是對SGD的算法的一個優化,即在上一次梯度下降的方向基礎上進行梯度方向的微調整。其數學表達式如下所示。

其中mu是一個超參數,一般設置爲0.9左右, 爲t時刻的梯度方向,d 爲此刻batch的梯度方向。這個表達式可以用物理來理解:假設有一個鐘擺,其運動有慣性,來回擺動,但是在擺動過程中存在有摩擦力。其摩擦係數爲mu,同時爲了使其停下來,對其施加一個的力,其造成的加速度爲learning_rate。所以我們可以理解這是在最初選取的樣本的方向上增加一個便宜的加速度用來修正其下降方向。

此外還存在AdaGrad, AdaDelta ,牛頓法,RMSProp等梯度下降的方法。

Dropout

Dropout的思想是在每層的反饋中隨機的滅活一些神經元參與本輪的權值參數的調整。這樣做的目的是防止過擬合。實驗者在研究中發現,表示一個圖像的特徵其實並不需要所有的神經元來表示,同時本輪滅活一些神經元參與進梯度的求和可以減少網絡對本張圖像特徵的依賴,進而可以學習更多的特徵來表示目標物體。換個角度看,我們也可以發現隨機滅活一些神經元相當於對每張圖片構建了一個各自的小的學習網絡。我們的網絡其實就是有這些小的網絡組成的大的網絡。Dropout的使用大大的提高了網絡的泛化性和魯棒性。


Batch Normalization

思想:在網絡的每一層輸入的時候,又插入了一個歸一化層(均值爲0,方差爲1),也就是先做一個歸一化處理,然後再進入網絡的下一層。

但這樣在A中所學習到的特徵,被強制歸一化處理,標準差限制在1內後被破壞,於是爲了能保留所在本層所學習到的特徵,作者引入了可學習參數 ,其公式如下所示:


這樣每個神經元都存在一對參數。其中

Batch Normalization的前向傳導公式就是:


BN處理後的層,在training過程中存在mini-batch的概念,但是在測試階段我們一般只有一個樣本,在測試樣本中,前向傳導的標準差和均值呀從哪裏選取。其實網絡訓練完之後,標準差和方差都是固定的。我們可以採用這些數值來作爲測試樣本所需要的均值、標準差,於是最後測試階段的u和σ 計算公式如下:


簡單對於均值來說直接計算所有batch u值的平均值;然後對於標準偏差採用每個batch σB的無偏估計。


Liner Classifier  Softmax /svm

Svm和softmax分類器的劃分其實是根據其損失函數的不同來劃分的。採用折葉函數作爲損失函數的成爲SVM,使用交叉熵損失作爲分類器的成爲softmax分類器。

Svm:svm獲取每個label的評分值:其評分計算公式爲:


並且希望正確分類的label評分值要大於其它類評分至少一個Delta。其損失函數的表達式如下 :


其中:是第i類的損失值,是正確分類的第i類,j是錯分爲 類的第j個分錯的樣本; 分別表示其錯誤樣本和正確樣本的得分(正確樣本中的最高,平均,最低得分);是超參數,可以設置,這裏假設爲0;

在上述函數中,我們可以得到,當分錯類的樣本的評分小於正確樣本的評分距離小於 時,SVM不對予理會,其損失爲零。當分錯類的樣本的得分 大於正確分類樣本得分 的評分距離大於或等於 時,其損失爲纔會對其處理。


圖 支持向量機損失函數處理圖

注意:這裏正對每一個類的評分標準都是不一樣的。不同的類的劃分其W是不一樣的。得分最高只是在該類分類標準下才實現的。如下圖所示(圖來自cs231n lessons)。

圖多SVM分類示意圖

當存在多個分類是時,其損失函數如下所示:


在這裏我們要考慮一個問題,肯定存在多個不同的W使得分類函數的損失最小,同時對於線性分類器來說,線性擴大其w是不會影響其分類結果的,因此通過添加正則化懲罰R(w),可以限制W的大小。 其表達式如下。


這裏R(w)函數的設置可以根據實際情況來,不過實驗表明一般設置爲w平方較好。所以完整的多svm分類器的損失函數爲:


Softmax: 線性分類器,其思想是最大化每類分類的概率,詳細推導過程可以查看:http://blog.csdn.net/statdm/article/details/7585153中線性分類器。這裏面涉及到信息論和概率論的知識。

其中是對圖片給予其i標籤的正確概率。其目標好似在調整參數W,使得正確分類對應的概率最大化。

交叉熵損失函數:

其中和上面的是一樣的,也類似。這裏最大化概率對數,則要最小化其負的概率對數。

總結:SVM注重局部的點,對分類邊界的數據較爲敏感。而Softmax分類更加註重整體,且能提供這個標記屬於每一類的直觀概率性。

Regress/classifer

迴歸問題和分類問題在我看來是同一個問題的不同方面,各自的側重點不同。這兩個是相似的。且在一定情況下可以將回歸問題轉換成分類問題。


圖 迴歸和分類圖

分類問題:即將目標打上幾類標籤,其值一般是離散的[1]。如上圖所示。其中的點劃分爲藍色和紅色的,其值離散的爲藍紅。從其網絡結構上講,分類問題一般在網絡的最後一層會添加分類器如softmax,svm等。其最終的結果只有一個,對或錯,沒有相近的概念。

迴歸問題:說迴歸,不如說是數據擬合更直觀。迴歸是利用已有的數據進而找去其數據背後的規律(函數),迴歸分爲線性迴歸和非線性迴歸。迴歸是輸出的結果是一個連續的值。上圖所示的直線l是一個線性迴歸,大致的擬合數據點。其值是一種逼近的預測。在其最後的網絡結構中是不需要添加分類器的。其可以用來做目標檢測,天氣,房價預測等。


參考文獻:

[1] Yann LeCun, Yoshua Bengio,Geoffrey Hinton. Deep learning [J].Nature 521,436-444(28 May 2015)

[2] Ioffe S, Szegedy C. Batch Normalization: Accelerating Deep NetworkTraining by Reducing Internal Covariate Shift[J]. Computer Science, 2015.

[3] Fei-Fei Li, Andrej Karpathy,Justin Johnson, etc. CS231n: Convolutional Neural Networks forVisual Recognition[V].2015

[4] Sebastian Ruder. An overview of gradient descentoptimization algorithms [Blog].

http://sebastianruder.com/optimizing-gradient-descent/index.html#fn:16 ,2015

還有csdn,知乎一些論壇博客。

 




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章