tft每日頭條

 > 生活

 > 哪個函數不能用于激活函數

哪個函數不能用于激活函數

生活 更新时间:2024-06-16 10:49:10

哪個函數不能用于激活函數(什麼是激活函數)1

圖:pixabay

什麼是人工神經網絡?

現在,我相信我們大家都很熟悉什麼是A-NN了,但接下來請允許我按照自己的理解給A-NN下個定義——它是一個強健有力的,同時也非常複雜的機器學習技術,它可以模仿人類的大腦,繼而模仿大腦的運作。

正如我們的人腦一樣,在一個層次上和神經元網絡中有數百萬個神經元,這些神經元通過一種稱之為synapses(突觸)的結構彼此緊緊相連。它可以通過 Axons(軸突),将電信号從一個層傳遞到另一個層。這就是我們人類學習事物的方式。 每當我們看到、聽到、感覺和思考時,一個突觸(電脈沖)從層次結構中的一個神經元被發射到另一個神經元,這使我們能夠從我們出生的那一天起,就開始學習、記住和回憶我們日常生活中的東西。

好的,接下來我保證大家看到的不再是生物學領域的知識了。

什麼是激活函數,它在神經網絡模型中是如何使用的?

激活函數(Activation functions)對于人工神經網絡模型去學習、理解非常複雜和非線性的函數來說具有十分重要的作用。它們将非線性特性引入到我們的網絡中。其主要目的是将A-NN模型中一個節點的輸入信号轉換成一個輸出信号。該輸出信号現在被用作堆疊中下一個層的輸入。

哪個函數不能用于激活函數(什麼是激活函數)2

而在A-NN中的具體操作是這樣的,我們做輸入(X)和它們對應的權重(W)的乘積之和,并将激活函數f(x)應用于其獲取該層的輸出并将其作為輸入饋送到下一個層。

問題是,為什麼我們不能在不激活輸入信号的情況下完成此操作呢?

如果我們不運用激活函數的話,則輸出信号将僅僅是一個簡單的線性函數。線性函數一個一級多項式。現如今,線性方程是很容易解決的,但是它們的複雜性有限,并且從數據中學習複雜函數映射的能力更小。一個沒有激活函數的神經網絡将隻不過是一個線性回歸模型(Linear regression Model)罷了,它功率有限,并且大多數情況下執行得并不好。我們希望我們的神經網絡不僅僅可以學習和計算線性函數,而且還要比這複雜得多。同樣是因為沒有激活函數,我們的神經網絡将無法學習和模拟其他複雜類型的數據,例如圖像、視頻、音頻、語音等。這就是為什麼我們要使用人工神經網絡技術,諸如深度學習(Deep learning),來理解一些複雜的事情,一些相互之間具有很多隐藏層的非線性問題,而這也可以幫助我們了解複雜的數據。

那麼為什麼我們需要非線性函數?

非線性函數是那些一級以上的函數,而且當繪制非線性函數時它們具有曲率。現在我們需要一個可以學習和表示幾乎任何東西的神經網絡模型,以及可以将輸入映射到輸出的任意複雜函數。神經網絡被認為是通用函數近似器(Universal Function Approximators)。這意味着他們可以計算和學習任何函數。幾乎我們可以想到的任何過程都可以表示為神經網絡中的函數計算。

而這一切都歸結于這一點,我們需要應用激活函數f(x),以便使網絡更加強大,增加它的能力,使它可以學習複雜的事物,複雜的表單數據,以及表示輸入輸出之間非線性的複雜的任意函數映射。因此,使用非線性激活函數,我們便能夠從輸入輸出之間生成非線性映射。

激活函數的另一個重要特征是:它應該是可以區分的。我們需要這樣做,以便在網絡中向後推進以計算相對于權重的誤差(丢失)梯度時執行反向優化策略,然後相應地使用梯度下降或任何其他優化技術優化權重以減少誤差。

隻要永遠記住要做:

“輸入時間權重,添加偏差和激活函數”

最流行的激活函數類型

1.Sigmoid函數或者Logistic函數

2.Tanh — Hyperbolic tangent(雙曲正切函數)

3.ReLu -Rectified linear units(線性修正單元)

Sigmoid激活函數:它是一個f(x)= 1/1 exp(-x)形式的激活函數。它的值區間在0和1之間,是一個S形曲線。它很容易理解和應用,但使其不受歡迎的主要原因是:

·梯度消失問題

·其次,它的輸出不是以0為中心。它的梯度更新在不同的方向上且走得太遠。 0 <output <1,使優化更加困難。

·Sigmoids函數飽和且kill掉梯度。

·Sigmoids函數收斂緩慢。

哪個函數不能用于激活函數(什麼是激活函數)3

現在我們該如何解決上述問題?

雙曲正切函數——Tanh:其數學公式是f(x)= 1 - exp(-2x)/ 1 exp(-2x)。現在它的輸出是以0中心的,因為它的值區間在-1到1之間,即-1 <output <1。 因此,在該方法中優化更容易一些,從而其在實踐應用中總是優于Sigmoid函數。 但它依然存在着梯度消失問題。

哪個函數不能用于激活函數(什麼是激活函數)4

那麼我們該如何處理和糾正梯度消失問題呢?

ReLu -Rectified linear units(線性修正單元):其實在過去幾年中它就已經非常受歡迎了。最近證明,相較于Tanh函數,它的收斂性提高了6倍。隻要R(x)= max(0,x),即如果x <0,R(x)= 0,如果x> = 0,則R(x)= x。因此,隻看這個函數的數學形式,我們就可以看到它非常簡單、有效。其實很多時候我們都會注意到,在機器學習和計算機科學領域,最簡單、相容的技術和方法才是首選,才是表現最好的。因此,它可以避免和糾正梯度消失問題。現如今,幾乎所有深度學習模型現在都使用ReLu函數。

但它的局限性在于它隻能在神經網絡模型的隐藏層中使用。

因此,對于輸出層,我們應該使用Softmax函數來處理分類問題從而計算類的概率。而對于回歸問題,它隻要簡單地使用線性函數就可以了。

ReLu函數的另一個問題是,一些梯度在訓練過程中可能很脆弱,甚至可能會死亡。它可以導緻權重更新,這将使其永遠不會在任何數據點上激活。簡單地說ReLu可能會導緻死亡神經元。

為了解決這個問題,我們引進了另一個被稱為Leaky ReLu的修改函數,讓它來解決死亡神經元的問題。它引入了一個小斜坡從而保持更新值具有活力。

然後,我們還有另一個變體,它形成于ReLu函數和Leaky ReLu函數的結合,我們稱之為Maxout函數。

哪個函數不能用于激活函數(什麼是激活函數)5

結論

問題是哪一個更好用呢?

這個問題的答案就是,現在我們應該使用隻應用于隐藏層的ReLu函數。當然,如果我們的模型在訓練過程中遇到死亡神經元,我們就應該使用leaky ReLu函數Maxout函數。

而考慮到現實的情況,Sigmoid函數和Tanh函數是不适用的,因為梯度消失問題(vanishing Gradient Problem)是一個很嚴重的問題,會在訓練一個神經網絡模型中導緻更多問題。

作者:Anish Singh Walia

來源:Medium

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved