深度學習中的啟用函式

2021-08-08 18:06:40 字數 2812 閱讀 3677

摘要: 正如我們的人腦一樣,在乙個層次上和神經元網路中有數百萬個神經元,這些神經元通過一種稱之為synapses(突觸)的結構彼此緊緊相連。它可以通過 axons(軸突),將電訊號從乙個層傳遞到另乙個層。這就是我們人類學習 ...

技術什麼是人工

神經網路?

現在,我相信我們大家都很熟悉什麼是a-nn了,但接下來請允許我按照自己的理解給a-nn下個定義——它是乙個強健有力的,同時也非常複雜的

機器學習技術,它可以模仿人類的大腦,繼而模仿大腦的運作。

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

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

什麼是啟用函式,它在神經網路模型中是如何使用的?

啟用函式(activation functions)對於人工神經網路模型去學習、理解非常複雜和非線性的函式來說具有十分重要的作用。它們將非線性特性引入到我們的網路中。其主要目的是將a-nn模型中乙個節點的輸入訊號轉換成乙個輸出訊號。該輸出訊號現在被用作堆疊中下乙個層的輸入。

而在a-nn中的具體操作是這樣的,我們做輸入(x)和它們對應的權重(w)的乘積之和,並將啟用函式f(x)應用於其獲取該層的輸出並將其作為輸入饋送到下乙個層。

問題是,為什麼我們不能在不啟用輸入訊號的情況下完成此操作呢?

深度學習(deep learning),來理解一些複雜的事情,一些相互之間具有很多隱藏層的非線性問題,而這也可以幫助我們了解複雜的資料。

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

而這一切都歸結於這一點,我們需要應用啟用函式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

·sigmoids函式飽和且kill掉梯度。

·sigmoids函式收斂緩慢。

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

雙曲正切函式——tanh:其數學公式是f(x)= 1 - exp(-2x)/ 1 + exp(-2x)。現在它的輸出是以0中心的,因為它的值區間在-1到1之間,即-1

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

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函式。

問題是哪乙個更好用呢?

這個問題的答案就是,現在我們應該使用只應用於隱藏層的relu函式。當然,如果我們的模型在訓練過程中遇到死亡神經元,我們就應該使用leaky relu函式或maxout函式。

而考慮到現實的情況,sigmoid函式和tanh函式是不適用的,因為梯度消失問題(vanishing gradient problem)是乙個很嚴重的問題,會在訓練乙個神經網路模型中導致更多問題。

深度學習中的啟用函式

如下圖,在神經元中,輸入的 inputs 通過加權,求和後,還被作用了乙個函式,這個函式就是啟用函式 activation function。如果不使用啟用函式,這種情況下每一層輸出都是上一層輸入的線性函式。無論神經網路有多少層,輸出都是輸入的線性組合。如果使用的話,啟用函式給神經元引入了非線性因素...

深度學習 啟用函式

如下圖,在神經元中,輸入的 inputs 通過加權,求和後,還被作用了乙個函式,這個函式就是啟用函式 activation function。啟用函式的這些特性可以很好地解釋我們為什麼要用啟用函式。函式公式和圖表如下圖 在sigmod函式中我們可以看到,其輸出是在 0,1 這個開區間內,這點很有意思...

深度學習 啟用函式

主要作用 加入非線性因素,彌補線性模型表達不足的缺陷 sigmoid函式 隨著 x xx 的趨近正 負無窮,y yy 對應的值越來越接近 1 1,趨近飽和 因此當 x xx 100 和 x xx 1000 的差別不大,這個特性丟掉了 x xx 1000 的資訊 tanh函式 對sigmoid函式的值...