【MLA-C01】学習とハイパーパラメータ調整|過学習対策・自動モデルチューニング・アンサンブルを図解

学習とハイパーパラメータ調整 MLA-C01 AWS資格の森 機械学習エンジニア(MLA)
無料MLA-C01 ドメイン2:モデル開発|M2-2「学習とハイパーパラメータ調整」。過学習対策(正則化)・自動モデルチューニング・アンサンブル・モデル管理を図解します。

アルゴリズムを選んだら、次はうまく学習させる工程です。学習が足りなければ精度が出ず、やりすぎれば過学習。ここでは、学習の基本(エポック・バッチ)、過学習を防ぐ正則化、効率よく最適なハイパーパラメータを探す自動モデルチューニング(AMT)、精度を上げるアンサンブル、そしてモデルのバージョン管理までを押さえます。前の記事は M2-1、全体像は シラバスマップ をどうぞ。

モデルの学習とハイパーパラメータのチューニングを行うイメージ図
図:学習はダイヤルの調整に似ています。正則化やハイパーパラメータを調整して、過学習せず汎化するモデルに仕上げます。

学習の基本:エポック・バッチサイズ

  • エポック(epoch):学習データ全体を何回学習するか。少なすぎると未学習、多すぎると過学習に傾く
  • バッチサイズ(batch size):1回の更新に使うデータ数。学習の安定性や速度に影響
  • ステップ(steps):パラメータを更新する回数の単位

過学習・未学習を見分けて対処する

モデルの状態は3つ。未学習(underfitting)は学習も検証も低精度、過学習(overfitting)は学習だけ高く検証が低い、その間がちょうど良い汎化です。

未学習・ちょうど良い汎化・過学習の3つの状態を示す図
図:未学習は単純すぎ、過学習は複雑すぎて学習データを丸暗記した状態。学習データだけ高精度で検証が低ければ過学習のサインです。

過学習の主な対策は次のとおりです。

  • 正則化(regularization):モデルの複雑さに罰則を与える。L1/L2(weight decay)は重みを小さく保ち、dropoutは学習中に一部のユニットをランダムに無効化して過度な依存を防ぐ
  • 早期終了(early stopping):検証精度が悪化し始めたら学習を止める
  • データを増やす/特徴量を絞る:多様なデータや適切な特徴量選択で汎化を促す

補足:事前学習モデルを新しいデータで微調整すると、以前覚えた内容を忘れるcatastrophic forgetting(破滅的忘却)が起きることがあります。学習データの設計や調整で緩和します。

ハイパーパラメータを効率よく探す:自動モデルチューニング(AMT)

学習率や木の本数、層の数などのハイパーパラメータは、組み合わせが膨大で手動調整は非効率。SageMaker 自動モデルチューニング(AMT)が効率的に最適値を探します。探索戦略の違いを押さえましょう。

グリッドサーチ・ランダムサーチ・ベイズ最適化の探索の違いを示す図
図:グリッドは総当りで高コスト、ランダムは無作為、ベイズ最適化は過去の結果から「次に試すと良さそうな点」を賢く選ぶため効率的です。
  • グリッドサーチ:候補を総当り。確実だが組み合わせが増えると非常に高コスト
  • ランダムサーチ:無作為に試す。グリッドより効率的なことが多い
  • ベイズ最適化:これまでの結果をもとに、次に試す有望な点を推定。少ない試行で良い解に到達しやすい

精度を底上げ:アンサンブル

複数のモデルを組み合わせて性能を上げる手法です。

手法 考え方
バギング(bagging) 複数モデルを並列に学習し平均化。ばらつき(分散)を下げる
ブースティング(boosting) 前のモデルの誤りを次が補正(XGBoostが代表)。精度を上げる
スタッキング(stacking) 複数モデルの予測を別のモデルでまとめる

学習を速く・モデルを軽く

  • 分散学習(distributed training):複数インスタンス/GPUで分担し、学習時間を短縮
  • 早期終了:無駄な学習を打ち切り、時間とコストを削減
  • モデルサイズの削減:枝刈り(pruning)や圧縮で、推論時の軽量化・高速化を図る

モデルを管理する:SageMaker Model Registry

