AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》
15/100 第二週:多層感知器 MLP
15. 損失函數實例:交叉熵 vs 均方誤差 ⚖ 不同任務選對工具才有效!
________________________________________
✅ 核心概念:
損失函數(Loss Function)決定了模型「學習的方向」,是衡量預測值與真實值差距的關鍵指標。
選錯損失函數就像用尺量重量,永遠得不到正確的結果!
📌 本節將比較兩種常見損失函數:
• 交叉熵(Cross Entropy) → 用於分類任務
• 均方誤差(MSE) → 用於迴歸任務
________________________________________
🔍 一、交叉熵損失(Cross Entropy Loss)
衡量兩個機率分布之間的差異,常用於分類問題。
🚦 適用場景:
• 二分類(Sigmoid + BCE)
• 多分類(Softmax + Categorical CE)
📐 定義公式(多分類):
L = - Σ yᵢ · log(ŷᵢ)
其中:
• yᵢ 是實際標籤(one-hot 編碼)
• ŷᵢ 是模型預測的機率值
✅ 優點:
• 對機率差異敏感(預測錯誤會產生很大懲罰)
• 與 Softmax/Sigmoid 自然搭配
• 更容易收斂與穩定
________________________________________
🧮 二、均方誤差(Mean Squared Error, MSE)
用於測量預測值與實際值的距離平方差,常見於數值預測(迴歸)。
🚦 適用場景:
• 連續數值輸出(預測房價、溫度、股價)
• 非分類問題
📐 定義公式:
L = (1/n) Σ (y - ŷ)²
✅ 優點:
• 簡單直觀
• 適合數值距離的最小化
⚠ 缺點:
• 在分類任務中,梯度收斂慢,效果差
• 對離群值過於敏感
________________________________________
📊 損失函數選擇比較表:
損失函數的選擇應根據任務性質而定。**均方誤差(MSE)適用於迴歸問題,輸出為連續數值,對離群值特別敏感,收斂速度較慢,常用於房價或股價預測;而交叉熵(Cross Entropy)**則專為分類任務設計,輸出為機率分布(如 Softmax 或 Sigmoid),對錯誤分類的懲罰較大,有助於提升分類準確性與收斂效率,適用於如 MNIST 手寫數字或圖像辨識等應用。兩者分別對應不同的輸出型態與學習需求,是深度學習模型設計中的重要選擇依據。
_______________________________________
🧪 TensorFlow 實作範例
🔹 用於分類(交叉熵):
python
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
🔹 用於迴歸(均方誤差):
python
model.compile(optimizer='adam',
loss='mean_squared_error',
metrics=['mae']) # 平均絕對誤差
上面的程式碼展示了 TensorFlow 在不同任務下的設定:分類問題使用 交叉熵(sparse_categorical_crossentropy) 搭配 accuracy 衡量準確率,迴歸問題則用 均方誤差(mean_squared_error) 搭配 平均絕對誤差(mae) 評估偏差,兩者皆透過 Adam 優化器 自動調整學習率來更新權重,差別只在於任務性質導致的損失函數與評估指標不同。
________________________________________
🧠 小提醒:分類時不要用 MSE!
使用均方誤差來做分類會出現什麼問題?
• 模型收斂變慢(因為機率輸出不是連續距離)
• Loss 很難引導模型把錯誤分類修正
✅ 正確做法是搭配 Softmax + Cross Entropy 才能提供足夠梯度訊號讓模型學會分類。
________________________________________
🎯 小結與啟示:
✅ 損失函數 = 模型學習的方向指引
✅ 分類用交叉熵,預測數值用 MSE,選對工具事半功倍!
✅ 不同模型結構對損失函數的敏感度不同,要根據任務類型來選擇