NLP Gelu高斯誤差線性單元解釋

2021-09-27 04:14:01 字數 1141 閱讀 6173

不管其他領域的鄙視鏈,在啟用函式領域,大家公式的鄙視鏈應該是:elus > relu > sigmoid ,這些啟用函式都有自身的缺陷, sigmoid容易飽和,elus與relu缺乏隨機因素。

在神經網路的建模過程中,模型很重要的性質就是非線性,同時為了模型泛化能力,需要加入隨機正則,例如dropout(隨機置一些輸出為0,其實也是一種變相的隨機非線性啟用), 而隨機正則與非線性啟用是分開的兩個事情, 而其實模型的輸入是由非線性啟用與隨機正則兩者共同決定的。

gelus正是在啟用中引入了隨機正則的思想,是一種對神經元輸入的概率描述,直觀上更符合自然的認識,同時實驗效果要比relus與elus都要好。

gelus其實是 dropout、zoneout、relus的綜合,gelus對於輸入乘以乙個0,1組成的mask,而該mask的生成則是依概率隨機的依賴於輸入。假設輸入為x, mask為m,則m服從乙個伯努利分布(φ(x), φ(x)=p(x<=x),x服從標準正太分布 ,x服從標準正太分布),這麼選擇是因為神經元的輸入趨向於正太分布,這麼設定使得當輸入x減小的時候,輸入會有乙個更高的概率被dropout掉,這樣的啟用變換就會隨機依賴於輸入了。

數學表達如下:

gelu(x)=xp(x<=x)=xφ(x)

這裡φ(x) \phi(x)φ(x)是正太分布的概率函式,可以簡單採用正太分布n(0,1) \n(0,1)n(0,1), 要是覺得不刺激當然可以使用引數化的正太分布n(μ,σ) \n(\mu,\sigma)n(μ,σ), 然後通過訓練得到μ,σ \mu,\sigmaμ,σ。

對於假設為標準正太分布的gelu(x) gelu(x)gelu(x), **中提供了近似計算的數學公式,如下:

gelu(x)=0.5x(1+tanh[2/π−−−√(x+0.044715x3)]) gelu(x) = 0.5x(1+tanh[\sqrt(x+0.044715x^3)])

gelu(x)=0.5x(1+tanh[ 

2/π​    

(x+0.044715x 

3)])

翻看bert原始碼給出的gelu**表示如下:

def gelu(input_tensor):

cdf = 0.5 * (1.0 + tf.erf(input_tensor / tf.sqrt(2.0)))

return input_tesnsor*cdf

線性高斯系統

我們平時熟知的卡爾曼濾波就是高斯濾波的一種,因為它是基於高斯分布的。用高斯函式來表示後驗具有很好的影響,因為它的是單峰,有單一的極大值。高斯濾波中的引數的均值和方差稱為矩引數,分別為一階矩和二階矩 ps 這一點的理解上非常重要 xt 為狀態向量,ut為t時刻的控制向量。at為n n 的方陣,n為狀態...

線性回歸 誤差項分析

當我們用線性回歸模型去做回歸問題時,會接觸到誤差項這個概念 對於乙個線性回歸模型 y i t xi y theta tx y i txi其實往往不能準確 資料的真實值,這是很正常的,各種各樣的因素會使真實值很難符合線性分布,但對於有些資料分布總體會符合線性分布,但不能完全接近,這是很合理的。對於那些...

非線性單元

在這篇文章當中,我們就來簡單 一下神經網路當中的非線性單元 通常用的非線性單元有兩類sigmoid非線性單元,rulu非線性單元 這個問題其實涉及到乙個非常基本的問題 神經網路為什麼可以用來做分類?sigmoid函式是這樣乙個函式 函式影象是這樣的 這個函式可以把 範圍當中的值對映到 0,1 有興趣...