什麼是啟動函數(Activation function)

在神經網路的各神經元中,對輸入的加權和(加上偏差)所套用的函數。使用非線性函數,能讓多層堆疊的網路表示複雜的關係。隱藏層常用ReLU,輸出層則多半在二元分類使用S型函數(sigmoid),多類別分類使用softmax函數,迴歸使用恆等函數(不做任何變換的函數)。

日文名稱: 活性化関数

「啟動函數(Activation function)」出現在2領域的5道練習題中(機器學習基礎, AI硬體與軟體堆疊等)。

這個名詞所屬的領域: 機器學習基礎

為什麼需要非線性函數

若不使用啟動函數(使用恆等函數),各層就只剩矩陣乘法與向量加法。無論疊幾次線性變換,都能合併成一個線性變換,因此不管層數多深,能表示的都只是輸入的一次式。夾入非線性的啟動函數後,就能表示像XOR這種無法以一條直線分開的關係,以及更複雜的關係。

代表性的函數

S型函數 σ(z) = 1 ÷ (1 + e^(−z)) 的輸出落在0到1之間,可當作機率處理。tanh的輸出落在−1到1之間,是以0為中心的值。ReLU(z) = max(0, z) 是正的輸入原樣輸出、0以下的輸入輸出0的簡單函數,計算量小且梯度不易消失,因此是深層網路隱藏層的標準選擇。將ReLU平滑化的GELU等函數也很常用。

與梯度消失的關係

S型函數與tanh在輸入的絕對值大時,輸出會停在固定值附近,導數幾乎為0。S型函數的導數最大只有0.25,因此層數一多,梯度在反向傳播時會因連乘而變小,使靠近輸入的層難以學習(梯度消失)。ReLU在正的範圍導數為1,梯度不易變小。另一方面,輸入始終為負的神經元梯度一直為0而停止學習,因此也有在負的範圍給予小斜率的Leaky ReLU等函數。

練習啟動函數(Activation function)的題目

在堆疊許多層的神經網路中,若啟動函數使用S型函數,靠近輸入的層會難以學習,其理由為何者?

  1. AS型函數的導數最大只有0.25,因此在反向傳播中每經過一層梯度就變小,到靠近輸入的層時幾乎為0
  2. BS型函數的輸出不會落在0到1的範圍內,因此每經過一層值就變大,造成計算溢位
  3. CS型函數有無法微分的點,因此在反向傳播中會出現無法求出梯度的層
查看答案與解析

正確答案:A. S型函數的導數最大只有0.25,因此在反向傳播中每經過一層梯度就變小,到靠近輸入的層時幾乎為0

在反向傳播中,各層啟動函數的導數會依序乘到梯度上。S型函數的導數為 σ(z)(1 − σ(z)),最大只有0.25,因此例如經過10層後,梯度會變成 0.25¹⁰ ≈ 9.5 × 10⁻⁷ 那樣非常小。這稱為梯度消失。對策有使用在正的範圍導數為1的ReLU、加入讓訊號跳過層傳遞的殘差連接(跳躍連接)、改良權重的初始值,以及使用批次正規化等方法。

常見問題

softmax函數是啟動函數嗎?

它被視為多類別分類輸出層所用的啟動函數之一。不同於其他啟動函數對各神經元分別計算,softmax函數會使用輸出層的所有值,將其轉換為總和為1的機率。

與半導體製程中的「活化」有關嗎?

沒有關係。神經網路的啟動函數,名稱源自模仿神經細胞興奮(發火)的樣子。半導體製程中的活化,是指以熱處理使離子佈植的雜質進入晶格位置,成為能提供載子的狀態。

解析中的「啟動函數(Activation function)」

出現「啟動函數(Activation function)」的題目(5題)

  1. 在堆疊許多層的神經網路中,若啟動函數使用S型函數,靠近輸入的層會難以學習,其理由為何者?
  2. AI計算中使用的「運算融合(運算子融合)」,其主要目的為下列何者?
  3. AI框架或編譯器中使用的「計算圖」,下列說明何者正確?
  4. 只由輸入層與輸出層構成的簡單感知器(以閾值輸出0或1的單一神經元)無法表示的邏輯函數為何者?
  5. 某個輸入為 x₁ = 1、x₂ = 2 的小型神經網路,隱藏層的兩個神經元為 h₁ = ReLU(x₁ + x₂ − 1)、h₂ = ReLU(x₁ − 2x₂ + 1),輸出為 y = 2h₁ + 3h₂ + 1。y的值為何者?

半導體、電子電路與資訊計算工具

相關名詞

反向傳播(Backpropagation) 運算融合(Operator fusion) 計算圖(Computational graph) 主成分分析(PCA) 正規化(Regularization) 交叉驗證(Cross-validation) 卷積神經網路(CNN) 非監督式學習(Unsupervised learning) 強化學習(Reinforcement learning) 梯度下降法(Gradient descent)

前往名詞解釋列表