ハイパーパラメータ
学習目標: 主要なハイパーパラメータとチューニング手法を理解する
主要なハイパーパラメータ
| パラメータ | 説明 | 推奨値 |
|---|---|---|
| 学習率 | パラメータ更新の大きさ | 0.001〜0.0001 |
| バッチサイズ | 1回の更新で使うサンプル数 | 32, 64, 128 |
| エポック数 | 全データを何回学習するか | 早期終了で決定 |
| ドロップアウト率 | 無効化するニューロンの割合 | 0.2〜0.5 |
| 重み減衰 | L2正則化の強さ | 1e-4〜1e-5 |
チューニング手法
グリッドサーチ
全ての組み合わせを試す
計算コスト高ランダムサーチ
ランダムにサンプリング
推奨ベイズ最適化
過去の結果から次を予測
最も効率的早期終了の実装
class EarlyStopping:
def __init__(self, patience=5, min_delta=0.001):
self.patience = patience
self.min_delta = min_delta
self.best_loss = float('inf')
self.counter = 0
def __call__(self, val_loss):
if val_loss < self.best_loss - self.min_delta:
self.best_loss = val_loss
self.counter = 0
else:
self.counter += 1
return self.counter >= self.patience
# 使用例
early_stopping = EarlyStopping(patience=5)
for epoch in range(100):
train_loss = train(...)
val_loss = validate(...)
if early_stopping(val_loss):
print(f"Early stopping at epoch {epoch}")
break
理解度チェック
Q. 学習率が大きすぎると何が起こる?