LESSON 15分

再学習戦略

田中VPoE「ドリフト検出の仕組みを学んだ。ドリフトが検知された後にどう対処するかが次の課題だ。再学習のトリガーと戦略を設計しよう。」

あなた「定期的に再学習するか、ドリフトを検知したら再学習するか、どちらが良いんでしょうか。」

田中VPoE「ユースケースによるが、両方を組み合わせるのが実践的だ。それぞれの戦略とトレードオフを見ていこう。」

再学習のトリガー戦略

戦略トリガー利点欠点
定期再学習スケジュール(日次/週次/月次)予測可能、運用が安定不要な再学習、急変に対応遅れ
イベント駆動ドリフト検知、精度低下必要な時のみ再学習検出精度に依存、運用が複雑
ハイブリッド定期 + イベント駆動バランスが良い設計・運用がやや複雑

ハイブリッド戦略の設計例

RETRAIN_CONFIG = {
    "scheduled": {
        "frequency": "weekly",
        "day": "monday",
        "time": "02:00",
    },
    "event_driven": {
        "drift_psi_threshold": 0.25,
        "accuracy_drop_threshold": 0.05,
        "consecutive_alerts": 3,
    },
    "cooldown_hours": 24,  # 再学習後の最小待機時間
}

再学習データの選択

方式説明ユースケース
全期間データ過去の全データで再学習データ量が少ない、安定したドメイン
スライディングウィンドウ直近N日間のデータのみ使用トレンドが変化するドメイン
重み付きサンプリング新しいデータに高い重みを付与緩やかな変化のあるドメイン
def select_training_window(strategy: str, window_days: int = 90) -> tuple:
    """再学習用データの期間を選択する"""
    from datetime import datetime, timedelta
    end_date = datetime.now()

    if strategy == "full":
        start_date = datetime(2020, 1, 1)
    elif strategy == "sliding_window":
        start_date = end_date - timedelta(days=window_days)
    elif strategy == "weighted":
        start_date = end_date - timedelta(days=window_days * 2)
    else:
        raise ValueError(f"Unknown strategy: {strategy}")

    return start_date, end_date

再学習パイプラインの安全策

再学習は自動化しつつも、安全策を組み込むことが重要です。

安全策内容
チャンピオン/チャレンジャー新モデルを現行モデルと比較してから入れ替え
品質ゲート精度・レイテンシの閾値をクリアした場合のみデプロイ
自動ロールバックデプロイ後に性能劣化を検知したら即座に切り戻し
人間による承認重要なモデルは手動承認を必須にする

まとめ

項目ポイント
トリガー戦略定期・イベント駆動・ハイブリッドの3つから選択
データ選択全期間・スライディングウィンドウ・重み付きサンプリング
安全策チャンピオン/チャレンジャー比較、品質ゲート、自動ロールバック

チェックリスト

  • 3つの再学習トリガー戦略のトレードオフを説明できる
  • 再学習データの選択方式を使い分けられる
  • 再学習パイプラインに組み込むべき安全策を列挙できる

次のステップへ

再学習戦略を理解しました。次は演習で、モニタリングとドリフト検出の仕組みを実際に構築してみましょう。


推定読了時間:15分