摘要:作者微信號(hào)微信公眾號(hào)簡書地址最近谷歌大腦公布了一個(gè)新的激活函數(shù),叫做激活函數(shù)。根據(jù)谷歌大腦的論文,該激活函數(shù)的性能比激活函數(shù)的性能要好很多。編寫激活函數(shù)在中還沒有實(shí)現(xiàn)激活函數(shù)。時(shí)間比較在我的上面,激活函數(shù)比激活函數(shù)快秒左右。
作者:chen_h
微信號(hào) & QQ:862251340
微信公眾號(hào):coderpai
簡書地址:http://www.jianshu.com/p/95e3...
最近谷歌大腦公布了一個(gè)新的激活函數(shù),叫做 Swish 激活函數(shù)。這個(gè)函數(shù)非常的有趣,很多人都把它應(yīng)用到一些小的神經(jīng)網(wǎng)絡(luò)和大的神經(jīng)網(wǎng)絡(luò)中去測(cè)試它的性能。所以,我也打算去 kaggle 上面測(cè)試一些這個(gè)函數(shù)的性能如何。
Swish 激活函數(shù)的數(shù)學(xué)公式非常的簡單,即 f(x) = x * sigmoid(x) 。根據(jù)谷歌大腦的論文,該激活函數(shù)的性能比 ReLU 激活函數(shù)的性能要好很多。
我利用 Keras 實(shí)現(xiàn)的 ReLU 模型,在 kaggle 上面獲得的分?jǐn)?shù)是 0.99457。我保持所有的模型參數(shù)不變,只是把原來模型中的 ReLU 激活函數(shù)修改為 Swish 激活函數(shù),該模型的正確率就可以達(dá)到 0.99671 。
編寫 Swish 激活函數(shù)在 keras 中還沒有實(shí)現(xiàn) Swith 激活函數(shù)。所以我們第一步就是需要去實(shí)現(xiàn)這個(gè)激活函數(shù)。下面的 3 行代碼就可以實(shí)現(xiàn)這個(gè)功能:
from keras import backend as K from keras.layers import Activationfrom keras.utils.generic_utils import get_custom_objects def swish(x): return (K.sigmoid(x) * x) get_custom_objects().update({"swish": Activation(swish )})
現(xiàn)在我們只需要將 Swish 激活函數(shù)添加到模型就行了。
model.add(Conv2D(filters = 32, kernel_size = (5,5),padding = ‘Same’, activation =’swish’, input_shape = (28,28,1)))
但我們的最后一層還是采用原來的 sigmoid 激活函數(shù)。
精度比較在正確率方面,我發(fā)現(xiàn) Swish 激活函數(shù)的性能比 ReLU 激活函數(shù)好一點(diǎn),在 kaggle 上面的排名大約可以排到 90 名。
時(shí)間比較在我的 Geforce 940mx 上面,ReLU 激活函數(shù)比 Swish 激活函數(shù)快 10 秒左右。我知道可能 Swish 激活函數(shù)在計(jì)算 sigmoid 函數(shù)的時(shí)候比 ReLU 多浪費(fèi)了 10 秒。
總結(jié)在 kaggle 上面提交之后,我們的正確率只是多了 0.002 左右,排名大約在 90 名。但是我們每運(yùn)行一個(gè) epoch ,在 GPU 上面需要多花費(fèi) 20% - 30% 的時(shí)間。剛剛我們使用的是最原始的 Swish 版本,還有另外一個(gè)版本,即 Swish_beta (f(x) = 2xsigmoid(betax)) 。我希望這個(gè)激活函數(shù)比最原始的激活函數(shù)可以更加的高效。
參考資料kaggle 代碼,請(qǐng)點(diǎn)擊這里。
GitHub 代碼,請(qǐng)點(diǎn)擊這里。
Swish 原始論文,請(qǐng)點(diǎn)擊這里。
如果你發(fā)現(xiàn)了任何的問題,或者有什么好的想法,請(qǐng)與我聯(lián)系。
作者:chen_h
微信號(hào) & QQ:862251340
簡書地址:http://www.jianshu.com/p/95e3...
CoderPai 是一個(gè)專注于算法實(shí)戰(zhàn)的平臺(tái),從基礎(chǔ)的算法到人工智能算法都有設(shè)計(jì)。如果你對(duì)算法實(shí)戰(zhàn)感興趣,請(qǐng)快快關(guān)注我們吧。加入AI實(shí)戰(zhàn)微信群,AI實(shí)戰(zhàn)QQ群,ACM算法微信群,ACM算法QQ群。長按或者掃描如下二維碼,關(guān)注 “CoderPai” 微信號(hào)(coderpai)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/41087.html
摘要:激活函數(shù)介紹形函數(shù)函數(shù)是神經(jīng)網(wǎng)絡(luò)初期的激活函數(shù)。其他不常用的激活函數(shù)如反正切,,以及同樣減輕了以上問題。的意思就是對(duì)于一個(gè)個(gè)節(jié)點(diǎn)的隱層,使用作為激活函數(shù)的神經(jīng)網(wǎng)絡(luò)。實(shí)際上這次的實(shí)驗(yàn)中所有系的激活函數(shù)除了,使用都收斂的比較快。 前言 簡單來說,激活函數(shù)在神經(jīng)網(wǎng)絡(luò)里的作用就是引入Non-linearity。假如沒有激活函數(shù)的話,一個(gè)多層的神經(jīng)網(wǎng)絡(luò)等同于一個(gè)一層的神經(jīng)網(wǎng)絡(luò)。簡單來說,一個(gè)神經(jīng)...
摘要:主流機(jī)器學(xué)習(xí)社區(qū)對(duì)神經(jīng)網(wǎng)絡(luò)興趣寡然。對(duì)于深度學(xué)習(xí)的社區(qū)形成有著巨大的影響。然而,至少有兩個(gè)不同的方法對(duì)此都很有效應(yīng)用于卷積神經(jīng)網(wǎng)絡(luò)的簡單梯度下降適用于信號(hào)和圖像,以及近期的逐層非監(jiān)督式學(xué)習(xí)之后的梯度下降。 我們終于來到簡史的最后一部分。這一部分,我們會(huì)來到故事的尾聲并一睹神經(jīng)網(wǎng)絡(luò)如何在上世紀(jì)九十年代末擺脫頹勢(shì)并找回自己,也會(huì)看到自此以后它獲得的驚人先進(jìn)成果?!冈噯枡C(jī)器學(xué)習(xí)領(lǐng)域的任何一人,是什...
摘要:循環(huán)神經(jīng)網(wǎng)絡(luò)令語音和自然語言處理達(dá)到了新階段。自歸一化神經(jīng)網(wǎng)絡(luò)對(duì)于擾動(dòng)是具有魯棒性的,它在訓(xùn)練誤差上并沒有高方差見圖。構(gòu)建自歸一化神經(jīng)網(wǎng)絡(luò)我們通過調(diào)整函數(shù)的屬性以構(gòu)建自歸一化神經(jīng)網(wǎng)絡(luò)。 近日,arXiv 上公開的一篇 NIPS 投稿論文《Self-Normalizing Neural Networks》引起了圈內(nèi)極大的關(guān)注,它提出了縮放指數(shù)型線性單元(SELU)而引進(jìn)了自歸一化屬性,該單元主...
閱讀 1325·2023-04-26 02:46
閱讀 761·2023-04-25 19:38
閱讀 762·2021-10-14 09:42
閱讀 1372·2021-09-08 09:36
閱讀 1482·2019-08-30 15:44
閱讀 1439·2019-08-29 17:23
閱讀 2365·2019-08-29 15:27
閱讀 939·2019-08-29 14:15