AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》
13/100 第二週:多層感知器 MLP
13.激活函數深入解析 🔧 非線性,才是智慧的來源!
_____________________________________
✅ 核心概念:
神經網路之所以強大,是因為它不只是加總數字,而是能學會非線性的抽象規律。這一切都要感謝一個關鍵元素:激活函數(Activation Function)!
📌 沒有激活函數 → 所有神經網路層層疊起來也只是線性模型
📌 有了激活函數 → 神經網路才能模擬複雜現象、學習人類語言、辨識貓狗圖片、甚至寫詩作畫!
________________________________________
🔍 為何要加入非線性?
假設每層只執行 Wx + b,那麼:
• 即使堆 100 層,整體仍然只是「一個線性轉換」
• 無法逼近現實世界的非線性邏輯(如 XOR、語音辨識、影像識別)
➡️ 加入激活函數後,模型才能突破「線性世界」,走向智慧。
________________________________________
🧠 常見激活函數總覽:
激活函數是神經網路中關鍵的非線性轉換元件,負責讓模型具備學習複雜特徵的能力。常見函數包括:
Sigmoid:輸出範圍在0到1之間,適合應用於二分類的輸出層,但在深層網路中容易造成梯度消失。
Tanh:輸出介於-1到1之間,屬於中心對稱函數,早期常用於隱藏層,表現通常優於 Sigmoid。
ReLU(Rectified Linear Unit):當前最常見的隱藏層激活函數,簡單、高效,能有效加快收斂速度,缺點是可能產生「死神經元」。
Leaky ReLU:針對 ReLU 死神經元問題進行改良,允許輸入為負時保留微小斜率,適用於深層或需更細緻調整的模型。
Softmax:將輸出轉為機率分布,常用於多分類任務的輸出層,能將所有輸出歸一化為總和為1的機率值。
整體來說,激活函數的選擇會依任務類型與模型架構而異,正確選擇對模型效能有關鍵影響。
________________________________________
🔬 ReLU:現代神經網路的標配
Rectified Linear Unit(ReLU) 是目前主流的激活函數,簡單卻威力強大:
python
def relu(x):
return max(0, x)
✅ 優點:
• 非常快,計算效率高
• 避免 Sigmoid 的梯度消失問題
• 收斂速度快 → 訓練時間變短
⚠️ 缺點:
• 輸入為負時梯度為 0 → 可能造成「死亡神經元」
➡️ 可用 Leaky ReLU 改進(讓負值部分保持微弱梯度)
________________________________________
🧪 實作示意(TensorFlow):
python
model = tf.keras.Sequential([
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
這段程式碼建立了一個簡單的前饋神經網路模型(多層感知器)。第一層為 128 個神經元的全連接層,使用 ReLU 激活函數負責提取特徵;第二層為輸出層,有 10 個神經元並使用 softmax 激活函數,將輸出轉為機率分布,適用於 10 類分類問題(如手寫數字辨識)。
________________________________________
📊 不同激活函數圖形行為對比:
函數 非線性? 是否常用? 注意事項
ReLU ✅ ✅✅✅ 可能會有神經元失活
Sigmoid ✅ ⚠ 容易梯度消失
Tanh ✅ ⚠ 可用但已被 ReLU 取代
Softmax ✅ ✅ 只用於輸出層
________________________________________
🧩 圖解(結構層示意):
[輸入層] → [Linear: W·x + b] → [Activation: ReLU] → [下一層]
↑↑↑
非線性決定模型智慧的起點
________________________________________
🎯 小結與啟示:
✅ 激活函數 = 神經網路的大腦皮質,能讓模型思考更複雜的邏輯
✅ 若沒有激活函數,所有網路只是「線性疊加」
✅ ReLU 是目前主流選擇,簡單又高效
✅ 選對激活函數,等於給模型正確的「思考能力」