本文和大家分享的主要是機器學(xué)習(xí)的激活函數(shù)相關(guān)內(nèi)容,一起來看看吧,希望對大家學(xué)習(xí)機器學(xué)習(xí)有所幫助。
激活函數(shù)將神經(jīng)網(wǎng)絡(luò)最后一層輸出當(dāng)做輸入,進行轉(zhuǎn)換。也用于神經(jīng)網(wǎng)絡(luò)兩層之間。
那么在神經(jīng)網(wǎng)絡(luò)為什么要使激活函數(shù)?
比如在邏輯回歸中,用于將輸出轉(zhuǎn)換為0/1進行分類。在神經(jīng)網(wǎng)絡(luò)中用于確定輸出是yes/no。或者將輸出映射到某一個范圍之間,比如手寫數(shù)字識別中,將輸出映射到0--9之間。
激活函數(shù)一般分類兩類:線性和非線性
線性或恒等激活函數(shù)
如上函數(shù),該輸出不會限制在任何范圍內(nèi),與上述我們的目的不相符。
非線性激活函數(shù)
如上就是非線性激活函數(shù)的例子,在神經(jīng)網(wǎng)絡(luò)中用的最多。它是模型易于泛化或者適應(yīng)各種數(shù)據(jù),并對輸出進行區(qū)分。 對激活函數(shù)有幾個術(shù)語需要了解: 導(dǎo)數(shù)或者微分 :當(dāng)優(yōu)化方法與梯度相關(guān)時,需要求導(dǎo),因此函數(shù)必須可微。 單調(diào)性 :當(dāng)激活函數(shù)是單調(diào)時,單層網(wǎng)絡(luò)能夠保證是凸函數(shù)。 輸出值的范圍
?。?/span> 當(dāng)激活函數(shù)輸出值是 有限 的時候,基于梯度的優(yōu)化方法會更加 穩(wěn)定,因為特征的表示受有限權(quán)值的影響更顯著;當(dāng)激活函數(shù)的輸出是 無限 的時候,模型的訓(xùn)練會更加高效,不過在這種情況小,一般需要更小的learning rate.
下面介紹幾種常見的激活函數(shù):
sigmoid 函數(shù)
如上,輸出永遠在0--1之間,其中在接近0或者1時,變化速度變慢。在模型預(yù)測可能性時有用。 該函數(shù)可微,因此在兩點之間可以計算斜率。該函數(shù)單調(diào)但是其導(dǎo)函數(shù)不是單調(diào)的。 該激活函數(shù)會導(dǎo)致神經(jīng)網(wǎng)絡(luò)在訓(xùn)練時被卡住,部分缺點如下:
1. 當(dāng)輸入過大過小時, 梯度接近0.因此初始值很大時,神經(jīng)元梯度會消失,加大訓(xùn)練難度。
2. 該函數(shù)輸出的均值不為0。因此后一層神經(jīng)元將上一層的非0輸出作為信號輸入,梯度始終為正。
Tanh 雙曲正弦激活函數(shù)
與sigmoid類似,但是比sigmoid效果要好,輸出在-1--1之間。不同與sigmoid,該函數(shù)輸出均值為0. 常用于二分類問題。
Relu(線性整流)激活函數(shù)
目前這是在神經(jīng)網(wǎng)絡(luò)中用的最多的激活函數(shù),大部分卷積神經(jīng)網(wǎng)絡(luò)和深度神經(jīng)網(wǎng)絡(luò)在在使用。 如上,該范圍在0--無窮大之間。 其中該函數(shù)和其倒數(shù)都是單調(diào)的。 部分優(yōu)點如下:
1. 收斂速度相比于sigmoid和Tanh要快很多
2. 相比于sigmoid和Tanh, 由于函數(shù)特性,只需要一個閾值就能得到激活值 同時也有缺點,比如一個非常大的梯度流過一個Relu神經(jīng)元時, 更新參數(shù)以后,由于激活值太大, 導(dǎo)致對后面的數(shù)據(jù)激活困難。
Softmax 激活函數(shù)
softmax用于多分類過程中,它將多個神經(jīng)元的輸出,映射到(0,1)區(qū)間內(nèi),可以看成概率來理解,從而來進行多分類!
上述中為什么會提到導(dǎo)數(shù)或者可微: 當(dāng)在梯度下降中更新梯度時,需要知道曲線的斜率,并進行更新,因為這是下降最快的方向。因此在神經(jīng)網(wǎng)絡(luò)中需要使用到激活函數(shù)的導(dǎo)數(shù)。
來源:網(wǎng)絡(luò)