22个激活函数,ReLU、RReLU、LeakyReLU、PReLU、Sofplus、ELU、CELU、SELU、GELU、ReLU6、Sigmoid、Tanh、Softsign、Hardtanh等
轉(zhuǎn)自:https://www.pianshen.com/article/33331174884/
1.22.Linear常用激活函數(shù)
1.22.1.ReLU torch.nn.ReLU()
1.22.2.RReLU torch.nn.RReLU()
1.22.3.LeakyReLU torch.nn.LeakyReLU()
1.22.4.PReLU torch.nn.PReLU()
1.22.5.Sofplus torch.nn.Softplus()
1.22.6.ELU torch.nn.ELU()
1.22.7.CELU torch.nn.CELU()
1.22.8.SELU torch.nn.SELU()
1.22.9.GELU torch.nn.GELU()
1.22.10.ReLU6 torch.nn.ReLU6()
1.22.11.Sigmoid torch.nn.Sigmoid()
1.22.12.Tanh torch.nn.Tanh()
1.22.13.Softsign torch.nn.Softsign()
1.22.14.Hardtanh torch.nn.Hardtanh()
1.22.15.Threshold torch.nn.Threshold()
1.22.16.Tanhshrink torch.nn.Tanhshrink()
1.22.17.Softshrink torch.nn.Softshrink()
1.22.18.Hardshrink torch.nn.Hardshrink()
1.22.19.LogSigmoid torch.nn.LogSigmoid()
1.22.20.Softmin torch.nn.Softmin()
1.22.21.Softmax torch.nn.Softmax()
1.22.22.LogSoftmax torch.nn.LogSoftmax()
1.22.Linear常用激活函數(shù)
1.22.1.ReLU torch.nn.ReLU()
ReLU的函數(shù)圖示如下:
1.22.2.RReLU torch.nn.RReLU()
ReLU有很多變種, RReLU是Random ReLU的意思,定義如下:
對(duì)RReLU而言, a是一個(gè)在給定范圍內(nèi)的隨機(jī)變量(訓(xùn)練), 在推理時(shí)保持不變。同LeakyReLU不同的是,RReLU的a是可以learnable的參數(shù),而LeakyReLU的a是固定的。
1.22.3.LeakyReLU torch.nn.LeakyReLU()
這里a是固定值,LeakyReLU的目的是為了避免激活函數(shù)不處理負(fù)值(小于0的部分梯度為0),通過(guò)使用negative slope,其使得網(wǎng)絡(luò)可以在傳遞負(fù)值部分的梯度,讓網(wǎng)絡(luò)可以學(xué)習(xí)更多的信息,在一些應(yīng)用中確實(shí)有較大的益處。
1.22.4.PReLU torch.nn.PReLU()
不同于RReLU的a可以是隨機(jī)的,PReLU中的a就是一個(gè)learnable的參數(shù)。
需要注意的是:上述激活函數(shù)(即ReLU、LeakyReLU、PReLU)是尺度不變(scale-invariant)的。
1.22.5.Sofplus torch.nn.Softplus()
Softplus作為損失函數(shù)在StyleGAN1和2中都得到了使用,下面分別是其表達(dá)式和圖解。
Softplus 是ReLU的光滑近似,可以有效的對(duì)輸出都為正值的網(wǎng)絡(luò)進(jìn)行約束。
隨著β的增加,Softplus與ReLU越來(lái)越接近。
1.22.6.ELU torch.nn.ELU()
ELU不同于ReLU的點(diǎn)是,它可以輸出小于0的值,使得系統(tǒng)的平均輸出為0。因此,ELU會(huì)使得模型收斂的更加快速,其變種(CELU , SELU)只是不同參數(shù)組合ELU。
1.22.7.CELU torch.nn.CELU()
跟ELU相比,CELU是將ELU中的exp(x)變?yōu)閑xp(x/a)
1.22.8.SELU torch.nn.SELU()
跟ELU相比,SELU是將ELU乘上了一個(gè)scala變量。
1.22.9.GELU torch.nn.GELU()
其中(x)Φ(x)是高斯分布的累積分布函數(shù)(Cumulative Distribution Function for Gaussian Distribution)。
1.22.10.ReLU6 torch.nn.ReLU6()
ReLU6是在ReLU的基礎(chǔ)上,限制正值的上限6. one-stage的目標(biāo)檢測(cè)網(wǎng)絡(luò)SSD中用這個(gè)損失函數(shù)。
1.22.11.Sigmoid torch.nn.Sigmoid()
Sigmoid是將數(shù)據(jù)限制在0到1之間。而且,由于Sigmoid的最大的梯度為0.25,隨著使用sigmoid的層越來(lái)越多,網(wǎng)絡(luò)就變得很難收斂。
因此,對(duì)深度學(xué)習(xí),ReLU及其變種被廣泛使用避免收斂困難的問(wèn)題。
1.22.12.Tanh torch.nn.Tanh()
Tanh就是雙曲正切,其輸出的數(shù)值范圍為-1到1. 其計(jì)算可以由三角函數(shù)計(jì)算,也可以由如下的表達(dá)式來(lái)得出:
Tanh除了居中(-1到1)外,基本上與Sigmoid相同。這個(gè)函數(shù)的輸出的均值大約為0。因此,模型收斂速度更快。注意,如果每個(gè)輸入變量的平均值接近于0,那么收斂速度通常會(huì)更快,原理同Batch Norm。
1.22.13.Softsign torch.nn.Softsign()
同Sigmoid有點(diǎn)類(lèi)似,但是它比Sigmoid達(dá)到漸進(jìn)線(xiàn)(asymptot n. [數(shù)] 漸近線(xiàn))的速度更慢,有效的緩解了梯度消失的問(wèn)題(gradient vanishing problem (to some extent).)。
1.22.14.Hardtanh torch.nn.Hardtanh()
如下圖所示,Hardtanh就是1個(gè)線(xiàn)性分段函數(shù)[-1, 1],但是用戶(hù)可以調(diào)整下限min_val和上限max_val,使其范圍擴(kuò)大/縮小。
當(dāng)權(quán)值保持在較小的范圍內(nèi)時(shí),Hardtanh的工作效果出奇的好。
1.22.15.Threshold torch.nn.Threshold()
這種Threshold的方式現(xiàn)在很少使用,因?yàn)榫W(wǎng)絡(luò)將不能傳播梯度回來(lái)。這也是在60年代和70年代阻止人們使用反向傳播的原因,因?yàn)楫?dāng)時(shí)的科研人員主要使用的是Binary的神經(jīng)元,即輸出只有0和1,脈沖信號(hào)。
1.22.16.Tanhshrink torch.nn.Tanhshrink()
除了稀疏編碼外,很少使用它來(lái)計(jì)算潛在變量(latent variable)的值。
1.22.17.Softshrink torch.nn.Softshrink()
這種方式目前也不怎么常用,其目的是通過(guò)設(shè)置λ,將靠近0的值直接強(qiáng)制歸0,由于這種方式對(duì)小于0的部分沒(méi)有約束,所以效果不太好。
1.22.18.Hardshrink torch.nn.Hardshrink()
同Softshrink類(lèi)似,除了稀疏編碼以外,很少被使用。
1.22.19.LogSigmoid torch.nn.LogSigmoid()
LogSigmoid是在Sigmoid基礎(chǔ)上,wrap了一個(gè)對(duì)數(shù)函數(shù)。
這種方式用作損失函數(shù)比較多
1.22.20.Softmin torch.nn.Softmin()
將數(shù)字變成概率分布,類(lèi)似Softmax。
1.22.21.Softmax torch.nn.Softmax()
1.22.22.LogSoftmax torch.nn.LogSoftmax()
同LogSigmoid類(lèi)似,LogSoftmax用作損失函數(shù)比較多
總結(jié)
以上是生活随笔為你收集整理的22个激活函数,ReLU、RReLU、LeakyReLU、PReLU、Sofplus、ELU、CELU、SELU、GELU、ReLU6、Sigmoid、Tanh、Softsign、Hardtanh等的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 男生为什么不能喝豆浆?
- 下一篇: 做手工辣条胚子可以保软几天,但一调办后就