Tensorflow學習筆記day04+神經網絡的激活函數

一、定義

在現實世界中,絕大部分問題都是無法線性分割的, 線性網絡並不能表示複雜數據集中存在的非線性.

因此在設計神經網絡時,激活函數必須是非線性函數,即每個神經元的輸出在加權和以及偏置的基礎上還做了一個非線形變換(通過激活函數),只有這樣整個網絡才變爲非線性.

課外小知識:(線性函數是一條筆直的直線,而非線形函數不是;線性函數之和是線性函數,線性函數的線性函數也是線性函數)

二、分類

目前Tensorflow 提供7種不同的非線性激活函數, tf.nn.relu、tf.sigmoid和tf.tanh是其中比較常用的幾個

Tensorflow也支持使用自己定義的激活函數

2.1 閾值激活函數

這是最簡單的激活函數。

如果神經元的激活值大於零,那麼神經元就會被激活;否則,它還是處於抑制狀態。

這是不可微的, 在x = 0 時, 是不連續的.因此使用這個激活函數來進行基於梯度下降或其變體的訓練是不可能的

2.2 Sigmoid 激活函數

怎麼讀? [sɪgˌmɔɪd]

神經元的輸出由函數 **g(x)=1/(1+exp(-x))**確定

tf.sigmoid(),它提供了 Sigmoid 激活函數。這個函數的範圍在 0 到 1之間:

它很受歡迎, 從曲線來看,它像一個連續版的閾值激活函數。

但是受到梯度消失問題的困擾,即函數的梯度在兩個邊緣附近變爲零。這使得訓練和優化變得困難

2.3 雙曲正切激活函數tanh

(1-exp(-2x)/(1+exp(-2x)))

在形狀上,它類似於 Sigmoid 函數,但是它的中心位置是 0,其範圍是從 -1 到 1

tf.tanh

中心處附近比sigmoid函數相比具有更陡峭的導數

與 Sigmoid 函數一樣,它也受到梯度消失問題的影響

2.4 整流線性單元(ReLU)激活函數

對於負的輸入值,神經元不會激活(輸出爲零),對於正的輸入值,神經元的輸出與輸入值相同

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

ReLU 神經元存在死亡 ReLU 的問題,也就是說,那些沒有激活的神經元的梯度爲零,因此將無法進行任何訓練,並停留在死亡狀態。儘管存在這個問題,但 ReLU 仍是隱藏層最常用的激活函數之一

2.5 Softmax 激活函數

是一個歸一化的指數函數

一個神經元的輸出不僅取決於其自身的輸入值,還取決於該層中存在的所有其他神經元的輸入的總和。這樣做的一個優點是使得神經元的輸出小,因此梯度不會過大。

tf.nn.softmax()

yi =exp(xi​)/Σjexp(xj)

Softmax 激活函數被廣泛用作輸出層的激活函數,該函數的範圍是 [0,1]。在多類分類問題中,它被用來表示一個類的概率。所有單位輸出和總是 1。

三、總結

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

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