ディープラーニングの概要
G検定のハイパーパラメータ調整(重みとの違い・組合せ数・検証データ)
G検定の大項目4「ディープラーニングの概要」には、ハイパーパラメータ、グリッドサーチ、ランダムサーチがキーワードとして載っています。ハイパーパラメータは、学習の中では直接求まらず、人が先に決めて渡す値です。
このページは、scikit-learnの公式ドキュメントと原論文の記述をもとに、重みとの違い、2つの探し方の差、組合せ数の数え方、調整に使うデータの分け方を整理しています。
この記事の目次
公式情報の確認
試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。
試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。
結論
- 重みやバイアスは学習で求まり、ハイパーパラメータは人が先に決めて渡す
- グリッドサーチは与えた値のすべての組合せを調べ、ランダムサーチは指定した数の候補を分布から抽出して調べる
- グリッドサーチの候補数は、各ハイパーパラメータの値の数の積で増える
- 調整にテストデータを使うと、テストデータの情報がモデルに漏れ、評価が汎化性能を表さなくなる
- 調整は検証データか交差検証で行い、テストデータは最後の評価に取っておく
重みとハイパーパラメータの違い
scikit-learnの公式ドキュメントは、ハイパーパラメータを、推定器の中で直接は学習されないパラメータと説明します。scikit-learnでは、推定器のクラスを作るときの引数として渡します。
| 語 | 決まり方 | 例 |
|---|---|---|
| 重み・バイアス | 学習で求まる | ニューラルネットワークの各層の重み行列とバイアス(MLPClassifierでは学習後の属性 coefs_・intercepts_) |
| ハイパーパラメータ | 学習の中では直接求まらず、人が先に決めて渡す | SVMのC・kernel・gamma、Lassoのalpha、学習率、バッチサイズ、隠れ層の数やニューロン数 |
混同しやすいのは、学習率と重みです。重みは学習で更新される値、学習率は更新の歩幅を決めるために人が選ぶ値です。Google for Developersの機械学習集中講座は、学習率が低すぎると収束に時間がかかり、高すぎると収束せずに損失が最小になる値の周りを飛び回ると説明しています。
一次資料: scikit-learn User Guide 3.2「Tuning the hyper-parameters of an estimator」、MLPClassifier、Google for Developers 機械学習集中講座「ハイパーパラメータ」
グリッドサーチとランダムサーチ
scikit-learnは、ハイパーパラメータを探す代表的な方法として、次の2つを用意しています。
| 方法 | 探し方 | 特徴 |
|---|---|---|
| グリッドサーチ | 与えた値のすべての組合せを網羅的に調べる | 候補の数は、各ハイパーパラメータの値の数を掛け合わせた数になる |
| ランダムサーチ | パラメータ空間から指定した分布で、指定した数の候補を抽出して調べる | 試す数を予算として先に決められる。性能に影響しないパラメータを加えても効率が下がらない |
ランダムサーチの利点は、予算を先に決められることと、効かないパラメータを足しても効率が落ちないことです。scikit-learnでは、試す候補の数を n_iter で指定します。
2012年の論文(Bergstra・Bengio)は、ニューラルネットワークで、グリッドサーチと同じ探索領域をランダムサーチで調べると、計算時間のごく一部で同程度かそれ以上の性能のモデルが見つかることを示しました。 別の実験として、深層信念ネットワーク(32次元の設定空間)では、7個のデータセットのうち4個でランダムサーチが統計的に同等の性能を達成し、1個で優位を示しています。
一次資料: scikit-learn User Guide 3.2、Bergstra and Bengio (2012) Random Search for Hyper-Parameter Optimization, Journal of Machine Learning Research 13
組合せ数の数え方
グリッドサーチは、与えた値のすべての組合せを調べるので、ハイパーパラメータを1つ足すたびに、候補の数が値の数倍になります。 次の表は、このページで仮に置いた値の数から、候補数と学習回数を数えた計算例です。
| 設定 | 組合せ数 | 交差検証の学習回数 |
|---|---|---|
| 学習率 3通り × 層数 3通り | 9通り | 5分割で45回 |
| 上に、隠れニューロン数 4通りを加える | 36通り | 5分割で180回 |
| さらに、バッチサイズ 3通りを加える | 108通り | 5分割で540回 |
3×3=9、9×4=36、36×3=108が組合せ数です。5分割交差検証では、候補1つにつき5回学習するので、学習の回数は組合せ数の5倍になります。 ランダムサーチで候補を30個に決めれば、同じ5分割で学習は150回です。
調整に使うデータ
scikit-learnの交差検証のページは、SVMのCのような設定を試すとき、テストデータで性能が最もよくなるまで設定をいじり続けると、テストデータに過学習する危険があると述べています。テストデータの情報がモデルに漏れ、評価の数値が汎化性能を表さなくなるのが問題です。
対策として、データを訓練・検証・テストの3つに分けます。訓練データで学習し、検証データで評価して設定を選び、最後にテストデータで一度だけ評価します。 データを3つに分けると学習に使える数が減るため、もう1つの方法として、k分割交差検証があります。
k分割交差検証は、訓練データをk個に分け、k−1個で学習して残りで検証する手順を各分割で行い、各回の値の平均を性能として報告します。 この方法なら、検証データを別に取り分ける必要がありません。
一次資料: scikit-learn User Guide 3.1「Cross-validation: evaluating estimator performance」
シラバスのどこに出るか
JDLA公式シラバス(G2024#6〜)では、関連語は次の大項目のキーワード欄に載っています。
| 場所 | 内容 |
|---|---|
| 大項目4「ディープラーニングの概要」 | 「学習の仕組み」のキーワード欄に、学習率、ハイパーパラメータ、グリッドサーチ、ランダムサーチが並ぶ。モーメンタム、AdaGrad、RMSprop、Adamも同じ欄にある |
| 大項目3「機械学習の概要」 | 「モデルの評価と過学習」のキーワード欄に交差検証、k分割交差検証があり、調整に使うデータの分け方の前提になる |
2つの探し方だけを並べて比べたいときはグリッドサーチとランダムサーチの違い、検証データの分け方は交差検証のページで確認できます。10大項目全体の位置づけは出題範囲の整理にまとめています。
選択肢の読み方
公式ドキュメントの記載から、選択肢を次のように読みます。
- 「学習で自動的に求まる」は重みやバイアスの説明で、ハイパーパラメータの説明ではない
- 「与えた値のすべての組合せを調べる」は、グリッドサーチの説明
- 「分布から候補を抽出し、試す数を先に決める」は、ランダムサーチの説明
- 「テストデータで性能が最もよくなる設定を選ぶ」は、テストデータの情報が漏れるため、調整の手順として適切でない
- 「学習率を大きくするほど必ず速く収束する」は、高すぎると収束しないという記述と合わない
ここで挙げた読み方は、一次資料の記載から導いたこのページの整理で、出題を予想するものではありません。
G検定の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
よくある質問
ハイパーパラメータと、パラメータ(重み)は何が違いますか?
重みやバイアスは学習で求まる値で、ハイパーパラメータは学習の中では直接求まらず、人が先に決めて渡す値です。scikit-learnの公式ドキュメントは、ハイパーパラメータを推定器の中で直接は学習されないパラメータと説明しています。
グリッドサーチとランダムサーチは、どちらが速いですか?
違いは候補の選び方で、ランダムサーチは試す数を先に決められます。原論文は、ニューラルネットワークで、グリッドサーチと同じ探索領域をランダムサーチで調べると、計算時間のごく一部で同程度かそれ以上の性能のモデルが見つかったと報告しています。
ハイパーパラメータの調整に、テストデータを使ってはいけないのはなぜですか?
調整を重ねるうちにテストデータの情報がモデルに漏れ、評価の数値が、見たことのないデータへの性能を表さなくなるからです。scikit-learnの公式ドキュメントは、この危険を述べたうえで、訓練・検証・テストに分ける方法を示しています。
交差検証をすると、最終的な性能はどう決まりますか?
k分割交差検証は、訓練データをk個に分け、k−1個で学習して残りで検証する手順を各分割で行い、各回の値の平均を性能として報告します。検証データを別に取り分ける必要はなくなりますが、学習の回数はk倍になります。
学習率やバッチサイズも、ハイパーパラメータですか?
はい。Google for Developersの機械学習集中講座は、学習率、バッチサイズ、エポックをハイパーパラメータのページで扱っています。学習率が低すぎると収束に時間がかかり、高すぎると収束せずに損失が最小になる値の周りを飛び回ると説明されています。
