就是在人工神經(jīng)網(wǎng)絡的神經(jīng)元上運行的函數(shù)器瘪,負責將神經(jīng)元的輸入映射到輸出端翠储。是一個重要的非線性函數(shù),負責提高神經(jīng)網(wǎng)絡的非線性因素橡疼,增加深度網(wǎng)絡解決問題的能力援所。“激活函數(shù)”按照其可導的性能分成兩類——“飽和激活函數(shù)”和“非飽和激活函數(shù)”欣除。
sigmoid tanh
sigmoid和tanh是“飽和激活函數(shù)”住拭,而ReLU及其變體則是“非飽和激活函數(shù)”。使用“非飽和激活函數(shù)”的優(yōu)勢在于兩點:
- 首先历帚,“非飽和激活函數(shù)”能解決所謂的“梯度消失”問題滔岳。
- 其次,它能加快收斂速度挽牢。
Sigmoid函數(shù)需要一個實值輸入壓縮至[0,1]的范圍
σ(x) = 1 / (1 + exp(?x))
tanh函數(shù)需要講一個實值輸入壓縮至 [-1, 1]的范圍
tanh(x) = 2σ(2x) ? 1
tensorflow.nn.sigmoid
tensorflow.nn.tanh
keras.layers.core.Activation('sigmoid')
keras.layers.core.Activation('tanh')
torch.nn.Sigmoid
torch.nn.Tanh
ReLU
ReLU函數(shù)代表的的是“修正線性單元”谱煤,它是帶有卷積圖像的輸入x的最大函數(shù)(x,o)。ReLU函數(shù)將矩陣x內(nèi)所有負值都設為零禽拔,其余的值不變刘离。ReLU函數(shù)的計算是在卷積之后進行的,因此它與tanh函數(shù)和sigmoid函數(shù)一樣奏赘,同屬于“非線性激活函數(shù)”寥闪。這一內(nèi)容是由Geoff Hinton首次提出的。
tensorflow.nn.relu
keras.layers.core.Activation('relu')
torch.nn.ReLU
ELUs
ELUs是“指數(shù)線性單元”磨淌,它試圖將激活函數(shù)的平均值接近零疲憋,從而加快學習的速度。同時梁只,它還能通過正值的標識來避免梯度消失的問題缚柳。根據(jù)一些研究,ELUs分類精確度是高于ReLUs的搪锣。
Leaky ReLUs
ReLU是將所有的負值都設為零秋忙,相反,Leaky ReLU是給所有負值賦予一個非零斜率构舟。Leaky ReLU激活函數(shù)是在聲學模型(2013)中首次提出的灰追。以數(shù)學的方式我們可以表示為:
ai是(1,+∞)區(qū)間內(nèi)的固定參數(shù)。
tensorflow.nn.leaky_relu
keras.layers.advanced_activations.LeakyReLU
torch.nn.LeakyReLU
參數(shù)化修正線性單元(PReLU)
PReLU可以看作是Leaky ReLU的一個變體弹澎。在PReLU中朴下,負值部分的斜率是根據(jù)數(shù)據(jù)來定的,而非預先定義的苦蒿。作者稱殴胧,在ImageNet分類(2015,Russakovsky等)上佩迟,PReLU是超越人類分類水平的關鍵所在团滥。
tensorlayer.layers.PReluLayer
keras.layers.advanced_activations.PReLU
torch.nn.PReLU
隨機糾正線性單元(RReLU)
“隨機糾正線性單元”RReLU也是Leaky ReLU的一個變體。在RReLU中报强,負值的斜率在訓練中是隨機的灸姊,在之后的測試中就變成了固定的了。RReLU的亮點在于躺涝,在訓練環(huán)節(jié)中厨钻,aji是從一個均勻的分布U(I,u)中隨機抽取的數(shù)值。形式上來說坚嗜,我們能得到以下結果:
torch.nn.RReLU
- PReLU中的ai是根據(jù)數(shù)據(jù)變化的夯膀;
- Leaky ReLU中的ai是固定的;
- RReLU中的aji是一個在一個給定的范圍內(nèi)隨機抽取的值苍蔬,這個值在測試環(huán)節(jié)就會固定下來诱建。