TensorFlow六种激活函数
TensorFlow六種激活函數(shù)
每個(gè)神經(jīng)元都必須有激活函數(shù)。神經(jīng)元提供了模擬復(fù)雜非線性數(shù)據(jù)集所必需的非線性特性。該函數(shù)取所有輸入的加權(quán)和,進(jìn)而生成一個(gè)輸出信號(hào)。把它看作輸入和輸出之間的轉(zhuǎn)換。使用適當(dāng)?shù)募せ詈瘮?shù),可以將輸出值限定在一個(gè)定義的范圍內(nèi)。
如果 xi 是第 j 個(gè)輸入,Wj 是連接第 j 個(gè)輸入到神經(jīng)元的權(quán)重,b 是神經(jīng)元的偏置,神經(jīng)元的輸出(在生物學(xué)術(shù)語(yǔ)中,神經(jīng)元的激活)由激活函數(shù)決定,并且在數(shù)學(xué)上表示如下:
這里,g 表示激活函數(shù)。激活函數(shù)的參數(shù) ΣWjxj+b 被稱為神經(jīng)元的活動(dòng)。
這里對(duì)給定輸入刺激的反應(yīng)是由神經(jīng)元的激活函數(shù)決定的。有時(shí)回答是二元的(是或不是)。例如,當(dāng)有人開(kāi)玩笑的時(shí)候…要么不笑。在其他時(shí)候,反應(yīng)似乎是線性的,例如,由于疼痛而哭泣。有時(shí),答復(fù)似乎是在一個(gè)范圍內(nèi)。
模仿類似的行為,人造神經(jīng)元使用許多不同的激活函數(shù)。將學(xué)習(xí)如何定義和使用 TensorFlow 中的一些常用激活函數(shù)。
下面認(rèn)識(shí)幾種常見(jiàn)的激活函數(shù):
-
閾值激活函數(shù):這是最簡(jiǎn)單的激活函數(shù)。在這里,如果神經(jīng)元的激活值大于零,那么神經(jīng)元就會(huì)被激活;否則,它還是處于抑制狀態(tài)。下面繪制閾值激活函數(shù)的圖,隨著神經(jīng)元的激活值的改變?cè)?TensorFlow 中實(shí)現(xiàn)閾值激活函數(shù):
上述代碼的輸出如下圖所示:
-
Sigmoid 激活函數(shù):在這種情況下,神經(jīng)元的輸出由函數(shù) g(x)=1/(1+exp(-x)) 確定。在 TensorFlow 中,方法是 tf.sigmoid,它提供了 Sigmoid 激活函數(shù)。這個(gè)函數(shù)的范圍在 0 到 1 之間:
在形狀上,它看起來(lái)像字母 S,因此名字叫 Sigmoid:
- 雙曲正切激活函數(shù):在數(shù)學(xué)上,它表示為 (1-exp(-2x)/(1+exp(-2x)))。在形狀上,它類似于 Sigmoid 函數(shù),但是它的中心位置是 0,其范圍是從 -1 到 1。TensorFlow 有一個(gè)內(nèi)置函數(shù) tf.tanh,用來(lái)實(shí)現(xiàn)雙曲正切激活函數(shù):
以下是上述代碼的輸出:
-
線性激活函數(shù):在這種情況下,神經(jīng)元的輸出與神經(jīng)元的輸入值相同。這個(gè)函數(shù)的任何一邊都不受限制:
-
整流線性單元(ReLU)激活函數(shù)也被內(nèi)置在 TensorFlow 庫(kù)中。這個(gè)激活函數(shù)類似于線性激活函數(shù),但有一個(gè)大的改變:對(duì)于負(fù)的輸入值,神經(jīng)元不會(huì)激活(輸出為零),對(duì)于正的輸入值,神經(jīng)元的輸出與輸入值相同:
以下是 ReLU 激活函數(shù)的輸出:
- Softmax 激活函數(shù)是一個(gè)歸一化的指數(shù)函數(shù)。一個(gè)神經(jīng)元的輸出不僅取決于其自身的輸入值,還取決于該層中存在的所有其他神經(jīng)元的輸入的總和。這樣做的一個(gè)優(yōu)點(diǎn)是使得神經(jīng)元的輸出小,因此梯度不會(huì)過(guò)大。數(shù)學(xué)表達(dá)式為 yi =exp(xi)/Σjexp(xj):
以下是上述代碼的輸出:
下面我們逐個(gè)對(duì)上述函數(shù)進(jìn)行解釋:
? 閾值激活函數(shù)用于 McCulloch Pitts 神經(jīng)元和原始的感知機(jī)。這是不可微的,在 x=0 時(shí)是不連續(xù)的。因此,使用這個(gè)激活函數(shù)來(lái)進(jìn)行基于梯度下降或其變體的訓(xùn)練是不可能的。
? Sigmoid 激活函數(shù)一度很受歡迎,從曲線來(lái)看,它像一個(gè)連續(xù)版的閾值激活函數(shù)。它受到梯度消失問(wèn)題的困擾,即函數(shù)的梯度在兩個(gè)邊緣附近變?yōu)榱恪_@使得訓(xùn)練和優(yōu)化變得困難。
? 雙曲正切激活函數(shù)在形狀上也是 S 形并具有非線性特性。該函數(shù)以 0 為中心,與 Sigmoid 函數(shù)相比具有更陡峭的導(dǎo)數(shù)。與 Sigmoid 函數(shù)一樣,它也受到梯度消失問(wèn)題的影響。
? 線性激活函數(shù)是線性的。該函數(shù)是雙邊都趨于無(wú)窮的 [-inf,inf]。它的線性是主要問(wèn)題。線性函數(shù)之和是線性函數(shù),線性函數(shù)的線性函數(shù)也是線性函數(shù)。因此,使用這個(gè)函數(shù),不能表示復(fù)雜數(shù)據(jù)集中存在的非線性。
? ReLU 激活函數(shù)是線性激活功能的整流版本,這種整流功能允許其用于多層時(shí)捕獲非線性。
使用 ReLU 的主要優(yōu)點(diǎn)之一是導(dǎo)致稀疏激活。在任何時(shí)刻,所有神經(jīng)元的負(fù)的輸入值都不會(huì)激活神經(jīng)元。就計(jì)算量來(lái)說(shuō),這使得網(wǎng)絡(luò)在計(jì)算方面更輕便。
ReLU 神經(jīng)元存在死亡 ReLU 的問(wèn)題,也就是說(shuō),那些沒(méi)有激活的神經(jīng)元的梯度為零,因此將無(wú)法進(jìn)行任何訓(xùn)練,并停留在死亡狀態(tài)。盡管存在這個(gè)問(wèn)題,但 ReLU 仍是隱藏層最常用的激活函數(shù)之一。
? Softmax 激活函數(shù)被廣泛用作輸出層的激活函數(shù),該函數(shù)的范圍是 [0,1]。在多類分類問(wèn)題中,它被用來(lái)表示一個(gè)類的概率。所有單位輸出和總是 1。
總結(jié)
神經(jīng)網(wǎng)絡(luò)已被用于各種任務(wù)。這些任務(wù)可以大致分為兩類:函數(shù)逼近(回歸)和分類。根據(jù)手頭的任務(wù),一個(gè)激活函數(shù)可能比另一個(gè)更好。一般來(lái)說(shuō),隱藏層最好使用 ReLU 神經(jīng)元。對(duì)于分類任務(wù),Softmax 通常是更好的選擇;對(duì)于回歸問(wèn)題,最好使用 Sigmoid 函數(shù)或雙曲正切函數(shù)。
總結(jié)
以上是生活随笔為你收集整理的TensorFlow六种激活函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 感知机神经网络
- 下一篇: TensorFlow单层感知机实现