Hyperparameters
What?
超參數(Hyperparameters)是機器學習模型中的一種特殊設定值,用來控制演算法的行為或優化過程。與模型在訓練後生成的參數不同,超參數是在訓練過程前由使用者手動設定的。
舉個例子,假設我們要訓練一個神經網路,像學習率(Learning Rate)、隱藏層的數量(Number of Hidden Layers)、和每層的神經元數量(Number of Neurons)都是典型的超參數。這些設定會直接影響模型表現,卻不會在訓練中自動更新。
Who?
超參數主要由 資料科學家、機器學習工程師 或相關技術工作者設置。他們可能需要根據具體的應用場景進行調整,例如分類任務、回歸分析或推薦系統等不同需求。
此外,愛好者在實驗性質的小型專案中也可能接觸到超參數,例如使用 Python 的 scikit-learn 或 TensorFlow 開發模型時調整超參數。
When?
我們通常會在以下時間點使用或調整超參數:
- 模型初始化階段:開始訓練之前,需要先設置基本架構和相關控制變量。
- 模型調優階段:透過實驗反覆嘗試不同組合,找到最佳配置。例如使用 Grid Search 或 Random Search。
- 性能分析階段:完成初步訓練後分析結果並進行必要微調。
Where?
超參數主要存在於機器學習流程中的以下部分:
- 模型定義階段:例如選擇演算法時需要指定特定值,比如隨機森林中的樹的數量 (
n_estimators) 或支援向量機中的C和gamma。 - 優化算法設定:如梯度下降法中的 Learning Rate。
- 架構設計環節:特別是深度學習中網路架構相關配置,例如 Dropout Rate。
這些值通常可以在程式碼中直接傳入函式作為引數,也可以透過框架預設值進行控制。
Why?
調整超參數是為了提升模型性能,使其能更好地適應資料特性並達到業務目標。以下列出幾個常見問題以及如何透過超參數解決:
- 過度擬合問題(Overfitting):
- 解法:減少隱藏層神經元或增加 Dropout Rate。
- 收斂速度慢或無法收斂:
- 解法:調整 Learning Rate,使梯度下降更有效率。
- 計算資源不足問題:
- 解法:降低批次大小(Batch Size),以減少記憶體佔用。
How?
🛠️ 建立階段
建立階段通常包含以下流程:
- 選擇基礎演算法(例如 Logistic Regression、Random Forest)。
- 定義必要的超參數及其範圍,如:
learning_rate = 0.01n_estimators = 100
- 使用工具如 Grid Search 或 Random Search 測試多組組合。
- 設定其他環境變量,如批次大小(Batch Size)和訓練週期次數(Epochs)。
🔍 查詢階段
查詢階段則偏向做性能分析和結果比較:
- 評估每組配置下模型表現,例如比較準確率(Accuracy)、損失函式值(Loss Function Value)。
- 根據指標選擇最優組合並進一步微調:
- 如果效果不佳,可重新回到建立階段進行修改。
- 觀察是否有明顯改善,再投入正式部署。
補充說明
📌 範例比較
以下是一個簡單範例:
超參數組合比較
| 超參數組合 | 準確率 | 計算時間 |
|---|---|---|
learning_rate=0.01, n_estimators=50 | 88% | 15秒 |
learning_rate=0.001, n_estimators=100 | 91% | 40秒 |
從表格可看出,一味增加樹的数量可能提升準確率,但也伴隨更高計算成本,需要根據需求平衡取捨。
🧠 延伸/常見誤解
誤解澄清
- 超參數≠模型参数:前者需手動設定,後者則由訓練生成。
- Learning Rate 並非越小越好,小到某程度可能導致收斂速度太慢甚至無法收斂。