深層学習

ハイパーパラメータ調整

学習率を軸に調整の順序を決め、検証データで選び、探索の反復による過適合を早期打ち切りと最終テストで管理します。

  • B|標準
  • 深層学習

数式の記号で止まったら 記号の読み方 (∂・⊙・転置・上付き添字を、読み方から)

ひとことで言うと

ハイパーパラメータ調整は、学習で直接更新される重みとは別に、学習率や正則化係数、層の幅などを評価手順に従って選ぶ作業です。値は影響の大きいものから順に範囲を狭めます。

楽器の調律に似ています。まず音程全体を大きく合わせ、次に弦の張りや細かな響きを整えます。いきなり全てのつまみを同時に動かすと、どの変更が音を良くしたのか分からなくなります。

なぜ必要か

重みは訓練データから学習されますが、ハイパーパラメータは学習の進み方やモデルの制約を外から決めます。訓練誤差だけでなく、未知データでの性能を見込める設定を選ぶ必要があります。

調整の評価には検証データを使います。テストデータを見て値を変えると、テストデータは調整の一部になり、最終評価の役割を失います。検証スコアで候補を選ぶ操作を繰り返すほど、選択基準も検証データに適合します。検証スコアの上昇は、初見データでの性能向上と同じではありません。

データ調整中の使い方役割
訓練重みを学習する候補ごとの fitting
検証ハイパーパラメータを比較する選択基準
テスト選択後に一度だけ測る最終評価

仕組み

ハイパーパラメータを λ\lambda、それで訓練した重みを θ(λ)\theta(\lambda)、検証損失を JvalJ_{\mathrm{val}} とすると、調整は次を選ぶ問題です。

λ∗=arg⁡min⁡λ∈ΛJval(θ(λ))\lambda^* = \mathop{\arg\min}_{\lambda \in \Lambda} J_{\mathrm{val}}\bigl(\theta(\lambda)\bigr)

Λ\Lambda は候補の集合、θ(λ)\theta(\lambda) は候補ごとに訓練して得た重みです。学習率 η\eta は最初に確認すべき値です。小さすぎれば損失が下がる前に止まり、大きすぎれば損失が振動したり発散したりします。まず対数間隔で広い範囲を試し、妥当な領域を見つけてから狭くします。

次にモデルの容量と正則化を合わせます。学習・検証の両方が悪ければ容量不足、学習だけ良く検証が悪ければ過学習を疑います。その後にバッチサイズ、スケジュール、ドロップアウトなどを少数ずつ動かします。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)

この例では検証損失が最小の学習率を選び、その候補のテスト損失を一度だけ取り出します。

取り違えやすいもの

用語ハイパーパラメータ調整との切り分け
パラメータ学習重みやバイアスを訓練データから更新する内側の処理です
モデル選択候補モデルを比較して一つを選ぶ上位の判断で、調整はその具体的な設定選びです
検証調整中に候補を比較するデータです。最終報告用のテストとは役割が違います
早期打ち切り学習を止める運用規則であり、候補の値を探すアルゴリズムそのものではありません

想起チェック

最初に大きく確認するハイパーパラメータは何か

学習率です。広い対数範囲で挙動を確認してから、妥当な範囲を細かく調べます。

テストデータで設定を決めてはいけない理由は何か

テストデータが調整に使われ、未知データに対する最後の評価という役割を失うからです。

探索を繰り返すと検証データに何が起きるか

検証スコアを選択基準として何度も使うため、候補選択が検証データへ過適合し、スコアの汎化性を過大評価しやすくなります。

出典