天天看點

激活函數的完全指南

作者:AI4Science

激活函數(Activation Functions)

激活函數在深度學習中起着至關重要的作用,對于圖像分類、語言翻譯等任務至關重要。這些函數在決定深度學習模型輸出的準确性方面發揮着關鍵作用。它們還顯著影響神經網絡的收斂能力和速度。沒有激活函數,深度學習中的這些複雜任務将很難處理。

在本文中,我們将讨論以下内容:

  • 什麼是激活函數?
  • 為什麼要使用激活函數?
  • 激活函數的主要類型

廢話不多說,讓我們開始吧!

什麼是激活函數?

激活函數根據神經網絡中的輸入決定是否應激活神經元。這些函數使用數學運算來判斷輸入是否對預測很重要。如果輸入被認為是重要的,函數會“激活”神經元。

激活函數使用一組輸入值産生輸出,這些輸入值由節點或層接收。神經網絡中的節點類似于人腦中的神經元,它們接收輸入信号(外部刺激)并對其做出反應。大腦處理輸入信号,并根據随着時間的推移建構的路徑和神經元發射的強度來決定是否激活神經元。

深度學習中的激活函數執行類似的作用。激活函數的主要目的是将節點的權重輸入轉換為輸出值,并将其傳遞給下一個隐藏層或用作最終輸出。

為什麼激活函數很重要?

大多數激活函數都是非線性的。這使得神經網絡能夠“學習”有關資料集的特征(即如何利用圖像中的不同像素構成一個特征)。沒有非線性激活函數,神經網絡隻能學習線性和仿射函數。這是個問題,因為線性和仿射函數無法捕捉實際資料中經常存在的複雜和非線性模式。

激活函數還有助于将輸入流從未知分布和尺度映射到已知分布和尺度。這穩定了訓練過程,并将值映射到非回歸任務(如分類、生成模組化或強化學習)的期望輸出。非線性激活函數引入了神經網絡的複雜性,使其能夠執行更進階的任務。

激活函數的主要類型

讓我們來看看目前最常用的神經網絡激活函數,以加深對實際應用中激活函數的了解。最常見的三種函數是:

二值激活函數

二值激活函數使用門檻值來确定神經元是否應該被激活。激活函數接收的輸入與門檻值進行比較。如果輸入大于門檻值,神經元被激活,其輸出傳遞給下一個隐藏層。如果輸入小于門檻值,神經元被禁用,其輸出不傳遞。

二值激活函數無法提供多值輸出。這意味着它不适用于解決多類别分類問題。此外,它不可微分,這意味着它不能與基于梯度的優化算法一起使用,這會導緻訓練困難。

激活函數的完全指南

一個顯示二進制階躍激活函數的圖形

線性激活函數

線性激活函數,也稱為“無激活函數”或“恒等函數”,是一種激活函數,其中激活與輸入成正比。該函數不修改權重輸入的和,隻傳回給定的值。你可能已經熟悉來自λ演算的恒等函數。

然而,線性激活函數存在兩個主要問題。

首先,該函數無法與反向傳播一起使用,因為函數的導數是與輸入無關的常數,這會導緻神經網絡的所有層都會合并成一個層。

其次,不管有多少層,當使用線性激活函數時,最後一層将是第一層的線性函數。這實際上将神經網絡簡化為單層。

激活函數的完全指南

線性激活函數

非線性激活函數

線性激活函數相當于線性回歸模型。這是因為線性激活函數隻是輸出接收到的輸入,而沒有應用任何變換。

讓我們通過一個例子來了解為什麼會這樣。在神經網絡中,神經元的輸出使用以下方程計算:

激活函數的完全指南

如果激活函數是線性函數,那麼輸出将是輸入的線性組合,這将是線性回歸用于模組化輸入和輸出變量之間關系的相同方程。

另一方面,非線性激活函數通過使導數函數與輸入相關聯,解決了線性激活函數的局限性,這允許模型調整輸入神經元的權重以改進預測。非線性激活函數還允許輸出是通過多個層傳遞的輸入的非線性組合。這使得神經網絡能夠模組化資料中的非線性關系。

在接下來的部分中,我們将讨論今天最常用的一些非線性激活函數。非線性函數是機器學習和計算機視覺中最有用的工具之一,因為這些領域中的大多數問題無法使用線性函數解決。是以,我們将重點關注它們。

常見的非線性激活函數

近年來,對非線性激活函數進行了大量研究,導緻了新的改進函數的開發和某些函數的受歡迎程度發生變化。然而,仍然廣泛使用一些經典的激活函數。

下面列出了一些常用且衆所周知的激活函數。讓我們從sigmoid函數開始。

Sigmoid激活函數

Sigmoid激活函數将輸入流映射到範圍(0, 1)。與步進函數隻輸出0或1不同,sigmoid在0和1之間輸出一系列值,不包括0和1本身。下面是這個函數的示例:

激活函數的完全指南

sigmoid函數

雖然sigmoid函數相比前面讨論的激活函數有所改進,并且在二分類等任務中很有用,但它在反向傳播方面存在重大缺點。特别是,它在梯度消失或梯度爆炸方面存在問題。

當層數加深時,梯度會變得越來越小,這可能導緻神經網絡難以學習,因為優化器對權重的更新将非常小,這将導緻網絡停止學習。

