コンテンツにスキップ

【比較】パラメータとハイパーパラメータの違い

概要

機械学習の説明で必ず出てくる「パラメータ」と「ハイパーパラメータ」は名前が似ていますが、決定的に違う概念です。パラメータは学習中にデータから自動で獲得される値(ニューラルネットの重み・バイアスなど)で、最適化アルゴリズムが勾配降下で更新します。一方ハイパーパラメータは学習を始める前に人間が設定する値(学習率、バッチサイズ、層の数、エポック数、正則化の強さなど)で、最適化アルゴリズム自身は学習しません。チューニングは交差検証やグリッド/ランダム/ベイズ探索で外側から行います。

両者を混同すると、「学習率をモデルが勝手に調整してくれる」と誤解して収束しない、「精度が出ないのを重みのせいにして実はハイパーパラメータ未調整」、LLM の文脈で「70B パラメータ」とサンプリングの temperature を同じ土俵で語る、といった事故につながります。LLM の「パラメータ数(70B など)」は学習済みの重みの個数を指し、推論時の temperature / top_p はリクエストごとに設定するサンプリング設定(ハイパーパラメータの一種であり、モデルの重みそのものではない)です。ここを切り分けるのが本記事のねらいです。

例えるなら:料理人の腕と、レシピの設定値

  • パラメータ … 料理人が試作を繰り返して身体に染み込ませた「腕(火加減の感覚・手の動き)」。練習(学習)の中で本人が自動的に獲得していくもの。
  • ハイパーパラメータ … 調理を始める前に人間が決める「レシピ側の設定値」。オーブンの温度、何回試作するか、調味料を控えめにする度合い。料理人の腕とは別レイヤーで、外から人が決め直す。

詳細比較

比較軸 パラメータ(parameter) ハイパーパラメータ(hyperparameter)
何か モデルがデータから学習する内部の値(重み・バイアス) 学習プロセスを設定するために人間が事前に決める値
決まり方 学習中に最適化アルゴリズム(勾配降下など)が自動更新 学習開始前に人間が設定。最適化アルゴリズムは学習しない
代表例 ニューラルネットの重み w、バイアス b、線形回帰の係数 学習率、バッチサイズ、層数・ユニット数、エポック数、正則化係数、optimizer の種類
調整方法 損失の勾配を逆伝播し勾配降下で更新 グリッド/ランダム/ベイズ探索+検証データ(交差検証)で外側から探索
個数の規模 大規模(LLM では数十億〜:例「70B パラメータ」) 少数(通常は数個〜数十個)
学習データとの関係 データから直接導出される データから学習されない(学習の進め方を規定する)
保存先 学習済みモデル(チェックポイント/重みファイル)に保存 設定・実験管理(コンフィグ)として記録
LLM 推論時の対応物 学習済みの重み(モデルサイズ=パラメータ数) temperature/top_p 等のサンプリング設定(リクエスト単位の設定値)

よくある誤解

  • 誤解1:「ハイパーパラメータも学習でモデルが勝手に最適化してくれる」 — しません。勾配降下が更新するのはパラメータ(重み・バイアス)だけです。学習率やバッチサイズ、層数は学習アルゴリズムの対象外で、人間が検証データを見ながら探索(ハイパーパラメータチューニング)して決めます。「学習率が自動で最適になる」前提でコードを書くと収束しません(学習率スケジューラは“あらかじめ決めた規則で変える”のであって、損失からの勾配で学習しているわけではありません)。
  • 誤解2:「LLM の temperature はモデルのパラメータ(重み)の一つ」 — 違います。temperature や top_p は推論時にリクエストごとに渡すサンプリング設定で、モデルの重みではありません。OpenAI / Anthropic のドキュメントでも API 呼び出しのリクエストパラメータとして定義されており、値を変えても学習済みの重みは一切変わりません。「temperature を下げたらモデルが賢くなった/学習し直した」ではなく、出力のランダム性(確率分布のシャープさ)を変えているだけです。位置づけとしては推論時のハイパーパラメータの一種で、学習で得る w/b とはレイヤーが違います。
  • 誤解3:「『70B パラメータ』のパラメータはハイパーパラメータも含む数」 — 含みません。「70B(700 億)パラメータ」は学習で獲得した重み・バイアスの個数です。層数やエポック数といったハイパーパラメータはこの数に入りません(むしろ層数を決めた“結果”として重みの総数が定まります)。モデルサイズの議論とハイパーパラメータ設定の議論を同じ数字で語らないようにします。
  • 誤解4:「正則化(L1/L2・ドロップアウト率)はモデルが学習する値」 — 正則化の“強さ”を決める係数(λ やドロップアウト率)はハイパーパラメータで、人間が設定します。正則化の影響を受けて学習されるのは重み(パラメータ)側です。「正則化を強くしたのに過学習する」は、学習される重みの問題ではなく、まずハイパーパラメータ(係数)設定とデータを疑う領域です。

実務での選び分け

  • 精度が出ない原因の切り分け → 「重み(パラメータ)が十分に学習できていない(データ量・学習時間・損失設計)」のか「ハイパーパラメータ未調整(学習率が大きすぎ/小さすぎ、エポック不足、正則化過小)」のかを最初に分ける。混ぜると原因究明が迷走する。
  • チューニングの順番 → まず学習が回る(損失が下がる)ハイパーパラメータ(特に学習率)を確保し、その上で検証データに対し探索(グリッド/ランダム/ベイズ)。パラメータは学習に任せ、人間が直接いじらない。
  • 再現性の管理 → パラメータは重みファイル(チェックポイント)、ハイパーパラメータは実験コンフィグ(バージョン管理)として別に保存する。両者を取り違えると実験が再現できない。
  • LLM 利用(学習しない場合) → 触れるのは基本「推論時の設定値」(temperature/top_p/max_tokens 等)。出力の傾向を変えたいだけならここを調整。挙動の根っこ(知識・口調)を変えたいなら学習側(ファインチューニング)の問題で別レイヤー。
  • コスト議論 → モデルサイズ(パラメータ数)は推論コスト・必要メモリに直結。ハイパーパラメータ探索のコストは学習試行回数に直結。別軸として積む。

ひとことまとめ

パラメータは「データから学習で自動獲得される重み・バイアス」、ハイパーパラメータは「学習の進め方を人間が事前に決める設定値(学習率・バッチサイズ・層数・エポック・正則化など)」。学習で更新されるか・人間が外から設定するかが境界です。LLM の「◯◯B パラメータ」は重みの個数、推論時の temperature/top_p はサンプリング設定(ハイパーパラメータの一種)で、モデルの重みとは別物と覚えると混同しません。

出典・参考

  • Google Machine Learning Glossary(parameter=モデルが学習で更新する重み等、hyperparameter=学習プロセスを人が設定する値。learning rate / batch size / epoch / regularization の定義): https://developers.google.com/machine-learning/glossary
  • Wikipedia「Hyperparameter (machine learning)」(hyperparameter はモデルの学習プロセスを設定するために設定する値で、データから学習される parameter とは対照的。learning rate / batch size / ネットワークの位相・規模が例): https://en.wikipedia.org/wiki/Hyperparameter_(machine_learning)
  • Anthropic Messages API(temperature はリクエスト時に渡すボディパラメータで応答のランダム性を制御する設定値。学習済みの重みではない): https://platform.claude.com/docs/en/api/messages