Hyperparameters_and_Fine_tuning.md
在機器學習中,超參數(Hyperparameters) 是在模型訓練開始前所設定的參數,與資料本身無直接關係,通常無法透過訓練資料自動學習;而 微調(Fine-tuning) 是針對模型訓練過程中進行的優化策略,以提升泛化能力或預測效果。
1. 超參數與參數的區別
模型參數
在訓練過程中學習出來的值(如迴歸係數)
由模型自動學習
超參數
需在訓練前設定,控制學習流程與結構
需透過手動、網格搜尋等方式設定
2. 常見的超參數
以下為不同模型中常見的超參數範例:
2.1 線性回歸(含正則化)
alpha
:正則化強度(Lasso、Ridge)fit_intercept
:是否包含截距
2.2 決策樹 / 隨機森林
max_depth
:樹的最大深度min_samples_split
:節點拆分的最小樣本數n_estimators
:樹的數量(隨機森林、梯度提升樹)
2.3 神經網路
learning_rate
:學習率batch_size
:每次更新所使用的樣本數epochs
:訓練週期數optimizer
:優化器選擇(如 SGD, Adam)
3. 模型微調策略(Fine-tuning Strategies)
微調的目標為找到最佳的超參數組合,使模型能達到最佳效能。
3.1 手動微調
根據經驗與結果觀察進行調整。
3.2 Grid Search(網格搜尋)
列舉所有可能的超參數組合,針對每一組進行交叉驗證。
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import Ridge
param_grid = {'alpha': [0.01, 0.1, 1, 10]}
model = Ridge()
grid = GridSearchCV(model, param_grid, cv=5)
grid.fit(X, y)
print("最佳 alpha:", grid.best_params_)
3.3 Randomized Search
隨機從參數空間抽樣若干組合進行評估,效率較高。
3.4 Bayesian Optimization / HyperOpt / Optuna
進階自動搜尋方法,能更有效找到最佳參數。
3.5 微調的三種方式
凍結預訓練權重(Freeze)
保留預訓練模型的所有權重,只訓練最後幾層(通常是分類層)
資料量小,特徵與原始任務相近
部分微調(Partial Fine-tuning)
解凍部分層(通常是靠近輸出端的幾層),同時訓練這些層與分類器
資料中等、任務與原始不同但特徵相近
全模型微調(Full Fine-tuning)
解凍所有層,讓模型在新任務上進行完整再訓練
資料量大,或原任務與新任務差異大
4. 過擬合與泛化能力
選擇過大的模型或錯誤的超參數組合,可能導致過擬合(overfitting),即模型在訓練資料上表現良好但泛化能力差。適當微調超參數(如正則化強度、模型深度)是改善過擬合的關鍵策略之一。
5. 小結
超參數需在訓練前設定,會影響模型結構與訓練流程
微調是模型訓練中的重要步驟,可提升模型效能與穩定性
善用 Grid Search、交叉驗證與正則化技巧可達到良好效果
接下來可考慮學習 AutoML 與 Hyperparameter Optimization 套件(如 Optuna)以進一步提升效率。
Last updated