TensorFlow常用激活函數及其特點和用法(6種)詳解

下面認識幾種常見的激活函數:
1.閾值激活函數:這是最簡單的激活函數。在這裏,如果神經元的激活值大於零,那麼神經元就會被激活;否則,它還是處於抑制狀態。下面繪製閾值激活函數的圖,隨着神經元的激活值的改變在 TensorFlow 中實現閾值激活函數:
在這裏插入圖片描述
2.Sigmoid 激活函數:在這種情況下,神經元的輸出由函數 g(x)=1/(1+exp(-x)) 確定。在 TensorFlow 中,方法是 tf.sigmoid,它提供了 Sigmoid 激活函數。這個函數的範圍在 0 到 1 之間:在這裏插入圖片描述
3.雙曲正切激活函數:在數學上,它表示爲 (1-exp(-2x)/(1+exp(-2x)))。在形狀上,它類似於 Sigmoid 函數,但是它的中心位置是 0,其範圍是從 -1 到 1。TensorFlow 有一個內置函數 tf.tanh,用來實現雙曲正切激活函數:
在這裏插入圖片描述
4.線性激活函數:在這種情況下,神經元的輸出與神經元的輸入值相同。這個函數的任何一邊都不受限制

5.整流線性單元(ReLU)激活函數也被內置在 TensorFlow 庫中。這個激活函數類似於線性激活函數,但有一個大的改變:對於負的輸入值,神經元不會激活(輸出爲零),對於正的輸入值,神經元的輸出與輸入值相同在這裏插入圖片描述
6.Softmax 激活函數是一個歸一化的指數函數。一個神經元的輸出不僅取決於其自身的輸入值,還取決於該層中存在的所有其他神經元的輸入的總和。這樣做的一個優點是使得神經元的輸出小,因此梯度不會過大
在這裏插入圖片描述
下面我們逐個對上述函數進行解釋:
閾值激活函數用於 McCulloch Pitts 神經元和原始的感知機。這是不可微的,在 x=0 時是不連續的。因此,使用這個激活函數來進行基於梯度下降或其變體的訓練是不可能的。
Sigmoid 激活函數一度很受歡迎,從曲線來看,它像一個連續版的閾值激活函數。它受到梯度消失問題的困擾,即函數的梯度在兩個邊緣附近變爲零。這使得訓練和優化變得困難。
雙曲正切激活函數在形狀上也是 S 形並具有非線性特性。該函數以 0 爲中心,與 Sigmoid 函數相比具有更陡峭的導數。與 Sigmoid 函數一樣,它也受到梯度消失問題的影響。
線性激活函數是線性的。該函數是雙邊都趨於無窮的 [-inf,inf]。它的線性是主要問題。線性函數之和是線性函數,線性函數的線性函數也是線性函數。因此,使用這個函數,不能表示複雜數據集中存在的非線性。
ReLU 激活函數是線性激活功能的整流版本,這種整流功能允許其用於多層時捕獲非線性。

使用 ReLU 的主要優點之一是導致稀疏激活。在任何時刻,所有神經元的負的輸入值都不會激活神經元。就計算量來說,這使得網絡在計算方面更輕便。

ReLU 神經元存在死亡 ReLU 的問題,也就是說,那些沒有激活的神經元的梯度爲零,因此將無法進行任何訓練,並停留在死亡狀態。儘管存在這個問題,但 ReLU 仍是隱藏層最常用的激活函數之一。
Softmax 激活函數被廣泛用作輸出層的激活函數,該函數的範圍是 [0,1]。在多類分類問題中,它被用來表示一個類的概率。所有單位輸出和總是 1。

總結
神經網絡已被用於各種任務。這些任務可以大致分爲兩類:函數逼近(迴歸)和分類。根據手頭的任務,一個激活函數可能比另一個更好。一般來說,隱藏層最好使用 ReLU 神經元。對於分類任務,Softmax 通常是更好的選擇;對於迴歸問題,最好使用 Sigmoid 函數或雙曲正切函數。

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