AI瘋狂進階——激活函數篇

2020-12-12 騰訊網

本文作者專注於AI進階算法,正在推出AI瘋狂進階之基礎理論進階篇,如有興趣可持續關注我。

核心導讀:

1. 神經網絡激活函數的作用是什麼?

2. 如何評價激活函數的好壞?

3. ReLU存在哪些問題?

4. 存在替換萬年ReLU的激活函數嗎?

1. 激活函數的作用是什麼?

激活函數對於人工神經網絡模型學習、理解非常複雜的數據來說具有十分重要的作用。激活函數給神經元引入了非線性因素,使得神經網絡可以逼近任何非線性函數,這樣神經網絡就可以應用到眾多的非線性模型中。目前最常見的激活函數當屬ReLU以及在其基礎上改進的如PReLU,RReLU,LeakyReLU等。本文在激活函數上進行了進階總結,下面一一闡述:

2.如何評價激活函數的好壞?

目前學術界總計有50+類型的激活函數,但沒有統一的或者明確的標準去衡量激活函數的好壞,最根本的原因是因為神經網絡通過訓練本質上是去擬合訓練數據的非線性分布,然而現實中數據的分布是無法統計的,所以採用哪種激活函數能擬合的更好是無法通過理論去推導出來,因此大部分論文都是通過在幾十種不同的任務上做實驗去看準確率以及準確率浮動的範圍(穩定性)來評判激活函數的好壞。從最近研究出的一些比較好的激活函數中可以總結出好的激活函數必須擁有以下三個特點:

(1) Unboundedness(x>0無飽和區域):傳統的激活函數如sigmoid和tanh函數都有飽和區域,所以必須依賴較好的初始化讓輸入數據處於非飽和區域,否則飽和區域產生的梯度過小會影響收斂速度,而Relu系列都是x>0無飽和區域。

