【AI初识境】激活函数:从人工设计到自动搜索
文章首發(fā)于微信公眾號《有三AI》
【AI初識境】激活函數(shù):從人工設計到自動搜索
這是專欄《AI初識境》的第4篇文章。所謂初識,就是對相關技術有基本了解,掌握了基本的使用方法。
在神經網(wǎng)絡中,有一個看似不起眼但是非常重要的概念,那就是激活函數(shù)。激活函數(shù)模型固然理解起來簡單,但是也經歷了從人工設計到自動探索的長足發(fā)展歷程。
作者&編輯??|?言有三
?
01?無處不在的激活函數(shù)
我們都知道人工神經網(wǎng)絡是用于模擬神經元的,那么提起激活函數(shù),自然是要從那里去挖掘原因
在正說深度學習中的激活函數(shù)之前,我想說其實激活函數(shù)無處不在。
(1)?上班需要激活函數(shù)。早上10點上班,你8點到也好,9點到也好都一樣,但是10點零1分到不行,性質就變了,考勤系統(tǒng)留下遲到的記錄,全勤獎再無希望。
它的激活函數(shù)應該是這樣的,x是打卡時間。
這是一個階躍函數(shù),類似于如下:
(2)?最近看上了一個跳槽過來的喜歡吃甜品的女同事,不過聽說有男朋友,不過又聽說好像正在慢慢鬧分手。
那么如果要追這個女同事,什么時候送甜品能帶來友情的升華?假如預判她和對象第t天后拜拜。
它的激活函數(shù)可能是這樣的,x是送甜品的日子。
?
在剛分手的時候(也就是第t天,對應曲線斜率最大的地方)送甜品帶來的好感激增度是最高的,再往后雖然隨著相互之間越來越熟友誼持續(xù)升溫,但是增長率下降了啊。而且到后來可能被其他人追走了,這個函數(shù)還只在一定期限內有效。
(3)?最近項目要加班,不過好在加班費是按小時(可以有分數(shù))算的,那么當天的工資,就應該是這樣算的。它的激活函數(shù)可能是這樣的,x是工作時長。
形狀長這樣,超過一個閾值后是線性增加的,低于閾值則是常量。
(4)?不是單身狗?OK你是有老婆的人,那么下班回家陪老婆看電視總需要吧。不過到底陪不陪看,是不是陪就一定能得到老婆大人喜歡,這個可能是個周期性質的東西。
假如x是當天日歷,那么激活函數(shù)可能是這樣。
?
這么想想,是不是感覺激活函數(shù)無處不在,上面的這幾種都是有正兒八經對應的激活函數(shù)的。
回轉正題,之所以需要激活函數(shù),從生物學上來說,是因為人腦的細胞接受刺激從而產生活動,首先需要一定的閾值,沒有達到閾值,幾乎沒用。而不同的刺激產生的輸出也是不同的,達到一定值后就飽和了,再加大也沒用。
作為模擬人腦的人工神經網(wǎng)絡,自然是需要某種機制來模擬這一種活動,這便是激活函數(shù)根本性的由來。
?
02?激活函數(shù)到底有什么用
一個復雜的神經網(wǎng)絡,是有許多層的,其中最基本的單位便是神經元。
一個線性神經元,輸入x輸出y的變換關系如下。
可以看到輸出y與x是一個線性關系。如果再增加一層,把y作為中間層,輸出為z呢?
如下:
?
可以看出,最終的輸出z仍然與x是線性關系,也就是說這樣堆疊下去,永遠都是線性關系。
人們期望神經網(wǎng)絡可以模擬任意的函數(shù),怎么可能用一個線性函數(shù)來完成呢?所以才會在線性神經元的輸出后添加非線性的函數(shù),添加的越多,變換自然就越復雜了。
而不同的非線性映射函數(shù)的選擇,就是激活函數(shù)的研究課題了。
?
03?各種激活函數(shù)
https://en.wikipedia.org/wiki/Activation_function
關于激活函數(shù)的種類,有三這一次就偷個懶,大家可以去wiki?百科上面看,非常的詳細,下面摘錄其中的一些。
這些人工設計的激活函數(shù)有這么多,那么什么激活函數(shù)最好,是ReLU嗎?還是各類ReLU的變種(LReLU,PReLU,RReLU,ELU,SELU,GELU等等),Maxout,又或者是某大神自己在搞的很復雜的激活函數(shù),這是沒有答案的,只能說有一些通用的大家認可的結論,下面也只能覆蓋到一些。
(1)?sigmoid和tanh激活函數(shù)。
為什么最早的時候大家用sigmoid函數(shù)呢?因為它不管輸入處于多大的范圍,輸出是處于0~1的,機器學習里要解決的問題很多都是概率,用sigmoid不是很自然嗎?
就算它有所謂的飽和問題導致梯度很小,那也是在函數(shù)的尾部才會發(fā)生,或者是在多級連乘之后才明顯。所以很早期的比較淺的神經網(wǎng)絡,用sigmoid沒毛病,現(xiàn)在在LSTM這一類需要計算開關概率的網(wǎng)絡中,sigmoid仍然是很常見的。
那tanh函數(shù)又如何呢?它相比sigmoid來說,將輸出映射到(-1,1)之間了,拓展了一倍的值域。激活有負值之后,網(wǎng)絡的表達能力可以得到提升,但未必一定需要這么做的,因為權重本身是可以為負的,而在最早期的神經網(wǎng)絡中,用模擬信號處理問題,甚至連權重都沒有非負的,一樣有效。不過一般來說tanh總不至于比sigmoid差的,它畢竟通過零點,輸出期望不會漂移。
(2)ReLU激活函數(shù)。
好處是很明顯的。首先它簡單,這個簡單不僅在于導數(shù)恒定,更在于它將低于一定閾值的信號丟棄了。深度學習要解決的是工程問題,工程問題很多時候都是稀疏性的,往往簡單的解決方案是最有效和穩(wěn)定的。不過ReLU輸出沒有負數(shù)的問題確實有一定負作用,這也是其他方法對ReLU的改進空間所在。
(3)ReLU的一大堆變種(LReLU,PReLU,RReLU,ELU,SELU,GELU等等)。
我相信這些變種是有用的,但是我沒怎么用過。不用因為是首先它們還沒有表現(xiàn)出一定比ReLU強,在如今有BN等技術以及好的初始化方法后,ReLU的缺點沒有那么明顯了。另一方面是,沒時間去一個一個試,解決問題的過程中還有很多其他因素更加需要去探索。不過,還是建議大家去仔細了解一下的,用不用的著再說。
正因如此,在對ReLU改進的差不多之后,激活函數(shù)的人工設計就沒有這么多熱情了。
?
04自動搜索
不過坑還沒有填完,還是有人沒有忘記這個問題的,比如谷歌。谷歌開了許多深度學習領域的自動化的工作,比如自動設計網(wǎng)絡NASNet,自動數(shù)據(jù)增強AutoAugment等工作,也做了自動搜索最優(yōu)的激活函數(shù)的工作。
文[1]就在一系列一元函數(shù)和二元函數(shù)組成的搜索空間中,進行了比較細致的組合搜索實驗。
結論是好用的激活函數(shù)都比較簡單,不會超過兩個基本函數(shù)的乘的組合。搜到了一些比Relu表現(xiàn)更好的函數(shù),最好的是一個這樣的函數(shù):x?·?σ(βx),被稱為Swish,它在某個特定的參數(shù)下也和ReLU及其變種類似,看看圖就知道了。
順便說一下該方法做實驗時的一元函數(shù)和二元函數(shù)的搜索空間:
已經覆蓋我們能想到的一些簡單的函數(shù)了。
類似地也有其他的研究人員通過遺傳算法學習到一些新的激活函數(shù),包括EliSH,HardEliSH[2],感興趣的可以去看論文。
這個坑就挖給你了,還可以填。
[1]?Ramachandran?P,?Zoph?B,?Le?Q?V.?Searching?for?activation?functions[J].?arXiv?preprintarXiv:1710.05941,?2017.
[2]?Basirat?M?,?Roth?P?M?.?The?Quest?for?the?Golden?Activation?Function[J].?2018.
[3]?Nwankpa?C?,?Ijomah?W?,?Gachagan?A?,?et?al.?Activation?Functions:?Comparison?of?trends?in?Practice?andResearch?for?Deep?Learning[J].?2018.
最后發(fā)一個通知,2019年有三AI培養(yǎng)計劃開始了,一個季度一期噢。
2019年有三AI“春季”劃,給我一個榮耀,還你一生榮耀
?
總結
深度學習各個維度的理論正處于全面被研究中,如果你想有所建樹,那么必須要深入思考以前那些看似習以為常的東西,激活函數(shù)就是一個例子。
下期預告:深度學習中初始化的重要性
?
轉載文章請后臺聯(lián)系
侵權必究
比如網(wǎng)絡loss不正常,怎么調都不管用。
比如訓練好好的,測試就是結果不對。
bug天天有,深度學習算法工程師遇到的特別多,如果你想交流更多,就來有三AI知識星球實時提問交流吧,大咖眾多,總有能解決你問題的。
初識境界到此基本就結束了,這一系列是為大家奠定扎實的深度學習基礎,希望學習完后大家能有收獲。
AI白身境系列完整閱讀:
第一期:【AI白身境】深度學習從棄用windows開始
第二期:【AI白身境】Linux干活三板斧,shell、vim和git
第三期:【AI白身境】學AI必備的python基礎
第四期:【AI白身境】深度學習必備圖像基礎
第五期:【AI白身境】搞計算機視覺必備的OpenCV入門基礎
第六期:【AI白身境】只會用Python?g++,CMake和Makefile了解一下
第七期:【AI白身境】學深度學習你不得不知的爬蟲基礎
第八期:?【AI白身境】深度學習中的數(shù)據(jù)可視化
第九期:【AI白身境】入行AI需要什么數(shù)學基礎:左手矩陣論,右手微積分
第十期:【AI白身境】一文覽盡計算機視覺研究方向
第十一期:【AI白身境】AI+,都加在哪些應用領域了
第十二期:【AI白身境】究竟誰是paper之王,全球前10的計算機科學家
AI初識境系列完整閱讀
第一期:【AI初識境】從3次人工智能潮起潮落說起
第二期:【AI初識境】從頭理解神經網(wǎng)絡-內行與外行的分水嶺
第三期:【AI初識境】近20年深度學習在圖像領域的重要進展節(jié)點
第四期:【AI初識境】激活函數(shù):從人工設計到自動搜索
第五期:【AI初識境】什么是深度學習成功的開始?參數(shù)初始化
第六期:【AI初識境】深度學習模型中的Normalization,你懂了多少?
第七期:【AI初識境】為了圍剿SGD大家這些年想過的那十幾招
第八期:【AI初識境】被Hinton,DeepMind和斯坦福嫌棄的池化,到底是什么?
第九期:【AI初識境】如何增加深度學習模型的泛化能力
第十期:【AI初識境】深度學習模型評估,從圖像分類到生成模型
第十一期:【AI初識境】深度學習中常用的損失函數(shù)有哪些?
第十二期:【AI初識境】給深度學習新手開始項目時的10條建議
感謝各位看官的耐心閱讀,不足之處希望多多指教。后續(xù)內容將會不定期奉上,歡迎大家關注有三公眾號 有三AI!
總結
以上是生活随笔為你收集整理的【AI初识境】激活函数:从人工设计到自动搜索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【AI初识境】近20年深度学习在图像领域
- 下一篇: 【AI初识境】什么是深度学习成功的开始?