ハイパーパラメータ

学習目標: 主要なハイパーパラメータとチューニング手法を理解する

主要なハイパーパラメータ

パラメータ 説明 推奨値
学習率 パラメータ更新の大きさ 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. 学習率が大きすぎると何が起こる?