SOTA啟用函式學習

2022-05-18 18:57:06 字數 1727 閱讀 5607

除了之前較為流行的relu啟用函式,最近又新出了幾個效果較好的啟用函式

一、bert啟用函式 - gelu(gaussian error linear units)高斯誤差線性單元

數學公式如下:

x是服從標準正態分佈的變數

近似的數學計算公式如下:

函式圖如下

橙色曲線為:gelu

藍色曲線為:mish函式

特性:當輸入x減小的時候,輸入會有乙個更高的概率被dropout掉,這樣的啟用變換就會隨機依賴於輸入了,在啟用中引入了隨機正則的思想,是一種對神經元輸入的概率描述。但是其實gelu相比mish函式就要差一點,首先在大於0階段,mish函式的梯度是要略大於gelu,在負軸階段mish函式比gelu要晚一點趨近於0,也就是神經元能夠晚一點死掉。

import

math

import

numpy as np

from matplotlib import

pyplot as plt

defmish(x):

return x * math.tanh(math.log(1+math.exp(x)))

defgelu(x):

return 0.5*x*(1+math.tanh(math.sqrt(2/math.pi)*(x+0.044715*x**3)))

x = np.linspace(-10,10,1000)

y=z=

for i in

x:plt.plot(x,y)

plt.plot(x,z)

plt.grid()

plt.ylim(-1,6)

plt.xlim(-7,7)

plt.show()

二、mish啟用函式公式如下:

函式圖如下:

橙色曲線為:ln(1+e^(x))

藍色曲線為:mish函式

import

math

import

numpy as np

from matplotlib import

pyplot as plt

defmish(x):

return x * math.tanh(math.log(1+math.exp(x)))

defln_e(x):

return math.log(1+math.exp(x))

x = np.linspace(-10,10,1000)

y=z=

for i in

x:plt.plot(x,y)

plt.plot(x,z)

plt.grid()

plt.show()

深度學習 啟用函式

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

深度學習 啟用函式

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

深度學習 啟用函式

啟用函式又稱 非線性對映函式 是深度卷積神經網路中不可或缺的模組。可以說,深度網路模型強大的表示能力大部分便是由啟用函式的非線性單元帶來的。這部分共介紹7個啟用函式 sigmoid函式,tanh函式,relu函式,leaky relu函式,引數化relu,隨機化relu和指數化線性單元 elu si...