神州順利辦深一做網(wǎng)站百度搜索排行seo
【激活函數(shù)】Activation Function——在卷積神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)是一個什么樣的角色??
Activation Function——在卷積神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)是一個什么樣的角色??
文章目錄
- 【激活函數(shù)】Activation Function——在卷積神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)是一個什么樣的角色??
- 激活函數(shù)
- CNN中為什么必須要用激活函數(shù)呢?
- 激活函數(shù)的主要作用:
- 常用的激活函數(shù)及其應(yīng)用
- 1.Sigmoid 函數(shù)
- 2.Tanh 函數(shù)
- 3.ReLU (Rectified Linear Unit) 函數(shù)
- 4.Leaky ReLU 函數(shù)
- 5.ELU (Exponential Linear Unit) 函數(shù)
- 6.Swish 函數(shù)
- 7.Softmax 函數(shù)
- 激活函數(shù)的選擇依據(jù)
- 總結(jié)
激活函數(shù)
- 激活函數(shù)(Activation Function)是深度學(xué)習(xí)中將輸入信號的加權(quán)和轉(zhuǎn)化為輸出信號的非線性變換。激活函數(shù)的引入解決了線性模型中無法處理復(fù)雜模式的問題,確保神經(jīng)網(wǎng)絡(luò)具有表達(dá)復(fù)雜函數(shù)、捕捉非線性關(guān)系的能力。
CNN中為什么必須要用激活函數(shù)呢?
- 如果不使用激活函數(shù),神經(jīng)網(wǎng)絡(luò)層與層之間的輸出將是線性的組合,等效于單一的線性模型。無論網(wǎng)絡(luò)多么深,最終的輸出都是輸入的線性變換,無法解決復(fù)雜的模式識別問題。因此,激活函數(shù)引入了非線性,使神經(jīng)網(wǎng)絡(luò)能夠擬合復(fù)雜的高維數(shù)據(jù)。
激活函數(shù)的主要作用:
-
引入非線性:神經(jīng)網(wǎng)絡(luò)通過激活函數(shù)引入非線性,能夠擬合復(fù)雜的非線性函數(shù),解決復(fù)雜問題。
-
保證梯度傳播:通過適當(dāng)?shù)募せ詈瘮?shù)可以使得梯度能夠良好地反向傳播,從而有效地進行參數(shù)更新。
-
特征壓縮與選擇:激活函數(shù)通常可以對輸入信號進行壓縮,抑制不重要的信號并突出關(guān)鍵的特征。
常用的激活函數(shù)及其應(yīng)用
1.Sigmoid 函數(shù)
公式:
f ( x ) = 2 1 + e ? x f(x)=\frac{2}{1+e^{-x}} f(x)=1+e?x2?
作用:
- 將輸入值映射到 0 到 1 之間的概率區(qū)間。
- 常用于二分類問題的輸出層。
優(yōu)缺點:
- 優(yōu)點:常用于二分類問題的輸出層。
- 缺點:當(dāng)輸入值絕對值過大時,梯度趨于 0,導(dǎo)致梯度消失問題,無法有效訓(xùn)練深層網(wǎng)絡(luò)。
代碼示例:
import tensorflow as tf# Sigmoid 激活函數(shù)
x = tf.random.normal([1, 5])
output = tf.nn.sigmoid(x)
print(output)
適用場景:
- 二分類任務(wù)(例如:Logistic 回歸的輸出層)。
- 小型網(wǎng)絡(luò),不適用于深度網(wǎng)絡(luò)。
2.Tanh 函數(shù)
公式:
f ( x ) = 2 1 + e ? 2 x ? 1 f(x)=\frac{2}{1+e^{-2x}}-1 f(x)=1+e?2x2??1
作用:
- 將輸入值映射到 -1 到 1 的區(qū)間。
- Tanh 函數(shù)對 0 的輸入是對稱的,即它是零中心化的。
優(yōu)缺點:
- 優(yōu)點:零中心化,更適合處理有負(fù)數(shù)輸入的特征。
- 缺點:同樣存在梯度消失問題,當(dāng)輸入值很大或很小時,梯度趨近于 0。
代碼示例:
import tensorflow as tf# Tanh 激活函數(shù)
x = tf.random.normal([1, 5])
output = tf.nn.tanh(x)
print(output)
適用場景:
- 自然語言處理等需要處理負(fù)值的場景。
- 常用于 RNN 和 LSTM 中。
3.ReLU (Rectified Linear Unit) 函數(shù)
公式:
f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)
作用:
- 當(dāng)輸入大于 0 時,ReLU 輸出輸入值本身;當(dāng)輸入小于或等于 0 時,輸出 0。
- 引入非線性,并且計算非常簡單,收斂速度快。
優(yōu)缺點:
- 優(yōu)點:引入非線性,并且計算非常簡單,收斂速度快。
- 缺點:當(dāng)輸入小于 0 時,神經(jīng)元可能會死亡(即無法再激活),這叫做 “ReLU 死亡” 問題。
代碼示例:
import tensorflow as tf# ReLU 激活函數(shù)
x = tf.random.normal([1, 5])
output = tf.nn.relu(x)
print(output)
適用場景:
- 深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)、全連接網(wǎng)絡(luò)(FCN)等幾乎所有深度學(xué)習(xí)模型中。
4.Leaky ReLU 函數(shù)
公式:
f ( x ) = m a x ( 0.01 x , x ) f(x)=max(0.01x,x) f(x)=max(0.01x,x)
作用:
- 類似于 ReLU,但對于負(fù)值輸入不完全為 0,而是乘以一個較小的斜率(通常為 0.01),以解決 ReLU 死亡問題。
優(yōu)缺點:
- 優(yōu)點:在負(fù)值區(qū)域保留小的梯度,避免了 ReLU 的死亡問題。
- 缺點:相比 ReLU 的簡單性,增加了計算量。
代碼示例:
import tensorflow as tf# Leaky ReLU 激活函數(shù)
x = tf.random.normal([1, 5])
output = tf.nn.leaky_relu(x, alpha=0.01) # alpha 是負(fù)值部分的斜率
print(output)
適用場景:
- 深度神經(jīng)網(wǎng)絡(luò)中,尤其是在 ReLU 出現(xiàn)大量 “死亡神經(jīng)元” 的情況下。
5.ELU (Exponential Linear Unit) 函數(shù)
公式:
f ( x ) = { x , i f x > 0 , α ( e x ? 1 ) , i f x ≤ 0 f(x)=\begin{cases} x, &if&x>0,\\ α(e^x-1), &if&x \le 0 \end{cases} f(x)={x,α(ex?1),?ifif?x>0,x≤0?
作用:
- 對于正值,ELU 類似于 ReLU;對于負(fù)值,它的輸出為指數(shù)衰減而非零,這樣可以讓網(wǎng)絡(luò)學(xué)習(xí)負(fù)數(shù)特征,同時保持梯度流動。
優(yōu)缺點:
- 優(yōu)點:相比 Leaky ReLU,有更好的訓(xùn)練表現(xiàn),減少了偏差。
- 缺點:計算稍復(fù)雜,訓(xùn)練速度略慢于 ReLU。
代碼示例:
import tensorflow as tf# ELU 激活函數(shù)
x = tf.random.normal([1, 5])
output = tf.nn.elu(x)
print(output)
適用場景:
- 深度網(wǎng)絡(luò)中,用于代替 ReLU,特別是需要保留負(fù)數(shù)特征的場景。
6.Swish 函數(shù)
公式:
f ( x ) = x ? s i g m o i d ( x ) f(x)=x·sigmoid(x) f(x)=x?sigmoid(x)
作用:
- Swish 是一種自適應(yīng)激活函數(shù),結(jié)合了 Sigmoid 和 ReLU 的特性,并能平滑地處理負(fù)值輸入,提供更好的表現(xiàn)。
優(yōu)缺點:
- 優(yōu)點:在一些任務(wù)上,Swish 的表現(xiàn)優(yōu)于 ReLU。
- 缺點:計算稍復(fù)雜,訓(xùn)練速度較慢。
代碼示例:
import tensorflow as tf# Swish 激活函數(shù)
x = tf.random.normal([1, 5])
output = x * tf.nn.sigmoid(x)
print(output)
適用場景:
- 深層神經(jīng)網(wǎng)絡(luò)中,特別是在需要更好的訓(xùn)練表現(xiàn)時(如 EfficientNet)。
7.Softmax 函數(shù)
公式:
f ( x ) = e x i ∑ j e x j f(x)=\frac{e^{x_i}}{∑_je^{x_j}} f(x)=∑j?exj?exi??
作用:
- 將輸入映射為一個概率分布,所有輸出值的和為 1。
- 通常用于多分類任務(wù)的輸出層。
優(yōu)缺點:
- 優(yōu)點:用于分類問題時,能夠很好地提供歸一化概率。
- 缺點:僅適用于分類任務(wù)的輸出層。
代碼示例:
import tensorflow as tf# Softmax 激活函數(shù)
x = tf.random.normal([1, 5])
output = tf.nn.softmax(x)
print(output)
適用場景:
- 多分類問題 的輸出層,如圖像分類、文本分類。
激活函數(shù)的選擇依據(jù)
- 二分類問題:一般選擇 Sigmoid 作為輸出層激活函數(shù)。
- 多分類問題:常使用 Softmax 作為輸出層激活函數(shù),提供概率分布。
- 卷積網(wǎng)絡(luò):通常使用 ReLU 或 Leaky ReLU,可以加快網(wǎng)絡(luò)收斂,并處理梯度問題。
- 深度網(wǎng)絡(luò):可以考慮使用 Swish 或 Leaky ReLU,在深層網(wǎng)絡(luò)中能夠避免死神經(jīng)元和梯度消失。
- 自然語言處理或時間序列處理:常見激活函數(shù)為 Tanh 或 Sigmoid,配合 LSTM 或 GRU 使用。
總結(jié)
激活函數(shù)為神經(jīng)網(wǎng)絡(luò)引入了非線性特性,使得網(wǎng)絡(luò)能夠擬合復(fù)雜的數(shù)據(jù)模式和關(guān)系。選擇合適的激活函數(shù)不僅能提升模型的表現(xiàn),還能有效解決訓(xùn)練中的一些問題,如梯度消失和死神經(jīng)元問題。不同的激活函數(shù)在不同場景下有各自的優(yōu)勢和適用性,因此在實際應(yīng)用中需要根據(jù)具體任務(wù)和數(shù)據(jù)來合理選擇。