跳至主要内容

Hyperparameters

What?​

超參數(Hyperparameters)是機器學習模型中的一種特殊設定值,用來控制演算法的行為或優化過程。與模型在訓練後生成的參數不同,超參數是在訓練過程前由使用者手動設定的。

舉個例子,假設我們要訓練一個神經網路,像學習率(Learning Rate)、隱藏層的數量(Number of Hidden Layers)、和每層的神經元數量(Number of Neurons)都是典型的超參數。這些設定會直接影響模型表現,卻不會在訓練中自動更新。


Who?​

超參數主要由 資料科學家、機器學習工程師 或相關技術工作者設置。他們可能需要根據具體的應用場景進行調整,例如分類任務、回歸分析或推薦系統等不同需求。

此外,愛好者在實驗性質的小型專案中也可能接觸到超參數,例如使用 Python 的 scikit-learn 或 TensorFlow 開發模型時調整超參數。


When?​

我們通常會在以下時間點使用或調整超參數:

  1. 模型初始化階段:開始訓練之前,需要先設置基本架構和相關控制變量。
  2. 模型調優階段:透過實驗反覆嘗試不同組合,找到最佳配置。例如使用 Grid Search 或 Random Search。
  3. 性能分析階段:完成初步訓練後分析結果並進行必要微調。

Where?​

超參數主要存在於機器學習流程中的以下部分:

  1. 模型定義階段:例如選擇演算法時需要指定特定值,比如隨機森林中的樹的數量 (n_estimators) 或支援向量機中的 C 和 gamma。
  2. 優化算法設定:如梯度下降法中的 Learning Rate。
  3. 架構設計環節:特別是深度學習中網路架構相關配置,例如 Dropout Rate。

這些值通常可以在程式碼中直接傳入函式作為引數,也可以透過框架預設值進行控制。


Why?​

調整超參數是為了提升模型性能,使其能更好地適應資料特性並達到業務目標。以下列出幾個常見問題以及如何透過超參數解決:

  1. 過度擬合問題(Overfitting):
    • 解法:減少隱藏層神經元或增加 Dropout Rate。
  2. 收斂速度慢或無法收斂:
    • 解法:調整 Learning Rate,使梯度下降更有效率。
  3. 計算資源不足問題:
    • 解法:降低批次大小(Batch Size),以減少記憶體佔用。

How?​

🛠️ 建立階段​

建立階段通常包含以下流程:

  1. 選擇基礎演算法(例如 Logistic Regression、Random Forest)。
  2. 定義必要的超參數及其範圍,如:
    • learning_rate = 0.01
    • n_estimators = 100
  3. 使用工具如 Grid Search 或 Random Search 測試多組組合。
  4. 設定其他環境變量,如批次大小(Batch Size)和訓練週期次數(Epochs)。

🔍 查詢階段​

查詢階段則偏向做性能分析和結果比較:

  1. 評估每組配置下模型表現,例如比較準確率(Accuracy)、損失函式值(Loss Function Value)。
  2. 根據指標選擇最優組合並進一步微調:
    • 如果效果不佳,可重新回到建立階段進行修改。
  3. 觀察是否有明顯改善,再投入正式部署。

補充說明​

📌 範例比較​

以下是一個簡單範例:

超參數組合比較​

超參數組合準確率計算時間
learning_rate=0.01, n_estimators=5088%15秒
learning_rate=0.001, n_estimators=10091%40秒

從表格可看出,一味增加樹的数量可能提升準確率,但也伴隨更高計算成本,需要根據需求平衡取捨。


🧠 延伸/常見誤解​

誤解澄清​

  • 超參數≠模型参数:前者需手動設定,後者則由訓練生成。
  • Learning Rate 並非越小越好,小到某程度可能導致收斂速度太慢甚至無法收斂。