ハイパーパラメータ
ハイパーパラメータ(Hyperparameter)とは、機械学習アルゴリズムの挙動を事前に設定するパラメータのことを指す。ざっくりいうと機械学習アルゴリズムの「設定値」である。この設定値の違いによって、モデルの精度やパフォーマンスは大きく変化する。
例えば、男女を分類するモデルを構築したとする。初期設定のまま学習を行った結果、正解率90%を得られたが、業務要件としては不十分だったとする。そこでハイパーパラメータを調整したところ、正解率が93%に改善することも珍しくない。
近年ではハイパーパラメータチューニングを自動化する手法も増えてきているが、実務・Kaggleの現場では人間が仮説を立てながら調整するケースが依然として多い。
Kaggleのようなデータ分析コンペティションでは、0.01%の差で順位が決まることもある。そのため、モデル構造そのものだけでなく、ハイパーパラメータを適切に調整するスキルは必須となっている。
Kaggle
世界中の機械学習を学ぶ人のためのプラットフォーム
ハイパーパラメータは手法ごとに異なる。
例えば、XGBoostやLightGBMは調整可能なハイパーパラメータが多い一方、SVMやランダムフォレストは比較的少ない。
画像認識や自然言語処理で用いられるディープラーニング(CNNやLSTMなど)でも、多数のハイパーパラメータが存在し、細かなチューニングによって精度が改善することが多い。
ハイパーパラメータチューニングは、機械学習実装において避けて通れない工程である。
学習率
学習率(Learning Rate)は、最適化アルゴリズムが損失関数を最小化する際の更新幅(ステップサイズ)を制御するハイパーパラメータである。
モデルは、損失関数の勾配に基づいてパラメータを更新するが、その際の更新量は次式のように学習率によってスケーリングされる。
-
学習率が大きい
→ 更新量が大きく、収束が速いが不安定になりやすい -
学習率が小さい
→ 更新量が小さく、安定するが収束が遅い
学習率が大きすぎる場合、損失関数の最小値を飛び越えてしまい、学習が振動・発散する。一方で、小さすぎる場合は最適解に到達するまでに多くの反復が必要となり、計算効率が著しく低下する。
学習率をイメージで理解する
学習率は「歩幅」に例えると理解しやすい。
-
目的地:最適なパラメータ
-
歩数:学習回数(エポック)
-
歩幅:学習率
歩幅が大きければ目的地に早く近づくが、行き過ぎる可能性がある。歩幅が小さければ正確に進めるが、到達までに時間がかかる。学習率も同様に、速さと精度のトレードオフを調整する役割を担っている。
学習率が大きい場合と小さい場合
学習率が大きい場合
メリット
- 学習が速く進み、収束までの時間が短い
デメリット
- 細かい調整ができず、学習が不安定になりやすい
学習率が小さい場合
メリット
- 微調整が可能で、安定した収束が期待できる
デメリット
- 収束までに時間がかかり、計算コストが増大する
このため、学習率は固定値として安易に設定するのではなく、戦略的に調整する必要がある。
Learning Rate Scheduling(学習率スケジューリング)
学習の進行に応じて学習率を動的に変化させる手法である。初期は大きな学習率で探索を行い、後半で学習率を下げて安定収束を目指す。
代表的な手法は以下の通りである。
-
ステップ減少(Step Decay)
一定エポックごとに段階的に学習率を下げる -
指数減少(Exponential Decay)
学習率を指数関数的に滑らかに減少させる -
コサインアニーリング(Cosine Annealing)
コサイン関数に基づき周期的に学習率を変化させる -
ウォームアップ(Warmup)
学習初期に学習率を徐々に上昇させる -
プラトー減少(Reduce on Plateau)
検証指標が改善しなくなった場合に学習率を下げる
プラトー
学習が進んでも損失や精度が改善しなくなる停滞状態である
適応的学習率アルゴリズム
適応的学習率アルゴリズムは、勾配情報に基づいて学習率を自動調整する手法である。手動調整の負担を軽減できる点が大きな利点である。
-
AdaGrad
頻繁に更新されるパラメータほど学習率を小さくする -
RMSProp
AdaGradの過度な減衰問題を改善 -
Adam
モメンタムとRMSPropを統合した代表的手法 -
AdamW
重み減衰を分離し、汎化性能を向上 -
AdaBelief
勾配の信頼度に基づき更新量を調整
特にAdam系アルゴリズムは、安定性と収束速度のバランスに優れ、多くの実務で標準的に利用されている。
ハイパーパラメータチューニングの3つの手法
ハイパーパラメータ調整には、代表的に以下の3つの手法がある。
-
グリッドサーチ(Grid Search)
-
ランダムサーチ(Random Search)
-
ベイズ最適化(Bayesian Optimization)
それぞれの概要を説明する。
グリッドサーチ(Grid Search)
グリッドサーチは、指定したハイパーパラメータ候補の全組み合わせを網羅的に試す手法である。
例えば以下のような設定を考える。
パラメータA:{1, 3, 5}
パラメータB:{True, False}
この場合、全組み合わせは 3 × 2 = 6 通りとなり、6回のモデル学習を行う。
グリッドサーチは探索が完全であるため、探索範囲が狭く、当たりがある程度分かっている場合に有効である。一方で、ハイパーパラメータ数が増えると計算コストが指数的に増加する。
メリット
-
探索範囲が明確な場合に有効
-
結果の再現性が高い
デメリット
-
計算コストが非常に高い
-
大規模データや複雑なモデルには不向き
ランダムサーチ(Random Search)
ランダムサーチは、ハイパーパラメータの組み合わせをランダムに抽出して評価する手法である。
例えば以下のような場合を考える。
パラメータA:10候補
パラメータB:5候補
パラメータC:30候補
グリッドサーチでは 10 × 5 × 30 = 1500 回の学習が必要になるが、ランダムサーチでは「何回試すか」を事前に指定できる。
探索はランダムであるため運の要素はあるが、探索空間が広い場合でも現実的な時間で実行可能であり、方向性を掴むには十分な性能を持つ。
メリット
-
探索空間が広くても実行可能
-
計算資源を柔軟に調整できる
デメリット
- 最適解に必ず到達する保証はない
ベイズ最適化(Bayesian Optimization)
ベイズ最適化は、過去の探索結果を利用して次に探索すべき点を決定する最適化手法である。
代理モデル(Surrogate Model)としてガウス過程などを用い、以下2つの戦略をバランスよく使い分ける。
-
Exploitation(活用):良い結果が出た近辺を重点的に探索
-
Exploration(探索):未知の領域をあえて探索
これにより、少ない試行回数で効率的に最適解へ近づくことが可能となる。
| 観点 | グリッドサーチ | ランダムサーチ | ベイズ最適化 |
|---|---|---|---|
| 探索方法 | 全組み合わせを網羅 | ランダム抽出 | 確率モデルに基づく逐次探索 |
| 探索効率 | 低い(組み合わせ爆発) | 中程度 | 高い |
| 計算コスト | 非常に高くなりやすい | 試行回数で制御可能 | 少ない試行でも高性能 |
| 実装の容易さ | 非常に簡単 | 簡単 | やや難しい |
| 最適解の保証 | 探索範囲内では高い | なし | 理論保証はない |
| 探索範囲が広い場合 | 不向き | 向いている | 非常に向いている |
| 主な利用場面 | 小規模・検証用途 | 実務・Kaggle | 高性能モデル・本番環境 |
| 代表的ライブラリ | GridSearchCV | RandomizedSearchCV | Optuna, scikit-optimize |
バッチサイズ・エポック・イテレーションの関係
学習回数(エポック)
エポックとは、全データセットを何周学習するかを表す指標である。
エポック数が少なすぎると未学習となり、多すぎると過学習を引き起こす可能性がある。
バッチサイズ
バッチサイズとは、1回のパラメータ更新に使用するデータ数である。
例えば、4,000件のデータを400件ずつ処理する場合、バッチサイズは400となる。
イテレーション
イテレーションとは、1エポック内で何回パラメータ更新を行うかを表す数である。
4,000件のデータをバッチサイズ400で分ける場合、1エポックあたりのイテレーション数は10となる。
バッチサイズが学習に与える影響
小さいバッチサイズ
-
勾配のばらつきが大きく、探索能力が高い
-
学習は不安定だが、汎化性能が向上しやすい
-
学習に時間がかかる
大きいバッチサイズ
-
勾配推定が安定し、計算効率が高い
-
学習は高速だが、局所解に陥りやすい
-
汎化性能が低下する可能性がある
このトレードオフを考慮し、実務ではミニバッチ勾配降下法が最も一般的に用いられている。
バッチサイズの決め方
バッチサイズは理論的に一意に決まるものではなく、タスクやモデル、計算資源に依存する。
一般的には以下の値から試すことが多い。
16, 32, 64, 128, 256, 512
これはGPU計算との相性が良い2の累乗であるためだ。
また、バッチサイズを大きくする場合は、学習率とのバランス(Linear Scaling Rule)やウォームアップの導入が重要となる。
転移学習
転移学習とは、あるタスクや領域(ドメイン)で学習した知識を、別のタスクや領域の学習に再利用する技術である。
例えば、大量の犬の画像データと、少量の猫の画像データが存在するとする。
通常の機械学習では、犬と猫それぞれについて個別にモデルを学習させる必要がある。しかし、猫のデータが少ない場合、高精度なモデルを構築することは難しい。
このような場合、犬の画像分類で学習した特徴(輪郭、模様、質感など)を猫の分類にも活用することで、少量データでも高精度なモデル構築が可能になる。これが転移学習の基本的な考え方である。
転移学習のメリット
- 学習時間を短縮できる
転移学習では、すでに学習済みのモデルを初期状態として利用するため、ゼロから学習を行う必要がない。
その結果、学習時間を大幅に短縮できる。
従来の方法では、データ量やサーバー性能によっては学習に数十日を要するケースもある。転移学習を用いることで、より短期間でモデル構築が可能となり、AI導入のスピード向上につながる。
- 少量データでも高精度を実現できる
転移学習の最大の強みは、学習データが少ない領域でも性能を確保できる点にある。
実務では、十分なラベル付きデータを用意できないケースが多い。転移学習は、データ不足という現実的な制約を乗り越える有力な手段である。
- 応用範囲が広い
転移学習は、同一カテゴリ内(犬→猫)の転用に限らず、異なるカテゴリ(動物→自動車、家など)への適用も可能である。
また、画像認識だけでなく、以下の分野でも広く活用されている。
-
自然言語処理
-
音声認識・音声生成
-
強化学習(研究段階)
この汎用性の高さも転移学習の大きな特徴である。
転移学習のデメリット
転移学習には注意点も存在する。それが**負の転移(Negative Transfer)**である。
負の転移とは、転移元と転移先の関連性が低い場合や、転移方法が適切でない場合に、転移しない場合よりも精度が悪化する現象である。
このリスクを避けるためには、以下が重要となる。
-
転移学習あり/なしのモデル精度を比較する
-
転移元と転移先のタスク類似性を確認する
-
過度な転移を避ける設計を行う
転移学習と関連手法の違い
- ファインチューニング
ファインチューニングとは、学習済みモデルの一部または全体を再学習し、転移先タスクに最適化する手法である。
転移学習が「知識の再利用」を指す広い概念であるのに対し、ファインチューニングはその具体的な実装方法の一つと位置付けられる。
- 蒸留(Knowledge Distillation)
蒸留とは、大規模で高性能な教師モデルの知識を、小規模な生徒モデルに移す手法である。
転移学習が「タスク間の知識移転」であるのに対し、蒸留は「モデルサイズの圧縮」を主目的とする点が異なる。
- マルチタスク学習
マルチタスク学習は、複数のタスクを同時に学習させる手法である。
転移学習が「ソースタスク → ターゲットタスク」という段階的アプローチであるのに対し、マルチタスク学習はタスクを区別せず並行して学習する点で異なる。
転移学習と強化学習の違い
両者は目的が根本的に異なる。
-
転移学習:既存タスクで得た知識を新タスクに適用する
-
強化学習:環境との相互作用を通じて報酬を最大化する行動を学習する
強化学習は「行動の最適化」、転移学習は「知識の再利用」に主眼が置かれている。
転移学習における「ドメイン」
転移学習では「ドメイン」という概念が重要となる。
-
ソースドメイン:知識を獲得した元の領域
-
ターゲットドメイン:知識を適用する先の領域
観測データ、ラベル、確率モデルをひとまとめにしたものがドメインであり、異なるドメイン間でいかに知識を移動させるかが転移学習の本質である。
参考