はじめに
前回は、SageMaker Data Wrangler を中心に、
モデル学習前のデータ加工と特徴量作成について整理しました。
今回は、モデルを実際に学習させる工程である Training と、
モデル性能を改善するために重要な ハイパーパラメータチューニング について整理します。
機械学習では、同じデータを使っていても、
- 学習率をどう設定するか
- 何回学習させるか
- どのくらいのデータ単位で学習するか
- 木の深さをどこまで許すか
- 正則化をどれくらい効かせるか
によって、モデルの性能が大きく変わることがあります。
本記事では、
- Training とは何か
- ハイパーパラメータとは何か
- よく出るハイパーパラメータ
- チューニングとは何か
- Grid Search / Random Search / Bayesian Optimization の違い
- SageMaker での考え方
を、初心者にも分かりやすく整理します。
🎯 対象読者
- SageMaker Training Job の基本を整理したい方
- ハイパーパラメータの意味を理解したい方
- learning rate、epoch、batch size の違いが曖昧な方
- チューニングの考え方を基礎から学びたい方
- AWS の AI / ML 系資格を勉強している方
🧩 まず結論:Training は学習、チューニングは設定探し
最初に大きく整理すると、以下のようになります。
| 用語 | 意味 |
|---|---|
| Training | データを使ってモデルに規則を学習させること |
| Hyperparameter | 学習前に人やシステムが設定する値 |
| Tuning | 複数の設定を試して、より良い組み合わせを探すこと |
一言で言うと、
Training = モデルを学習させる
Tuning = モデルが良く学習できる設定を探す
というイメージです。
モデルはデータからパターンを学習しますが、
その学習の進め方を決める設定がハイパーパラメータです。
🏋️ Training とは?
Training とは、
既存のデータを使って、モデルに規則やパターンを学習させること です。
たとえば、過去の顧客データを使って、
この顧客は商品を購入しそうか
を予測するモデルを作る場合、モデルは過去データから以下のような傾向を学びます。
- 購入回数が多い顧客は、再購入しやすい
- 登録期間が長い顧客は、購入率が高い
- 特定の商品ページを見た顧客は、購入しやすい
- 過去にキャンペーンを利用した顧客は、反応しやすい
このように、データから規則を見つける工程が Training です。
☁️ SageMaker Training Job のイメージ
SageMaker では、モデル学習を Training Job として実行します。
基本的な流れは以下です。
訓練データを S3 に置く
↓
Training Job を起動する
↓
SageMaker が学習用インスタンスを起動する
↓
アルゴリズムや学習コードを実行する
↓
モデル成果物を生成する
↓
モデル成果物を S3 に保存する
Training Job は、モデルを学習するための一時的なジョブです。
学習が終わると、結果としてモデルファイルが作られます。
そのモデルファイルを使って、Endpoint や Batch Transform で予測を行います。
⚙️ ハイパーパラメータとは?
ハイパーパラメータとは、
モデルがデータから学習する値ではなく、学習前に人やシステムが設定する値 です。
英語では Hyperparameter と呼ばれます。
一言で言うと、
ハイパーパラメータ = モデル学習時の設定項目
です。
たとえば、以下のような設定があります。
- learning rate
- epoch
- batch size
- max depth
- number of trees
- regularization
これらは、モデルが自動的にデータから学ぶ値ではありません。
学習を始める前に、ある程度決めておく必要があります。
🧠 パラメータとハイパーパラメータの違い
ここで混乱しやすいのが、
パラメータ と ハイパーパラメータ の違いです。
| 種類 | 意味 | 例 |
|---|---|---|
| パラメータ | モデルが学習中にデータから獲得する値 | 重み、係数 |
| ハイパーパラメータ | 学習前に設定する値 | 学習率、epoch、batch size |
たとえば、線形回帰モデルでは、各特徴量に対する重みは学習によって決まります。
これはパラメータです。
一方で、学習率や学習回数は、学習前に設定するものなのでハイパーパラメータです。
📌 よく出るハイパーパラメータ
代表的なハイパーパラメータを整理します。
| ハイパーパラメータ | 日本語でのイメージ | 影響 |
|---|---|---|
| Learning rate | 学習率 | モデルが一度にどれくらい更新されるか |
| Epoch | 学習回数 | データ全体を何回学習するか |
| Batch size | バッチサイズ | 一度に何件のデータで学習するか |
| Max depth | 木の最大深さ | 決定木系モデルの複雑さ |
| Number of trees | 木の本数 | Random Forest や XGBoost などの木の数 |
| Regularization | 正則化 | 過学習を抑える強さ |
それぞれの設定は、モデルの精度、学習速度、過学習のしやすさ、計算コストに影響します。
📉 Learning Rate(学習率)とは?
Learning Rate は、
モデルが学習するときに、どれくらい大きく更新するか を決める値です。
一言で言うと、
Learning rate = 学習時の歩幅
です。
学習率が大きすぎると、最適な位置を飛び越えてしまい、学習が不安定になることがあります。
一方で、学習率が小さすぎると、少しずつしか進まないため、学習に時間がかかります。
🧪 Learning Rate のイメージ
山を下りながら一番低い場所を探すイメージで考えると分かりやすいです。
| Learning Rate | イメージ | 起きやすいこと |
|---|---|---|
| 大きすぎる | 大股で進む | 最適点を飛び越えて不安定 |
| 小さすぎる | 小さく進む | 学習が遅い |
| 適切 | ちょうどよく進む | 安定して学習しやすい |
Learning Rate は、多くのモデルで非常に重要なハイパーパラメータです。
🔁 Epoch とは?
Epoch は、
訓練データ全体を何回繰り返して学習するか を表します。
一言で言うと、
Epoch = 訓練データを何周するか
です。
たとえば、訓練データ全体を1回学習したら 1 epoch、
10回繰り返したら 10 epochs です。
Epoch が少なすぎる場合
十分に学習できず、underfitting になる可能性があります。
Epoch が多すぎる場合
訓練データに合わせすぎて、overfitting になる可能性があります。
そのため、epoch は多ければよいというものではありません。
📦 Batch Size とは?
Batch Size は、
1回の更新に使うデータ件数 を表します。
一言で言うと、
Batch size = 一度に何件ずつ学習するか
です。
たとえば、訓練データが10,000件ある場合、
- batch size = 100 なら、100件ずつ処理する
- batch size = 1,000 なら、1,000件ずつ処理する
というイメージです。
Batch size は、学習の安定性やメモリ使用量、学習速度に影響します。
🌳 Max Depth とは?
Max Depth は、決定木系モデルでよく出てくるハイパーパラメータです。
木の深さをどこまで許すか を指定します。
木が深くなるほど、データを細かく分けることができます。
しかし、深すぎると訓練データに合わせすぎて overfitting しやすくなります。
Max depth が大きい = モデルが複雑になりやすい
Max depth が小さい = モデルが単純になりやすい
Random Forest や XGBoost のようなモデルでは、よく意識する設定です。
🌲 Number of Trees とは?
Number of Trees は、Random Forest や XGBoost などで使われる、
木の本数 を表すハイパーパラメータです。
木の本数を増やすと、モデルの安定性が上がることがあります。
ただし、本数を増やしすぎると、
- 学習時間が長くなる
- 推論時間が長くなる
- コストが増える
可能性があります。
そのため、精度とコストのバランスを考える必要があります。
🛡 Regularization(正則化)とは?
Regularization は、
モデルが訓練データに合わせすぎないように制約をかける方法 です。
一言で言うと、
Regularization = 過学習を抑えるための仕組み
です。
Day 2 で整理した overfitting への対策として、正則化は非常に重要です。
モデルが複雑になりすぎると、訓練データにはよく合う一方で、
未知のデータに弱くなることがあります。
正則化は、このような過学習を抑えるために使われます。
🔧 チューニングとは?
チューニングとは、
ハイパーパラメータを調整して、モデルの性能を改善する作業 です。
一言で言うと、
Tuning = 良い設定の組み合わせを探す作業
です。
たとえば、最初に作ったモデルの精度が 80% だったとします。
その後、
- learning rate を変える
- epoch を変える
- max depth を変える
- regularization を変える
といった調整を行うことで、精度が 85% に上がるかもしれません。
このように、モデルの設定を試行錯誤しながら改善するのがチューニングです。
🧪 ハイパーパラメータチューニングの考え方
ハイパーパラメータチューニングでは、1つの設定だけを見るのではなく、
複数の設定の組み合わせを試します。
例えば、以下のような組み合わせです。
| Learning Rate | Max Depth | Regularization |
|---|---|---|
| 0.01 | 3 | 0.1 |
| 0.01 | 5 | 0.1 |
| 0.05 | 3 | 0.1 |
| 0.05 | 5 | 0.5 |
このように、複数の候補を試して、
validation data で最も良い結果を出した設定を選びます。
🧭 代表的なチューニング方法
ハイパーパラメータチューニングには、いくつか代表的な方法があります。
| 方法 | 説明 |
|---|---|
| 手動調整 | 経験や観察結果をもとに人が少しずつ調整する |
| Grid Search | 事前に決めたすべての組み合わせを試す |
| Random Search | ランダムにいくつかの組み合わせを試す |
| Bayesian Optimization | 過去の結果をもとに、次に試す設定を賢く選ぶ |
それぞれ特徴が違うため、使いどころも変わります。
✋ 手動調整
手動調整は、
人が経験や結果を見ながらハイパーパラメータを調整する方法です。
たとえば、
学習率が高すぎて不安定そうなので少し下げる
max depth が深すぎて過学習しているので小さくする
といった判断です。
メリット
- 理解しながら調整できる
- 小規模な実験では始めやすい
デメリット
- 経験に依存しやすい
- 試せる組み合わせが限られる
- 再現性や網羅性が弱くなりやすい
🧱 Grid Search
Grid Search は、
指定したハイパーパラメータのすべての組み合わせを試す方法 です。
例えば、
learning rate: 0.01, 0.05
max depth: 3, 5
を指定した場合、以下の4通りをすべて試します。
| Learning Rate | Max Depth |
|---|---|
| 0.01 | 3 |
| 0.01 | 5 |
| 0.05 | 3 |
| 0.05 | 5 |
メリット
- 分かりやすい
- 指定範囲を網羅的に試せる
デメリット
- 組み合わせが増えると非常に時間がかかる
- 重要でないパラメータにも計算コストを使う
- 大規模モデルではコストが高くなりやすい
Grid Search はシンプルですが、候補が増えると急激に重くなります。
🎲 Random Search
Random Search は、
候補範囲の中からランダムに組み合わせを選んで試す方法 です。
Grid Search のように全組み合わせを試すのではなく、
決められた回数だけランダムに試します。
メリット
- Grid Search より効率的な場合がある
- 広い範囲を探索しやすい
- 計算コストを制御しやすい
デメリット
- 運に左右される部分がある
- 最適な組み合わせを必ず見つけるとは限らない
実務では、Grid Search より Random Search の方が現実的な場合も多いです。
🧠 Bayesian Optimization
Bayesian Optimization は、
過去の試行結果をもとに、次に試すハイパーパラメータを賢く選ぶ方法 です。
一言で言うと、
Bayesian Optimization = これまでの結果を見ながら、次に良さそうな設定を選ぶ
というイメージです。
Grid Search や Random Search は、試行同士の結果をあまり深く活用しません。
一方で、Bayesian Optimization は、過去の結果から「次はこのあたりを試すと良さそう」と判断します。
メリット
- 少ない試行回数で良い設定を見つけやすい
- 計算コストを抑えやすい
- 高価な学習ジョブに向いている
デメリット
- 仕組みは少し複雑
- 完全に最適解を保証するものではない
大規模なモデルや、1回の学習コストが高い場合には、効率的な選択肢になりやすいです。
☁️ SageMaker でのハイパーパラメータチューニング
SageMaker には、ハイパーパラメータチューニングを支援する仕組みがあります。
イメージとしては、以下のような流れです。
試したいハイパーパラメータ範囲を指定
↓
複数の Training Job を実行
↓
評価指標を見ながら比較
↓
最も良い設定を選ぶ
たとえば、目的を
validation accuracy を最大化する
validation loss を最小化する
のように決めて、複数の学習ジョブを実行します。
SageMaker の試験対策では、
複数のハイパーパラメータの組み合わせを試し、評価指標に基づいて最適な設定を探す
という考え方を押さえておくとよいです。
📉 チューニングと過学習の関係
チューニングはモデル性能を上げるために重要ですが、
やり方を間違えると過学習につながることがあります。
例えば、validation data に対して何度も設定を調整しすぎると、
その validation data に合いすぎたモデルになる可能性があります。
そのため、最終的な性能確認には test data を使うことが重要です。
train data = 学習
validation data = チューニング
test data = 最終評価
この役割分担は、Day 3 の内容ともつながります。
☁️ AWS 試験での見られ方
AWS の AI / ML 系試験では、Training とハイパーパラメータチューニングは、
以下のような観点で問われる可能性があります。
観点 1:Training Job はモデルを学習する処理
Training Job は予測を返す仕組みではなく、
モデルを作るための処理です。
Training Job = モデルを学習する
Endpoint = リアルタイム推論
Batch Transform = 一括推論
この区別は重要です。
観点 2:ハイパーパラメータは学習前に設定する
ハイパーパラメータは、モデルがデータから自動で学習する値ではありません。
learning rate
epoch
batch size
max depth
regularization
などは、学習前に設定・調整する値です。
観点 3:チューニングは複数の設定を試す
ハイパーパラメータチューニングでは、
複数の設定を試し、評価指標に基づいて最も良いものを選びます。
複数の Training Job
↓
評価指標で比較
↓
最良のハイパーパラメータを選択
👨💻 実務目線で見ると
実務では、ハイパーパラメータチューニングは重要ですが、
無制限に試せばよいわけではありません。
なぜなら、チューニングには以下のコストがかかるからです。
- 学習時間
- コンピューティングコスト
- 実験管理の負担
- 結果分析の手間
特に AWS 上で大きな Training Job を何度も実行すると、コストが増えやすくなります。
そのため、実務では以下のような考え方が大切です。
- まずは小さく試す
- 重要なハイパーパラメータから調整する
- 評価指標を明確に決める
- 不要に探索範囲を広げすぎない
- チューニング結果を記録する
- 最終的には test data で確認する
チューニングは「たくさん試すこと」ではなく、
目的に合った設定を効率よく探すこと が重要です。
🧠 ここは特に覚えたいポイント
覚え方 1
Training = データを使ってモデルを学習する
覚え方 2
Hyperparameter = 学習前に設定する値
覚え方 3
Learning rate = 学習時の歩幅
Epoch = 訓練データを何周するか
Batch size = 一度に何件ずつ学習するか
覚え方 4
Tuning = 複数のハイパーパラメータ設定を試して、良い組み合わせを探す
覚え方 5
Grid Search = 全組み合わせ
Random Search = ランダムに試す
Bayesian Optimization = 過去の結果をもとに賢く選ぶ
✅ まとめ
今回は、Training とハイパーパラメータチューニングについて整理しました。
重要なポイントは以下です。
- Training は、既存データを使ってモデルに規則を学習させる工程
- SageMaker では Training Job として学習処理を実行する
- ハイパーパラメータは、学習前に設定する値
- learning rate は学習時の更新幅に関係する
- epoch は訓練データを何回学習するかを表す
- batch size は一度に何件のデータを使って学習するかを表す
- max depth や number of trees は木系モデルでよく使われる
- regularization は過学習を抑えるために使う
- チューニングは、より良いハイパーパラメータの組み合わせを探す作業
- Grid Search、Random Search、Bayesian Optimization は代表的なチューニング方法
モデル性能を上げるには、アルゴリズムを選ぶだけでなく、
どのように学習させるか、どの設定で学習させるか を考えることが重要です。
📌 次回予告
次回は、学習済みモデルを実際に使うための
- SageMaker Endpoint
- Real-time Endpoint
- Serverless Endpoint
- Asynchronous Endpoint
- Batch Transform
について整理します。
リアルタイム推論とバッチ推論の違いを、実務での使い分けも含めて分かりやすくまとめます。