1. 程式人生 > 程式設計 >python 深度學習中的4種啟用函式

python 深度學習中的4種啟用函式

這篇文章用來整理一下入門深度學習過程中接觸到的四種啟用函式,下面會從公式、程式碼以及影象三個方面介紹這幾種啟用函式,首先來明確一下是哪四種:

  • Sigmoid函式
  • Tahn函式
  • ReLu函式
  • SoftMax函式

啟用函式的作用

下面影象A是一個線性可分問題,也就是說對於兩類點(藍點和綠點),你通過一條直線就可以實現完全分類。

python 深度學習中的4種啟用函式

當然影象A是最理想、也是最簡單的一種二分類問題,但是現實中往往存在一些非常複雜的線性不可分問題,比如影象B,你是找不到任何一條直線可以將影象B中藍點和綠點完全分開的,你必須圈出一個封閉曲線。

而啟用函式就是幫助"繪製"這個封閉曲線的非線性函式,有了啟用函式的幫助,很多演算法的處理能力會得到加強,也可以處理線性不可分問題。

Sigmoid函式

Sigmoid函式曾在介紹邏輯迴歸時提起過,它的數學表示式為:

python 深度學習中的4種啟用函式

其中 e 為納皮爾常數,其值為2.7182... 它的影象如下:

python 深度學習中的4種啟用函式

可以觀察出影象的一些特點:

  • 曲線的值域為(0,1)
  • 當x = 0時,Sigmoid函式值為0.5
  • 隨著 x 不斷增大,Sigmoid函式值無限趨近於1
  • 隨著 x 不斷減小,Sigmoid函式值無限趨近於0

對於梯度下降法而言,資訊的更新很大程度上都取決於梯度,而Sigmoid函式一個很明顯的缺點就是當函式值特別靠近0或1這兩端時,因為它的曲線已經近乎平緩,所以此時的梯度幾乎為0,這樣非常不利於權重的更新,從而就會導致模型不收斂。

Sigmoid函式的程式碼如下:

import numpy as np
def tanh(x):
 return (exp(x)-exp(-x))/(exp(x)+exp(-x))

Tanh函式

Tanh函式是雙曲正切函式,它的的數學表示式為:

python 深度學習中的4種啟用函式

Tanh函式和Sigmoid函式非常相近,這點從影象上可以很好的體現:

python 深度學習中的4種啟用函式

這兩個函式相同的是,當輸入的 x 值很大或者很小時,對應函式輸出的 y 值近乎相等,同樣的缺點也是梯度特別小,非常不利於權重的更新;不同的是Tanh函式的值域為(-1,1),並且當 x = 0 時,輸出的函式值為0。

Tanh函式的程式碼如下:

import numpy as np
def tanh(x):
 return (exp(x)-exp(-x))/(exp(x)+exp(-x))

ReLu函式

ReLu是線性整流函式,又稱為修正性線性單元,它的函式的數學表示式為

python 深度學習中的4種啟用函式

Tanh是一個分段函式,它的影象如下:

python 深度學習中的4種啟用函式

影象很容易理解,若輸入的 x 值小於0,則輸出為也為0;若輸入的 x 值大於0,則直接輸出 x 值,需要注意的是ReLu函式在x = 0 處不連續(不可導),但同樣也可以作為啟用函式。

與Sigmoid函式和Tanh函式相比,ReLu函式一個很明顯的優點就是在應用梯度下降法是收斂較快,當輸入值為整數時,不會出現梯度飽和的問題,因為大於0的部分是一個線性關係,這個優點讓ReLu成為目前應用較廣的啟用函式。

ReLu函式的程式碼如下:

import numpy as np
def relu(x):
 return np.maximum(0,x)

SoftMax函式

分類問題可以分為二分類問題和多分類問題,Sigmoid函式比較適合二分類問題,而SoftMax函式更加適合多分類問題。
SoftMax函式的數學表示式為:

python 深度學習中的4種啟用函式

其中Vi表示分類器的輸出,i表示類別索引,總的類別個數為C,Si表示當前元素的指數與所有元素指數和的比值。概括來說,SoftMax函式將多分類的輸出值按比例轉化為相對概率,使輸出更容易理解和比較。

為了防止SoftMax函式計算時出現上溢位或者下溢位的問題,通常會提前對 V 做一些數值處理,即每個 V 減去 V 中的最大值,假設D=max(V),SoftMax函式數學表示式更改為:

python 深度學習中的4種啟用函式

因為SoftMax函式計算的是概率,所以無法用影象進行展示,SoftMax函式的程式碼如下:

import numpy as np
def softmax(x):
 D = np.max(x)
 exp_x = np.exp(x-D)
 return exp_x / np.sum(exp_x)

以上就是python 深度學習中的4種啟用函式的詳細內容,更多關於python 啟用函式的資料請關注我們其它相關文章!