常用几种激活函数的总结
目錄
一、激活函數(shù)是什么
二、為什么要用到激活函數(shù)呢
三、常用的激活函數(shù)
sigmoid函數(shù)
Tanh函數(shù)
?ReLU函數(shù)
一、激活函數(shù)是什么
所謂激活函數(shù)(Activation Function),就是在人工神經(jīng)網(wǎng)絡(luò)的神經(jīng)元上運(yùn)行的函數(shù),負(fù)責(zé)將神經(jīng)元的輸入映射到輸出端。
激活函數(shù)對于人工神經(jīng)網(wǎng)絡(luò)模型去學(xué)習(xí)、理解非常復(fù)雜和非線性的函數(shù)來說具有十分重要的作用。它們將非線性特性引入到我們的網(wǎng)絡(luò)中。在神經(jīng)元中,輸入的 inputs 通過加權(quán),求和后,還被作用了一個(gè)函數(shù),這個(gè)函數(shù)就是激活函數(shù)。引入激活函數(shù)是為了增加神經(jīng)網(wǎng)絡(luò)模型的非線性。沒有激活函數(shù)的每層都相當(dāng)于矩陣相乘。就算你疊加了若干層之后,無非還是個(gè)矩陣相乘罷了。
二、為什么要用到激活函數(shù)呢
如果不用激活函數(shù),每一層輸出都是上層輸入的線性函數(shù),無論神經(jīng)網(wǎng)絡(luò)有多少層,輸出都是輸入的線性組合。
如果使用的話,激活函數(shù)給神經(jīng)元引入了非線性因素,使得神經(jīng)網(wǎng)絡(luò)可以任意逼近任何非線性函數(shù),這樣神經(jīng)網(wǎng)絡(luò)就可以應(yīng)用到眾多的非線性模型中。
三、常用的激活函數(shù)
-
sigmoid函數(shù)
也稱為S型生長曲線
sigmod函數(shù)的求導(dǎo):
在sigmod函數(shù)中我們可以看到,其輸出是在(0,1)這個(gè)開區(qū)間內(nèi),而這(0,1)之間的數(shù)值,可以聯(lián)想到概率。 sigmoid函數(shù)的缺陷:
1) 當(dāng)輸入稍微遠(yuǎn)離了坐標(biāo)原點(diǎn),函數(shù)的梯度就變得很小了,幾乎為零。在神經(jīng)網(wǎng)絡(luò)反向傳播的過程中,我們都是通過微分的鏈?zhǔn)椒▌t來計(jì)算各個(gè)權(quán)重w的微分的。當(dāng)反向傳播經(jīng)過了sigmod函數(shù),這個(gè)鏈條上的微分就很小很小了,況且還可能經(jīng)過很多個(gè)sigmod函數(shù),最后會(huì)導(dǎo)致權(quán)重w對損失函數(shù)幾乎沒影響,這樣不利于權(quán)重的優(yōu)化,這個(gè)問題叫做梯度飽和,也可以叫梯度彌散。
2) 函數(shù)輸出不是以0為中心的,這樣會(huì)使權(quán)重更新效率降低。
3) sigmod函數(shù)要進(jìn)行指數(shù)運(yùn)算,這個(gè)對于計(jì)算機(jī)來說是比較慢的。
-
Tanh函數(shù)
Tanh函數(shù)的導(dǎo)數(shù):
tanh是雙曲正切函數(shù),tanh函數(shù)和sigmod函數(shù)的曲線是比較相近的。首先相同的是,這兩個(gè)函數(shù)在輸入很大或是很小的時(shí)候,輸出都幾乎平滑,梯度很小,也就是斜率很小,不利于權(quán)重更新;不同的是輸出區(qū)間,tanh的輸出區(qū)間是在(-1,1)之間,而且整個(gè)函數(shù)是以0為中心的,這個(gè)特點(diǎn)比sigmod的好。
一般二分類問題中,隱藏層用tanh函數(shù),輸出層用sigmod函數(shù)。不過這些也都不是一成不變的,具體使用什么激活函數(shù),還是要根據(jù)具體的問題來具體分析,還是要靠調(diào)試的。
? ? ?ReLU函數(shù)
ReLU----Rectified Linear Unit(修正線性單元)
ReLU函數(shù)的導(dǎo)數(shù):
優(yōu)點(diǎn):
1.在輸入為正數(shù)的時(shí)候,就不會(huì)出現(xiàn)梯度飽和的情況 2.計(jì)算速度要快很多,ReLU只有線性關(guān)系,不管是前向傳播還是反向傳播,都要比sigmoid和tanh函數(shù)快很多,因?yàn)檫@兩種是指數(shù)計(jì)算,速度肯定比計(jì)算線性要慢。
缺點(diǎn): 1.當(dāng)輸入是負(fù)數(shù)的時(shí)候,ReLU是完全不被激活的,這就表明一旦輸入到了負(fù)數(shù),ReLU就會(huì)死掉。這樣在前向傳播過程中,還不算什么問題,有的區(qū)域是敏感的,有的是不敏感的。但是到了反向傳播過程中,輸入負(fù)數(shù),梯度就會(huì)完全到0,這個(gè)和sigmod函數(shù)、tanh函數(shù)有一樣的問題。 2.我們發(fā)現(xiàn)ReLU函數(shù)的輸出要么是0,要么是正數(shù),這也就是說,ReLU函數(shù)也不是以0為中心的函數(shù)。
總結(jié)
以上是生活随笔為你收集整理的常用几种激活函数的总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吴恩达神经网络和深度学习——第二周笔记
- 下一篇: 吴恩达神经网络和深度学习——第三周笔记