Ⅰ bp神經網路選擇激活sigmoid函數,還有tansig函數的優缺點求告知
(1)對於深度神經網路,中間的隱層的輸出必須有一個激活函數。否則回多個隱層的作用和沒有隱層答相同。這個激活函數不一定是sigmoid,常見的有sigmoid、tanh、relu等。
(2)對於二分類問題,輸出層是sigmoid函數。這是因為sigmoid函數可以把實數域光滑的映射到[0,1]空間。函數值恰好可以解釋為屬於正類的概率(概率的取值范圍是0~1)。另外,sigmoid函數單調遞增,連續可導,導數形式非常簡單,是一個比較合適的函數
(3)對於多分類問題,輸出層就必須是softmax函數了。softmax函數是sigmoid函數的推廣
Ⅱ 神經網路中常見激活函數總結
在多層神經網路中,上一層節點的輸出和下一層節點的輸入之間具有一個函數關系,這個函數就是激活函數。
如果沒有激活函數,再多層數的神經猛凳網路也是線性的,這就和原始的感知簡知畝機一樣了攔森。所以激活函數為神經網路引入的非線性,神經網路強大的擬合能力,激活函數起到了舉足輕重的作用。這也說明激活函數都是非線性的。
數學表達式:
幾何圖像:
缺點:
數學表達式:
幾何圖像:
特點:
相比sigmoid函數,解決了非 zero-centered 問題。但是梯度消失和和冪運算的問題依然存在。
數學表達式:
幾何圖像:
優點:
缺點:
盡管存在兩個問題,但是Relu仍是目前最常用的激活函數。
數學表達式:
Leaky Relu激活函數就是針對Relu的Dead Relu Problem提出的。負半軸是 而不是0, 通常是一個很小的數。
Ⅲ 神經網路之Sigmoid、Tanh、ReLU、LeakyReLU、Softmax激活函數
使用tensorflow實現
Tanh 函數能夠將𝑥 ∈ 𝑅的輸入「壓縮」到[−1,1]區鉛畢脊間,tanh 激活函數可通過Sigmoid 函數縮放槐滲平移後實現。
使用tensorflow實現
它具有單側抑制、相對寬松的興奮邊界等特性。ReLU 函數的設計源自神經科學,計算十分簡單,同時有著優良的梯度特性,在大量的深度學習應用中被驗證非常有效,是應用最廣泛的激活函數之一。
使用tensorflow實現
其中𝑝為用戶自行設置的某較小數值的超參數,如0.02 等。當𝑝 = 0時,LeayReLU 函數退化為ReLU 函數;當𝑝 ≠ 0時,𝑥 < 0能夠獲得較數殲小的梯度值𝑝,從而避免出現梯度彌散現象。
用tensorflow實現
輸出總和為1
為了避免求exp(x)出現溢出的情況,一般需要減去最大值
內容參考:《TensorFlow2深度學習》
Ⅳ 激活函數 sigmoid、tanh、relu
激活函數(activation functions)的目標是,將神經網路非線性化。激活函數是連續的(continuous),且可導的(differential)。
常見的激活函數:sigmoid,tanh,relu。
sigmoid是平滑(smoothened)的階梯函數(step function),可導(differentiable)。sigmoid可以將任何值轉換為0~1概率,用於二分類。細節可以 參考 。
公式:
導數:
導數2:
圖(紅色原函數,藍色導函數):
當使用sigmoid作為激活函數時,隨著神經網路隱含層(hidden layer)層數的增加,訓練誤差反而加大。表現為:
這種現象就是梯度彌散(vanishing gradient)。而另一種情況,梯度爆炸(exploding gradient),則是前面層的梯度,通過訓練變大,導致後面層的梯度,以指數級增大。
由於sigmoid的導數值小於1/4,x變化的速率要快於y變化的速率,隨著層數的增加,連續不斷執行sigmoid函數,就會導致,前面更新較大的幅度,後面更新較小的幅度,因此,網路在學習過程中,更傾向於,更新後面(靠近輸出層)的參數,而不是前面的參數(靠近輸入層)。
sigmoid缺點:
參考1 、 參考2
tanh,即雙曲正切(hyperbolic tangent),類似於幅度增大sigmoid,將輸入值轉換為-1至1之間。tanh的導數取值范圍在0至1之間,優於sigmoid的0至1/4,在一定程度上,減輕了梯度消失的問題。tanh的輸出和輸入能夠保枯慶持非線性單調上升和下降關系,符合BP(back propagation)網路的梯度求解,容錯性好,有界。
公式:
導數:
圖(紅色原函數,藍色導函數):
sigmoid和tanh:
參考1 、 參考2 、 參考3
relu,即Rectified Linear Unit,整流線性單元,激活部分神經元,增加稀疏性,當x小於0時,輸出值為0,當x大於0時,輸出值為x.
公式:
圖:
導數:
圖:
relu對比於sigmoid:
relu的缺點:
在訓練的時候,ReLU單元比較脆弱並且可能「死掉」。舉例來說,當一個很大的梯度沒晌握,流過ReLU的神經元的時候,可能會導致梯度更新到一種特別的狀態,在這種狀態下神經元將無法被其他任何數據點再次激活。如果這種情況發生,那麼從此所以流過這個神經元的梯度將都變成0。也就是說,這個ReLU單元在訓練中將不可逆轉的死亡,因為這導致了數據多樣化的丟失。
如果學謹數習率設置得太高,可能會發現網路中40%的神經元都會死掉(在整個訓練集中這些神經元都不會被激活)。通過合理設置學習率,這種情況的發生概率會降低。
在神經網路中,隱含層的激活函數,最好選擇ReLU。
關於RNN中為什麼選擇tanh,而不是relu, 參考 。