Google提出的新型激活函数:Swish
簡介
Swish是Google在10月16號提出的一種新型激活函數,其原始公式為:f(x)=x * sigmod(x),變形Swish-B激活函數的公式則為f(x)=x * sigmod(b * x),其擁有不飽和,光滑,非單調性的特征,而Google在論文中的多項測試表明Swish以及Swish-B激活函數的性能即佳,在不同的數據集上都表現出了要優于當前最佳激活函數的性能.
論文地址:https://arxiv.org/abs/1710.05941
詳細講述
激活函數常在神經網絡中用于添加非線性因素,可以將激活函數定義為一個幾乎處處可微的函數:h : R → R .[1].
激活函數存在飽和問題,當激活函數滿足上述公式第一種情況時,稱之為右飽和,反之為左飽和.
如果激活函數在非極限狀態下存在一個常數C可以證明,在x大于或小于該常數C時,h(x)的一次導數存在恒等于零的情況時,則稱h(x)為右硬飽和函數或左硬飽和函數.否則稱其為軟飽和函數.
因為反向傳播算法的計算方式,可證明飽和激活函數會導致神經網絡的性能大幅度下降.從而產生梯度消失問題,如常見的sigmod或tanh函數都存在該問題.
而現在深度神經網絡中常用的激活函數為ReLU激活函數,其存在有上界,無下界,光滑的特點,其變種擁有在大多數數據集上的最佳性能.但是其變種復雜多樣想要使用仍然存在很多的調試問題.而新的Swish函數則不同,其Swish-B形式在谷歌論文中的大型數據集即各種神經網絡中中擁有絕對的優勢,雖然現在還沒有數學證明,但是其實踐結果卻可能意味著,我們之后再也不需要測試很多的激活函數了,這大大降低了我們的工作量.
Swish與ReLU一樣有下界而無上界,但是其非單調性確與其他常見的激活函數不同,通知其也擁有平滑和一階導數,二階導數平滑的特性.
谷歌測試證明,Swish適應于局部響應歸一化,并且在40以上全連接層的效果要遠優于其他激活函數,而在40全連接層之內則性能差距不明顯.但是根據在mnist數據上AleNet的測試效果卻證明,Swish在低全連接層上與Relu的性能差距依舊有較大的優勢.
對于MNIST數據集而言,五層內的全連接層已經可以達到更好的測試性能,但是為了測試兩種激活函數的不同,我使用了3,10,45三種不同的全連接層進行測試,同時為了加大數據集的難度,我同時使用了Fashion-MNIST數據集進行測試
測試結果:
總結.
google的論文告訴我們在更大的數據集與更深的神經網絡上,Swish擁有更好的性能,而且當其與局部響應歸一化結合使用時,味道更佳,但是我們在mnist與Fashion-MNIST數據集上的測試同時也表明,其實在部分中小型數據集上Swish激活函數,可能也擁有不錯的性能表現.由于該函數沒有數學證明,我們在使用時可能需要多實踐一些.但是總體上我們可以認為,該激活函數是有效的.看來我們之后又多了一個煉丹的利器.
參考
[1] Noisy Activation Functions: Caglar Gulcehre, Marcin Moczulski
,Misha Denil, Yoshua Bengio.arXiv:1603.00391v3
[2] Fashion-MNIST: a Novel Image Dataset for Benchmarking Machine Learning Algorithms. Han Xiao, Kashif Rasul, Roland Vollgraf. arXiv:1708.07747
[3] Swish: a Self-Gated Activation Function.Prajit Ramachandran, Barret Zoph, Quoc V. Leoc V. Le. arXiv:1710.05941
總結
以上是生活随笔為你收集整理的Google提出的新型激活函数:Swish的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Rosonblatt线性感知器
- 下一篇: Python中单线程、多线程与多进程的效