GELU激活函數(shù)算法
Gaussian Error Linerar Units(GELUS)
論文鏈接:https://arxiv.org/abs/1606.08415
最近在看bert源碼,發(fā)現(xiàn)里邊的激活函數(shù)不是Relu等常見的函數(shù),是一個新的激活函數(shù)GELUs, 這里記錄分析一下該激活函數(shù)的特點。
不管其他領(lǐng)域的鄙視鏈,在激活函數(shù)領(lǐng)域,大家公式的鄙視鏈應(yīng)該是:Elus > Relu > Sigmoid ,這些激活函數(shù)都有自身的缺陷, sigmoid容易飽和,Elus與Relu缺乏隨機因素。
在神經(jīng)網(wǎng)絡(luò)的建模過程中,模型很重要的性質(zhì)就是非線性,同時為了模型泛化能力,需要加入隨機正則,例如dropout(隨機置一些輸出為0,其實也是一種變相的隨機非線性激活), 而隨機正則與非線性激活是分開的兩個事情, 而其實模型的輸入是由非線性激活與隨機正則兩者共同決定的。
GELUs正是在激活中引入了隨機正則的思想,是一種對神經(jīng)元輸入的概率描述,直觀上更符合自然的認識,同時實驗效果要比Relus與ELUs都要好。
翻看bert源碼給出的GELU代碼表示如下:
def gelu(input_tensor): cdf = 0.5 * (1.0 + tf.erf(input_tensor / tf.sqrt(2.0))) return input_tesnsor*cdf
感覺bert源碼中的近似計算更簡單,具體怎么近似的,我猜不出來。
下面貼一些論文的實驗圖,就是證明GELU學(xué)習(xí)更快且更好:
以上就是GELU激活函數(shù)算法的詳細內(nèi)容,更多關(guān)于GELU激活函數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python requests.post()方法中data和json參數(shù)的使用方法
這篇文章主要介紹了Python requests.post()方法中data和json參數(shù)的使用方法,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-08-08Python算法的時間復(fù)雜度和空間復(fù)雜度(實例解析)
算法復(fù)雜度分為時間復(fù)雜度和空間復(fù)雜度,簡單而講時間復(fù)雜度指的是語句執(zhí)行次數(shù),空間復(fù)雜度指的是算法所占的存儲空間,本文通過代碼給大家介紹Python算法的時間復(fù)雜度和空間復(fù)雜度問題,感興趣的朋友一起看看吧2019-11-11python smtplib模塊自動收發(fā)郵件功能(二)
這篇文章主要為大家詳細介紹了python smtplib模塊自動收發(fā)郵件功能的第二篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05