AI時代系列(1) 機器學習三部曲: 🔹 第一部:《機器學習 —— AI 智慧的啟航》
38/100 第四週:監督學習(分類)
38. 神經網路分類(ANN) 🧠 多層感知機(MLP)可以學習複雜模式,提高分類準確率!
神經網路分類(Artificial Neural Network, ANN)
🧠 多層感知機(MLP)能學習複雜非線性模式,提升分類準確率!
________________________________________
✅ 什麼是人工神經網路(ANN)?
人工神經網路模仿人腦神經元運作,能夠處理複雜且非線性的分類問題。
特別適合應對:
✅ 大量特徵
✅ 資料維度高
✅ 複雜模式辨識
其中,最常見的結構是 多層感知機(MLP, Multi-Layer Perceptron)。
________________________________________
✅ 多層感知機(MLP)結構概覽
輸入層(Input Layer)
↓
隱藏層(Hidden Layer) - 可有一層或多層,內部有大量神經元
↓
輸出層(Output Layer) - 產生最終分類結果
每一層的神經元透過 加權總和 + 激活函數(Activation Function) 運算,逐層學習數據特徵。
________________________________________
✅ 核心特點與優勢
🎯 能學習非線性關係:突破傳統線性模型限制
🎯 適應性強:能處理文字、圖片、音訊等不同型態數據
🎯 自動特徵提取:隱藏層可自動捕捉資料內的隱含模式
🎯 可擴展性高:增加神經元或層數即可應對更複雜問題
________________________________________
✅ 適用場景
🔥 圖片辨識(Image Classification)
🔥 語音識別(Speech Recognition)
🔥 文字分類(Text Classification)
🔥 金融風險評估 / 信用評分
🔥 醫療診斷(Disease Prediction)
________________________________________
✅ 常用激活函數(Activation Function)
函數名稱 數學公式 特點與適用場景
ReLU(Rectified Linear Unit)
f(x)=max(0,x)
________________________________________
✅ Python 簡單實作(以 sklearn MLPClassifier 為例)
python
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score
# 載入手寫數字數據集
digits = load_digits()
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=42)
# 建立並訓練 MLP 模型
mlp = MLPClassifier(hidden_layer_sizes=(100,), activation='relu', max_iter=300, random_state=42)
mlp.fit(X_train, y_train)
# 預測與評估
y_pred = mlp.predict(X_test)
print(f"神經網路分類準確率:{accuracy_score(y_test, y_pred):.2f}")
這段程式碼展示了如何使用 Scikit-learn 建立一個簡單的多層感知器神經網路(MLPClassifier),對手寫數字圖片進行分類。程式首先載入 load_digits 數據集,將資料分為訓練與測試集,接著建立一個具有單層 100 個神經元、使用 ReLU 激活函數的神經網路模型,進行訓練。訓練完成後,對測試資料進行預測,並計算準確率,結果顯示模型在手寫數字分類任務上具有相當良好的表現,能有效辨識 0~9 的數字圖像。
________________________________________
✅ MLP 參數說明(重點)
hidden_layer_sizes=(100,) 隱藏層結構(可設多層,如 (100, 50))
activation='relu' 激活函數選擇(relu、tanh、logistic)
max_iter=300 最大訓練迭代次數
solver='adam' 最優化算法(adam、sgd 等)
________________________________________
✅ 優缺點總覽
✅ 優點 ⚠ 缺點
學習能力強,能處理複雜非線性問題! 訓練時間長、需大量數據
自動提取特徵,減少人工干預! 容易過擬合,需搭配正則化
支援多分類與回歸問題! 超參數多,需謹慎調整
________________________________________
✅ 總結關鍵句
💡 「MLP 神經網路擅長挖掘複雜資料特徵,尤其在圖片、語音、文字分類等應用中效果卓越!」
________________________________________
如果你想延伸了解:
✅ 深度神經網路(DNN)與 MLP 差異
✅ 加入 Dropout 技術避免過擬合
✅ CNN、RNN 與 MLP 的應用比較