相反,梯度爆炸問題會在層數加深時導緻梯度越來越大。這可能導緻權重變得非常大,進而導緻數值不穩定并使模型性能不佳。

此外,[0, 1]的輸出範圍并不以0為中心,這在反向傳播過程中也可能導緻問題。最後,指數函數的使用可能在計算上很昂貴,進而減慢網絡的速度。

Tanh激活函數

tanh激活函數與sigmoid類似,将輸入值映射到S形曲線。但是,tanh函數的範圍是(-1, 1),且以0為中心。這解決了sigmoid函數的一個問題。

tanh代表雙曲正切,它是雙曲正弦除以雙曲餘弦,類似于正常正切。下面是這個函數的示例:

激活函數的完全指南

tanh函數

盡管tanh可能比sigmoid更有效,但在處理大或小的輸入值時仍然存在與sigmoid相同的問題,并且也是一個指數函數。

ReLU激活函數

ReLU(Rectified Linear Unit)是一種更現代且廣泛使用的激活函數。ReLU是一個簡單的激活函數,它将負值替換為0,并保持正值不變,進而避免了反向傳播中的梯度問題,并且計算速度更快。下面是ReLU函數的示例:

激活函數的完全指南

ReLU函數

實踐中,使用ReLU的網絡收斂速度通常比使用sigmoid或tanh的網絡快約六倍。然而,ReLU不以0為中心,不能很好地處理負輸入。這可能在訓練過程中引起問題。

Leaky ReLU是ReLU的擴充,解決了這些問題。

Leaky ReLU激活函數

Leaky ReLU是ReLU激活函數的擴充,旨在解決原始ReLU函數将負輸入替換為零的問題。Leaky ReLU不将負輸入替換為零,而是将其乘以一個介于0和1之間的小值,以保留負輸入中的一些資訊。下面是這個函數的表示:

激活函數的完全指南

Leaky ReLU函數

Softmax激活函數

在探索Softmax激活函數的細節之前,我們應該關注其建構塊:對機率值進行計算的Sigmoid/Logistic激活函數。

回想一下,Sigmoid函數的輸出範圍是0到1,可以被視為機率。然而,這個函數面臨着某些問題。假設我們有五個輸出值,分别為0.65、0.9、0.85、0.8和0.6。我們該如何繼續處理呢?

答案是:我們無法繼續處理。

不同類别在輸出層中的值應該相加為1,但目前的值并不是這樣。Softmax函數結合了多個Sigmoid函數來計算每個類别的相對機率。

Softmax函數用于确定多類分類問題中每個類别的機率。它通常應用于神經網絡的最後一層。這個函數的工作方式類似于Sigmoid/Logistic激活函數,通過計算相對機率來确定每個類别。

讓我們通過一個例子來說明。假設我們有一個具有三個類别的模型,是以輸出層有三個神經元。這些神經元的輸出為[1.8, 0.9, 0.68]。将Softmax函數應用于這些值将得到機率[0.58, 0.23, 0.19]。

Softmax函數将最高值的輸出賦予最高機率,并将其他輸出賦予零機率。

在這個例子中,最高值的輸出位于索引0(0.58),是以該函數将其機率設為1,并将索引1和2的輸出機率設為零。這使得使用Softmax函數解決多類别分類問題非常友善。

Swish激活函數

Swish在各種具有挑戰性的領域(如圖像分類、機器翻譯等)中一緻地與ReLU激活函數相比對或優于它。

Swish函數的輸出在輸入趨于負無窮時接近一個常數值,但在輸入趨于無窮時增加。下面是Swish函數的表示:

激活函數的完全指南

Swish函數

與ReLU相比,Swish激活函數更平滑和連續,而ReLU在x = 0處有一個急劇的方向變化。此外,ReLU将負值轉換為零,但這些值可能對于識别資料中的模式仍然有用。此外,大的負值被設定為零,這促進了網絡的稀疏性。

如何選擇合适的激活函數

在訓練神經網絡時選擇激活函數時,通常最好從基于ReLU的函數開始,因為這個函數在各種任務中都非常成功。然而,某些架構,如RNN和LSTM,可能需要特定的激活函數,如sigmoid或tanh。

建議僅在神經網絡的隐藏層中使用ReLU激活函數。此外,不應在神經網絡的隐藏層中使用Sigmoid/Logistic和Tanh函數,因為它們可能會引發訓練問題,導緻梯度消失。

以下是根據預測問題類型選擇輸出層激活函數的一些建議:

  • 回歸問題:使用線性激活函數
  • 二分類問題:使用Sigmoid/Logistic激活函數
  • 多類分類問題:使用Softmax
  • 多标簽分類問題:使用Sigmoid

激活函數的關鍵要點

現在,讓我們快速回顧一下我們所讨論的内容!

激活函數是神經網絡的重要組成部分,它們決定了神經網絡的輸出。非線性激活函數是最常用的,對于引入網絡的複雜性是必要的。

激活函數有助于将輸入值映射到已知範圍,這有助于穩定訓練并将值映射到最後一層的期望輸出。最受歡迎的激活函數包括二進制階躍函數、線性函數、Sigmoid函數、雙曲正切函數、ReLU函數和Softmax函數。

激活函數的選擇取決于神經網絡的架構類型和解決的預測問題類型。激活函數的可微性對于使用反向傳播進行訓練的網絡至關重要。

翻譯自:https://blog.roboflow.com/activation-function-computer-vision/

繼續閱讀