ひとことで言うと
ハイパーパラメータ調整は、学習で直接更新される重みとは別に、学習率や正則化係数、層の幅などを評価手順に従って選ぶ作業です。値は影響の大きいものから順に範囲を狭めます。
楽器の調律に似ています。まず音程全体を大きく合わせ、次に弦の張りや細かな響きを整えます。いきなり全てのつまみを同時に動かすと、どの変更が音を良くしたのか分からなくなります。
なぜ必要か
重みは訓練データから学習されますが、ハイパーパラメータは学習の進み方やモデルの制約を外から決めます。訓練誤差だけでなく、未知データでの性能を見込める設定を選ぶ必要があります。
調整の評価には検証データを使います。テストデータを見て値を変えると、テストデータは調整の一部になり、最終評価の役割を失います。検証スコアで候補を選ぶ操作を繰り返すほど、選択基準も検証データに適合します。検証スコアの上昇は、初見データでの性能向上と同じではありません。
| データ | 調整中の使い方 | 役割 |
|---|---|---|
| 訓練 | 重みを学習する | 候補ごとの fitting |
| 検証 | ハイパーパラメータを比較する | 選択基準 |
| テスト | 選択後に一度だけ測る | 最終評価 |
仕組み
ハイパーパラメータを 、それで訓練した重みを 、検証損失を とすると、調整は次を選ぶ問題です。
は候補の集合、 は候補ごとに訓練して得た重みです。学習率 は最初に確認すべき値です。小さすぎれば損失が下がる前に止まり、大きすぎれば損失が振動したり発散したりします。まず対数間隔で広い範囲を試し、妥当な領域を見つけてから狭くします。
次にモデルの容量と正則化を合わせます。学習・検証の両方が悪ければ容量不足、学習だけ良く検証が悪ければ過学習を疑います。その後にバッチサイズ、スケジュール、ドロップアウトなどを少数ずつ動かします。scikit-learnの文書も、ハイパーパラメータを直接学習されない値とし、候補を交差検証スコアで比較する枠組みを示しています。
実務の順序は、広い学習率確認、容量・正則化、学習率の微調整、その他の細部です。同じ分割・乱数管理・指標で候補を比較します。
試験でどう問われるか
| 問われ方 | 正解に寄る条件 | 引っかけ |
|---|---|---|
| データ分割の役割 | 検証で設定を選び、テストは最後の一度の評価に残す | テスト結果を見て再調整する |
| 調整の順序 | まず学習率、その後に容量・正則化、最後に細部 | 全パラメータを同時に変更する |
| 検証スコアの反復利用 | 探索を重ねるほど検証データへの過適合を警戒する | 検証スコアが最高なら無条件に汎化する |
| 学習の停止 | 検証指標が改善しない候補を早期打ち切りし、資源と過適合を抑える | 訓練損失が下がる限り永遠に続ける |
実装で確かめる
候補を選ぶ処理と、最終評価を分けます。ここでは訓練済み候補の検証損失を選び、選ばれた候補のテスト損失だけを読む流れを NumPy で表します。
import numpy as np
learning_rates = np.array([1e-4, 3e-4, 1e-3, 3e-3])
val_loss = np.array([0.82, 0.55, 0.48, 0.71])
test_loss = np.array([0.90, 0.59, 0.52, 0.76])
best = np.argmin(val_loss)
chosen_lr = learning_rates[best]
final_test_loss = test_loss[best]
print(chosen_lr, final_test_loss)
この例では検証損失が最小の学習率を選び、その候補のテスト損失を一度だけ取り出します。
取り違えやすいもの
| 用語 | ハイパーパラメータ調整との切り分け |
|---|---|
| パラメータ学習 | 重みやバイアスを訓練データから更新する内側の処理です |
| モデル選択 | 候補モデルを比較して一つを選ぶ上位の判断で、調整はその具体的な設定選びです |
| 検証 | 調整中に候補を比較するデータです。最終報告用のテストとは役割が違います |
| 早期打ち切り | 学習を止める運用規則であり、候補の値を探すアルゴリズムそのものではありません |
想起チェック
最初に大きく確認するハイパーパラメータは何か
学習率です。広い対数範囲で挙動を確認してから、妥当な範囲を細かく調べます。
テストデータで設定を決めてはいけない理由は何か
テストデータが調整に使われ、未知データに対する最後の評価という役割を失うからです。
探索を繰り返すと検証データに何が起きるか
検証スコアを選択基準として何度も使うため、候補選択が検証データへ過適合し、スコアの汎化性を過大評価しやすくなります。