(2)NegativeOutputs(x

(3)Smoothness(平滑性):Relu,PReLU,RReLU都是在x=0點都是不連續的,最明顯的現象是在特徵響應圖上產生斷層,平滑的激活函數更利於梯度信息的回傳。

3.ReLU存在哪些問題?

(1)Dead ReLU Problem:《Applying Deep Learning to Airbnb Search》中解釋了這個問題,神經網絡接受異於常值範圍的輸入時,在反向傳播過程中會產生大的梯度,這種大的梯度,會因梯度消失而永久關閉諸如 ReLU 的激活函數,這主要是ReLU沒有NegativeOutputs所帶來的問題。下面舉了個簡單的例子說明這個現象。

(2)High-Confidence Predictions:《Why ReLU Networks Yield High-Confidence Predictions Far Away From the Training Dataand How to Mitigate》中針對例如將一個在CIFAR 10數據集(10類普通物體)上訓練的神經網絡,放到SVHN數據集(街景門牌)上做測試,該模型竟然能夠以100%的置信度將門牌識別為狗、鳥和飛機等這種現象,通過理論建模,解釋ReLU帶來的高置信度問題,並提出CEDA和ACET來緩解這種不良情況。

4.存在替換萬年ReLU的激活函數嗎?

答案是肯定的。本文作者在這裡給大家推薦2個激活函數。這2個激活函數在自己的工程項目中都嘗試過,相比Relu均有穩定0.5%左右的提升。僅僅改變激活函數就能帶來白給的提升,何樂而不為?第一個是Google Brain提出的Swish函數,其形式為f(x) = x · sigmoid(x) ,《SWISH: A SELF-GATED ACTIVATION FUNCTION 》論文在多個任務上實驗精度都超過Relu,同時在2019年推出的端側引擎MobilenetV3中,也是直接用Swish替換掉Relu。另一個是Mish函數,其形式為f(x) = x tanh(ln(1 + exp(x)),《Mish: A Self Regularized Non-Monotonic Neural Activation Function 》也是在多個任務上實驗最終準確度上比Swish(+.494%)和ReLU(+ 1.671%)都有提高。從下圖可以看出Swish和Mish在特徵圖上數據分布比Relu更加平滑。由於激活函數替換的成本較低,所以當你看到這篇文章的時候,可以嘗試在自己的項目中採用這2個激活函數試一試,說不定就能帶來一定的提升。

5.小結

激活函數一直是神經網絡研究中的一個重要方向,未來也會有更多更好的激活函數出現,如果不知道採用哪個激活函數好,可以採用Auto ML進行搜索。

如需轉載,請註明出處。

相關焦點

  • AI瘋狂進階——凸優化
    本文作者專注於AI進階算法,正在推出AI瘋狂進階之基礎理論進階篇,如有興趣可持續關注我。核心導讀:1.什麼是凸優化?2.如何證明函數是凸函數?(2)凸優化的損失函數/約束函數都必須是凸函數。凸函數的定義為:在函數的定義域內,如果對於任意的x和y,都滿足如下條件:則函數為凸函數,如下圖的一元函數就是凸函數。在幾何上可以看到,凸函數在任何點的切線都位於函數的下方。
  • 常用激活函數(激勵函數)理解與總結
    ,而且很多資料都會提到常用的激活函數,比如Sigmoid函數、tanh函數、Relu函數。那麼我們就來詳細了解下激活函數方方面面的知識。1. 什麼是激活函數?2. 激活函數的用途(為什麼需要激活函數)?3. 有哪些激活函數,都有什麼性質和特點?4. 應用中如何選擇合適的激活函數?如果你對以上幾個問題不是很清楚,下面的內容對你是有價值的。
  • 人工智慧系列【3】- 變身激活函數篇
    那麼,羅裡吧嗦的胖達終於要講到本章的重點了:激活函數。(由於是第一篇,所以引子就長了點,啊,我這顆羅裡吧嗦的七竅玲瓏心)前面我們已經知道了神經網絡分為輸入層、隱藏層、輸出層。神經網絡中,本質是函數關係的映射,比如最簡單的線性回歸,滿足關係y = wx +b。
  • 【機器學習基礎】常用激活函數(激勵函數)理解與總結
    ,而且很多資料都會提到常用的激活函數,比如Sigmoid函數、tanh函數、Relu函數。那麼我們就來詳細了解下激活函數方方面面的知識。1. 什麼是激活函數?2. 激活函數的用途(為什麼需要激活函數)?3. 有哪些激活函數,都有什麼性質和特點?4. 應用中如何選擇合適的激活函數?如果你對以上幾個問題不是很清楚,下面的內容對你是有價值的。
  • 【DL知識拾貝】Pytorch版本第一篇:激活函數大匯總
    前言我們知道,神經網絡實際上就是用於實現複雜的函數,而非線性激活函數能夠使神經網絡逼近任意複雜的函數。從定義來講,只要連續可導的函數都可以作為激活函數,但目前常見的多是分段線性和具有指數形狀的非線性函數。下面列出經典的三大激活函數以及一些新的激活函數。1. 典型激活函數及進階1.1 Sigmoidsigmoid函數可以將元素的值變換到0和1之間:
  • 深入理解深度學習中的激活函數
    但我們也知道感知機有個局限性,即無法單層表示非線性變化,而神經網絡往往通過激活函數用來表示非線性變化。即激活函數的作用就是引入非線性。神經元輸出神經元的輸出信號是由激活函數o = f(∑)得處理後,得到得輸出,如圖所示性質激活函數是一個幾乎可微得函數,滿足非線性,連續性常見激活函數sigmoid;tanh;ReLU;LReLU, PReLU, RReLU;ELU(Exponential Linear Units);softplus;softsign,softmax
  • 深度學習基礎篇:如何選擇正確的激活函數?
    激活函數可以幫助神經網絡做這種隔離。它激活有用的信息,並抑制無關的數據點。激活函數如此重要,那麼都有哪些比較熱門呢?它們是如何工作的?又適合解決什麼問題?本文將為你一一解答。以下是本文目錄。1.簡單介紹神經網絡2.什麼是激活函數?3.可以不用激活函數嗎?
  • 一文總結深度學習中的激活函數
    本文介紹了多種激活函數,並且對比了激活函數的優劣。1. 什麼是激活函數?生物神經網絡啟發了人工神經網絡的發展。但是,ANN 並非大腦運作的近似表示。不過在我們了解為什麼在人工神經網絡中使用激活函數之前,先了解生物神經網絡與激活函數的相關性是很有用處的。
  • Pytorch_第九篇_神經網絡中常用的激活函數
    神經網絡中常用的激活函數Introduce理論上神經網絡能夠擬合任意線性函數,其中主要的一個因素是使用了非線性激活函數(因為如果每一層都是線性變換,那有啥用啊,始終能夠擬合的都是線性函數啊)。本文主要介紹神經網絡中各種常用的激活函數。以下均為個人學習筆記,若有錯誤望指出。
  • 深度學習中的四種激活函數
  • 激活函數是個啥?
    2、激活函數及其意義        激活函數在神經元中起到了非常重要的作用,從最初的0/1階躍函數演化成為現在的非線性可導等具有良好數學性質的函數。最開始驅使激活函數向前發展的原因就是XOR的問題:針對數據可以線性可分的情況下,使用線性激活函數是OK的,但針對異或這種無法線性可分的情況時使用線性激活函數就是無法執行分類決策。
  • 機器學習中的激活函數綜合指南
    激活函數對神經網絡的效率和穩定性起著至關重要的作用。在這篇文章中,將儘可能簡要地概述激活函數的最新發展,並關注為什麼需要它們以及何時應用它們。為什麼需要激活函數?簡而言之,激活函數解決了神經網絡中的兩個關鍵問題:確保激活映射是非線性的,因此彼此獨立;確保某些輸出具有基本的數值特性,例如,在[- 1,1]範圍內或為有效的概率分布。
  • 學界|神經網絡中激活函數的作用
    請在 kdnuggets 閱讀這篇概述文章(What is the Role of the Activation Function in a Neural Network?)並查看下最下面的速查表吧。本文作者是來自密西根州立大學的 Sebastian Raschka,她是《Python Machine Learning》一書的作者。
  • 資料|MATLAB優化算法案例分析與應用(進階篇)
    from=leiphonecolumn_res0817內容簡介 · · · · · ·《MATLAB優化算法案例分析與應用(進階篇)》是深受廣大讀者歡迎的《MATLAB優化算法案例分析與應用》一書的姊妹篇,即進階篇。本書全面、系統、深入地介紹了MATLAB算法及案例應用。
  • 神經網絡中的激活函數
    什麼是神經網絡激活函數?激活函數有助於決定我們是否需要激活神經元。如果我們需要發射一個神經元那麼信號的強度是多少。激活函數是神經元通過神經網絡處理和傳遞信息的機制為什麼在神經網絡中需要一個激活函數?在神經網絡中,z是輸入節點與節點權值加上偏差的乘積。
  • 一文讀懂深度學習中的矩陣微積分,fast.ai創始人&ANTLR之父出品
    這位ANTLR之父和fast.ai創始人Jeremy Howard一起推出了一篇免費教程,旨在幫你快速入門深度學習中的矩陣微積分。簡明,易懂。深度學習所需的矩陣微積分先來看一眼這篇教程都涵蓋了哪些內容:基本概念矩陣微積分神經元激活的梯度神經網絡損失函數的梯度文章開篇,先介紹了一下人工神經元。
  • OFFSET函數從入門到進階之基本操作篇
    在Excel常見的函數中,有幾個是比較常見但是卻比較難理解的函數,讓人望而生畏,接下來我們就各個擊破。首先,讓我們來看看OFFSET函數。OFFSET函數是指以指定的引用為參照系,通過給定偏移量返回新的引用,這裡的引用既可以是某個單元格,也可以是某個區域。
  • 神經網絡中激活函數的真正意義?一個激活函數需要具有哪些必要的屬性?還有哪些屬性是好的屬性但不必要的?
    這篇文章裡基於RL對激活函數進行了搜索,包括很多一元函數和二元函數的組合:最終發現了一些表現最好的激活函數:對應於原回答中的特性,其中的1、2、3、4、7(從圖中可以看出,大部分函數都具有線性區)、8都被這篇文章的實驗所驗證,比較有爭議的就是單調性。---原回答的分割線----說說我對一個好的激活函數的理解吧,有些地方可能不太嚴謹,歡迎討論。(部分參考了Activation function。)1.
  • VBA進階 | 數組基礎06: 與數組相關的函數——Array函數與IsArray函數
    Array函數語法Array函數返回一個Variant型數組,該數組由傳遞給該函數的參數組成。由Array函數返回的數組只可賦值給一個Variant型變量,不能賦值給已聲明為數組變量的變量。Array函數返回的數組中元素的順序與傳遞給函數的參數值的順序相同。Array函數總是返回Variant類型的數組,但元素的數據類型可以不同,這取決於傳遞給該函數的數值類型。
  • 從ReLU到GELU,一文概覽神經網絡的激活函數
    本文同樣關注的是激活函數。來自丹麥技術大學的 Casper Hansen 通過公式、圖表和代碼實驗介紹了 sigmoid、ReLU、ELU 以及更新的 Leaky ReLU、SELU、GELU 這些激活函數,並比較了它們的優勢和短板。在計算每一層的激活值時,我們要用到激活函數,之後才能確定這些激活值究竟是多少。