最近學習BP神經網絡,網上文章比較參差不齊,對于初學者還是很困惑,本文做一下筆記和總結,方便以后閱讀學習。
一、BP神經網絡的概念
BP神經網絡是一種多層的前饋神經網絡,其主要的特點是:信號是前向傳播的,而誤差是反向傳播的。具體來說,對于如下的只含一個隱層的神經網絡模型:輸入向量應為n個特征
BP神經網絡的過程主要分為兩個階段,第一階段是信號的前向傳播,從輸入層經過隱含層,最后到達輸出層;第二階段是誤差的反向傳播,從輸出層到隱含層,最后到輸入層,依次調節(jié)隱含層到輸出層的權重和偏置,輸入層到隱含層的權重和偏置。
1. 神經元:神經元,或稱神經單元/神經節(jié)點,是神經網絡基本的計算單元,其計算函數稱為激活函數(activation function),用于在神經網絡中引入非線性因素,可選擇的激活函數有:Sigmoid函數、雙曲正切函數(tanh)、ReLu函數(Rectified Linear Units),softmax等。
1.1 Sigmoid函數,也就是logistic函數,對于任意輸入,它的輸出范圍都是(0,1)。公式如下:
Sigmoid的函數圖如上所示,很像平滑版的階躍函數。但是,sigmoid 有很多好處,例如:
(1)它是非線性的
(2)不同于二值化輸出,sigmoid 可以輸出0到 1 之間的任意值。對,跟你猜的一樣,這可以用來表示概率值。
( 3)與 2 相關,sigmoid 的輸出值在一個范圍內,這意味著它不會輸出無窮大的數。但是,sigmoid 激活函數并不完美: 梯度消失。如前面的圖片所示,當輸入值 z 趨近負無窮時,sigmoid 函數的輸出幾乎為0 . 相反,當輸入 z 趨近正無窮時,輸出值幾乎為 1 . 那么這意味著什么?在這兩個極端情況下,對應的梯度很小,甚至消失了。梯度消失在深度學習中是一個十分重要的問題,我們在深度網絡中加了很多層這樣的非線性激活函數,這樣的話,即使第一層的參數有很大的變化,也不會對輸出有太大的影響。換句話講,就是網絡不再學習了,通常訓練模型的過程會變得越來越慢,尤其是使用梯度下降算法時。
1.2 Tanh函數
Tanh 或雙曲正切是另一個深度神經網絡中常用的激活函數。類似于 sigmoid 函數,它也將輸入轉化到良好的輸出范圍內。具體點說就是對于任意輸入,tanh 將會產生一個介于-1 與 1 之間的值。
Tanh函數圖
如前面提及的,tanh 激活函數有點像 sigmoid 函數。非線性且輸出在某一范圍,此處為(-1, 1)。不必意外,它也有跟 sigmoid 一樣的缺點。從數學表達式就可以看出來,它也有梯度消失的問題,以及也需要進行開銷巨大的指數運算。
1.3
ReLU
終于講到了 Relu,人們起初并不覺得它的效果會好過 sigmoid 和 tanh。但是,實戰(zhàn)中它確實做到了。事實上,cs231n 課程甚至指出,應該默認使用 Relu 函數。
ReLU 從數學表達式來看,運算十分高效。對于某一輸入,當它小于0時,輸出為0,否則不變。下面是 ReLU 的函數表達式。Relu(z) = max(0,z)
那么你可能會問,「它是線性函數吧?為何我們說它是非線性函數?」
在線代中,線性函數就是兩個向量空間進行向量加和標量乘的映射。
給定上面的定義,我們知道 max(0, x)是一個分段線性函數。之所以說是分段線性,是因為它在(?∞, 0]或[0,+∞)上符合線性函數的定義。但是在整個定義域上并不滿足線性函數的定義。例如f(?1)+ f(1)≠f (0)
所以 Relu 就是一個非線性激活函數且有良好的數學性質,并且比 sigmoid 和 tanh 都運算得快。除此以外,Relu 還因避免了梯度消失問題而聞名。然而,ReLU 有一個致命缺點,叫「ReLU 壞死」。ReLu 壞死是指網絡中的神經元由于無法在正向傳播中起作用而永久死亡的現象。
更確切地說,當神經元在向前傳遞中激活函數輸出為零時,就會出現這個問題,導致它的權值將得到零梯度。因此,當我們進行反向傳播時,神經元的權重將永遠不會被更新,而特定的神經元將永遠不會被激活。
還有件事值得一提。你可能注意到,不像 sigmoid 和 tanh,Relu 并未限定輸出范圍。這通常會成為一個很大的問題,它可能在另一個深度學習模型如遞歸神經網絡(RNN)中成為麻煩。具體而言,由 ReLU 生成的無界值可能使 RNN 內的計算在沒有合理的權重的情況下發(fā)生數值爆炸。因此反向傳播期間權重在錯誤方向上的輕微變化都會在正向傳遞過程中顯著放大激活值,如此一來學習過程可能就非常不穩(wěn)定。我會嘗試在下一篇博客文章中詳細介紹這一點。(摘自https://my.oschina.net/amui/blog/1633904)
1.4 softmax簡介
Softmax回歸模型是logistic回歸模型在多分類問題上的推廣,在多分類問題中,待分類的類別數量大于2,且類別之間互斥。比如我們的網絡要完成的功能是識別0-9這10個手寫數字,若最后一層的輸出為[0,1,0, 0, 0, 0, 0, 0, 0, 0],則表明我們網絡的識別結果為數字1。
Softmax的公式為
,可以直觀看出如果某一個zj大過其他z,那這個映射的分量就逼近于1,其他就逼近于0,并且對所有輸入數據進行歸一化。
2.權重:
3.偏置
偏置單元(bias unit),在有些資料里也稱為偏置項(bias term)或者截距項(intercept term),它其實就是函數的截距,與線性方程 y=wx+b 中的 b 的意義是一致的。在 y=wx+b中,b表示函數在y軸上的截距,控制著函數偏離原點的距離,其實在神經網絡中的偏置單元也是類似的作用。
因此,神經網絡的參數也可以表示為:(W, b),其中W表示參數矩陣,b表示偏置項或截距項。
2.反向傳播調節(jié)權重和偏置
-
神經網絡
+關注
關注
42文章
4733瀏覽量
100415 -
函數
+關注
關注
3文章
4277瀏覽量
62323
原文標題:一文淺談神經網絡(非常適合初學者)
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論