学習したモデルはバージョン管理が重要です。SageMaker Model Registryは、モデルのバージョン・メタデータ・承認状態を一元管理し、再現性と監査(どのデータ・コードで作ったか)を確保します。デプロイの承認フローにもつながります。

確認クイズ

Q1. あなたが学習させた分類モデルは、学習データでは98%の精度を出しますが、検証データでは72%と大きく落ち込みます。学習データのパターンを丸暗記してしまっている状態です。汎化性能を改善するための対策として、最も適切なものはどれですか。

A. エポック数を大幅に増やし、学習データへの当てはまりをさらに高める。
B. ニューラルネットの層やパラメータを増やし、モデルをより複雑にする。
C. dropoutやL1/L2などの正則化、早期終了、データ拡張を適用して過学習を抑える。
D. 学習率を大きくして、より速く学習データへ収束させる。

Q2. あなたは木の本数・深さ・学習率など多数のハイパーパラメータを持つモデルを調整しています。組み合わせが膨大で、すべてを総当りで試すと時間もコストもかかりすぎます。できるだけ少ない試行回数で良いハイパーパラメータに到達したいと考えています。最も適切なアプローチはどれですか。

A. すべての組み合わせを総当りするグリッドサーチを実行する。
B. SageMaker 自動モデルチューニング(AMT)でベイズ最適化を用い、過去の結果から有望な点を効率的に探索する。
C. 経験と勘で1つの組み合わせを決め、それだけで学習を確定する。
D. すべてデフォルト値のまま、チューニングは行わない。

Q3. あなたは大規模なデータセットでディープラーニングモデルを学習していますが、単一インスタンスでは学習に何日もかかり、コストもかさんでいます。精度を保ちつつ学習時間を短縮したいと考えています。最も適切な対策の組み合わせはどれですか。

A. 複数インスタンス/GPUによる分散学習を使い、あわせて早期終了で無駄な学習を打ち切る。
B. バッチサイズを1に固定し、1サンプルずつ更新して安定させる。
C. エポック数を10倍に増やし、学習を徹底的に行う。
D. より小さく非力なインスタンスへ変更してコストだけ下げる。

Q4. あなたのチームでは複数のモデルを継続的に学習・改善しており、どのバージョンが・どのデータとコードで作られ・承認されたかを追跡できる状態にして、監査と再現性を確保する必要があります。最も適切な仕組みはどれですか。

A. 学習済みモデルのファイルを、日付入りのファイル名でS3に置いて各自で管理する。
B. モデルファイルを各担当者のローカルPCに保存し、必要時に共有する。
C. モデルのバージョン情報を表計算ソフトに手入力で記録する。
D. SageMaker Model Registryでモデルのバージョン・メタデータ・承認状態を一元管理する。

よくある質問(FAQ)

Q. 過学習か未学習かはどう見分ける?

A. 学習データと検証データの精度差で見ます。両方低ければ未学習、学習だけ高く検証が低ければ過学習です。

Q. L1/L2正則化とdropoutの違いは?

A. L1/L2は重みに罰則を与えて小さく保つ手法、dropoutは学習中に一部のユニットを無効化して過度な依存を防ぐ手法です。いずれも過学習対策です。

Q. グリッドサーチとベイズ最適化、どちらを使う?

A. 組み合わせが少なければグリッドでも良いですが、多数のハイパーパラメータを効率よく探すならベイズ最適化(AMT)が有利です。

まとめ

  • 過学習=学習だけ高精度。対策は正則化(L1/L2・dropout)・早期終了・データ拡張
  • ハイパラ調整はAMTのベイズ最適化で少ない試行から効率探索
  • 精度向上にアンサンブル(バギング/ブースティング/スタッキング)
  • 学習時間は分散学習・早期終了で短縮、モデルはModel Registryで管理
🎯 次のステップ

※本記事はAWS公式試験ガイド(MLA-C01)および各サービスの公開ドキュメントに基づき、エンジニアKが作成しています。サービス仕様は更新されることがあるため、最新は必ずAWS公式でご確認ください。本サイトはAmazon Web Services, Inc.の公式サイトではありません。AWSは同社の商標です。

コメント

タイトルとURLをコピーしました