学習率やバッチサイズなど、機械学習には人間が事前に決めるべき「ハイパーパラメータ」がたくさんあります。その最適な組み合わせを機械的に探す最も素朴で確実な方法がグリッドサーチです。この記事では、総当たりという仕組みと、その代償である計算コスト、そしてランダムサーチやベイズ最適化との違いを解説します。
📖 ひと言でいうと
グリッドサーチとは、ハイパーパラメータの候補値をあらかじめリストアップし、その全組み合わせを一つずつ試して最も成績の良い組み合わせを選ぶ総当たり手法です。候補を縦横に並べた格子(グリッド)のマス目を全部試すイメージからこの名前がついています。料理に例えるなら、砂糖3通り×塩3通りの計9パターンを全部作って食べ比べ、一番おいしい配合を採用するやり方です。
🖼 1枚でわかるグリッドサーチ
📘 公式テキストの説明
ハイパーパラメータの最適な組み合わせを見つけるための総当たり手法。事前に指定されたハイパーパラメータの範囲やリスト内の全ての組み合わせに対して学習と評価を行い、指標(たとえば、精度やF1スコアなど)が最も高くなるパラメータを採用する。しかし、この手法は計算コストが高く、パラメータの数が増えると指数関数的に計算時間が増加するという欠点がある。それに対してランダムサーチやベイズ最適化といった他の手法も存在し、それらは計算効率が高い場合がある。
要点は「総当たり」の一言に尽きます。人間がやることは候補の範囲・リストを決めるところまでで、あとは全組み合わせについて機械的に「学習→評価」を繰り返し、指標が最良のものを採用します。単純で漏れがない反面、組み合わせの数だけ学習を回すため、計算コストの高さが構造的な欠点になります。
🔍 しっかり理解する
ハイパーパラメータ探索という問題
学習率、バッチサイズ、エポック数、正則化の強さ、ネットワークの層数といったハイパーパラメータは、モデルが学習で自動的に獲得する重みと違い、人間が学習前に決める必要があります。しかも最適な値は問題ごとに異なり、理論だけでは決めきれません。そこで「候補を試して比べる」探索が必要になり、その最も基本的な戦略がグリッドサーチです。
手順を流れで見る
弱点は「組み合わせ爆発」
グリッドサーチの計算量は候補数の掛け算で決まります。学習率5通り×バッチサイズ4通りなら20回の学習で済みますが、探索するパラメータが5種類・各5通りなら5の5乗=3125回の学習が必要です。このようにパラメータの数が増えると計算時間が指数関数的に増加するため、ディープラーニングのように1回の学習が重いモデルでは、すぐに現実的な時間を超えてしまいます。
この弱点への代替として、候補範囲からランダムに組み合わせを選んで試すランダムサーチや、それまでの試行結果から「次に有望そうな組み合わせ」を確率モデルで推定して試すベイズ最適化があります。これらは全部を試さない分、計算効率が高い場合があります。
また、評価の信頼性を高めるために、グリッドサーチは交差検証と組み合わせて使われるのが一般的です。1回の分割だけで評価すると、たまたまその分割で成績が良かった組み合わせを選んでしまうおそれがあるため、データを複数の分割で評価した平均スコアで組み合わせ同士を比較します。候補の決め方にもコツがあり、学習率のような値は0.001、0.01、0.1と桁(対数スケール)で振るのが定石です。
💡 具体例で考える
サポートベクターマシン(SVM)のチューニングは、グリッドサーチの定番の適用例です。正則化係数Cを{0.1, 1, 10}、カーネル係数gammaを{0.01, 0.1, 1}からそれぞれ選ぶ場合、3×3=9通りの組み合わせすべてで交差検証を行い、最も精度が高い(C, gamma)のペアを採用します。scikit-learnにはこの手順を自動化するGridSearchCVという機能があり、実務でも広く使われています。
一方、ディープラーニングで学習率・バッチサイズ・層数・ドロップアウト率などを同時にグリッドサーチしようとすると、1回の学習に数時間かかる×数百通り、という規模になりがちです。このため、深層学習の分野ではランダムサーチやベイズ最適化ベースの自動チューニングツールが選ばれることが多くなっています。「候補が少なく1回の学習が軽いならグリッドサーチ、重くて多次元なら別の探索法」という使い分けの感覚を持っておくと、事例問題でも判断しやすくなります。
⚠️ よくある誤解・紛らわしい用語
- 「グリッドサーチはパラメータ(重み)を最適化する」は誤り: 重みを最適化するのは勾配降下法などの学習アルゴリズムです。グリッドサーチが探すのは、その外側で人間が設定するハイパーパラメータです。
- ランダムサーチとの違い: グリッドサーチは指定した全組み合わせを漏れなく試し、ランダムサーチは組み合わせを無作為に選んで一部だけ試します。「総当たりかどうか」が分かれ目です。
- ベイズ最適化との違い: ベイズ最適化は過去の試行結果を活かして次の候補を賢く選ぶ手法で、闇雲に全部試すグリッドサーチとは探索戦略が根本的に異なります。
- 「必ず真の最適値が見つかる」は言い過ぎ: 見つかるのは「指定した候補の中での最良」です。そもそも候補に入れなかった値は試されません。
📝 試験でのポイント
- 「ハイパーパラメータの最適な組み合わせを見つけるための総当たり手法」という定義文とグリッドサーチを対応させる問題が基本形です。
- 欠点として「パラメータ数が増えると計算時間が指数関数的に増加する」点が問われる想定です。「線形に増加」などのすり替えに注意しましょう。
- グリッドサーチ/ランダムサーチ/ベイズ最適化を並べ、それぞれの探索戦略の説明を選ばせる対比問題に備えましょう。
- 評価に使う指標の例として精度やF1スコアが挙げられている点も、選択肢の細部で問われる可能性があります。
📚 まとめ
グリッドサーチは、ハイパーパラメータの候補の全組み合わせを学習・評価して最良を選ぶ総当たり探索です。仕組みが単純で漏れがない一方、パラメータ数が増えると計算時間が指数関数的に増える弱点があります。重みの学習(勾配降下法)とは別のレイヤーの話であること、代替手法としてランダムサーチとベイズ最適化があることをセットで覚えておきましょう。
