NLP中啟用函式的理解

2021-10-02 00:04:26 字數 1665 閱讀 7238

1、啟用函式將線性變換轉變成非線性。

y =σ

(xw+

b)y=\sigma(xw+b)

y=σ(xw

+b)xw+

bxw+b

xw+b

是在x基礎上做的線性變換(仿射變換),總體來說做的平移、旋轉和縮放,加入啟用函式後,原來的變換是非線性的。

上式也可以理解為,在x

xx基礎上先過mlp,再加啟用函式。在實際訓練中,發現乙個問題,假設w

ww初始化權重集中在0附近(正交初始化或者其他方法),不加啟用函式時,w

ww的經多次訓練後的權重資料集中在0附近,與初始化差異不大;加任意啟用函式後,w

ww的經多次訓練後的權重資料被拉長,呈紡錘形。

原因分析:mlp層的作用類似做一次仿射變換。在經過mlp後,若不加啟用函式,仿射變換不起作用,表現在w

ww權重更新與原始差異不大;若加啟用函式,啟用函式起到擠壓mlp輸出的作用。反過來想,w

ww被拉長的部分,正是mlp輸出被啟用函式擠壓或裁剪的部分,因為$w $的變化大對應著其導數大,更新的幅度就大。

所以,應用mlp層後,最好加啟用函式。

2、以relu函式為例

r el

u(x)

=0&, x < 0 \\ x&, x\ge 0 \end \right.

relu(x

)={0

x​,x

<0,

x≥0​

啟用函式幹的事,總結起來就兩件:裁剪和擠壓

若沒有啟用函式,只用線性變換,對於如下二分類問題,分類結果如下

若採用relu啟用函式,在大於0的地方不變,小於0的地方歸到0,單側抑制(梯度為0)。下圖中,直線左側歸為正類,右側歸為負類,但是由於單側抑制,右側負類的梯度不反向傳播,相當於relu啟用函式在這裡砍一刀,只關注左側部分。假設x([batch, seq, hidden_dim]),產生relu(x)時會經過hidden_dim次啟用,也就是砍hidden_dim次刀。

經過relu啟用函式後的二分類影象如下,可以很明顯的看出,分類邊界是個多邊形,像砍過一樣。relu啟用函式起裁剪作用。

3、tanh啟用函式

可以看出tanh啟用函式,在(-1,1)內變化比較迅速,而且並不像relu函式單側抑制,所以經過tanh啟用後的輸出應該比較平滑,如下

另一方面,tanh函式在(-∞

\infty

∞,-1)和(1,+∞

\infty

∞)變化較小(梯度接近於0),相當於將輸出都擠壓到單位球上,關注點都放在零點附近。所以tanh啟用函式主要起擠壓作用。

NLP複習 常用啟用函式的比較

sigmoid的導數的影象 缺點 x較大時,導數接近0,導致引數長時間得不到更新。因此除了輸出層是乙個二分類問題,其他基本不用它。pytorch torch.sigmoid tanh導數影象 優缺點 解決了sigmoid函式的不是zero centered輸出問題 y軸方向均值為0 然而仍有梯度消失...

重新理解啟用函式

神經網路裡引入啟用函式的目的 a.不使用啟用函式,每一層輸出都是上層輸入的線性函式,無論神經網路有多少層,輸出都是輸入的線性組合。b.使用啟用函式,能夠給神經元引入非線性因素,使得神經網路可以任意逼近任何非線性函式,這樣神經網路就可以利用到更多的非線性模型中。啟用函式需要具備以下幾點性質 1.連續並...

深入理解啟用函式

說起神經網路肯定會降到神經函式,看了很多資料,也許你對啟用函式這個名詞會感覺很困惑,它為什麼叫啟用函式?它有什麼作用呢?看了很多書籍上的講解說會讓神經網路變成很豐富的演算法,還有的會說讓神經網路的表達能力更強大了,是不是很籠統,看到這些不要煩躁,要有耐心。國內學習深度學習,我看多最好的課程,能看的明...