ガウス過程回帰(GPR)の基礎と実務: 予測分布・不確実性の定量化とカーネル設計・大規模データ対応

はじめに

ガウス過程回帰(Gaussian Process Regression, GPR)は、機械学習における非パラメトリックなベイズ回帰モデルの代表です。観測データから関数の分布を直接モデル化し、予測値だけでなくその不確実性(分散)も同時に推定できる点が特徴です。小~中規模データで高精度な予測と信頼区間の提供が求められる場面で広く用いられます。

基本的な考え方

ガウス過程(GP)は、任意の有限個の入力点に対する出力が多変量正規分布に従うような確率過程です。つまり、関数 f(x) を次のように定義します。

f(x) ~ GP(m(x), k(x, x'))

ここで m(x) は平均関数(通常は 0 に置くことが多い)、k(x, x') は共分散関数(カーネル)です。観測ノイズを含めた回帰モデルでは観測 y_i = f(x_i) + ε_i (ε_i ~ N(0, σ_n^2))とします。

予測の数式(要点)

訓練データ X = {x_i}_{i=1}^n, y = {y_i} と、テスト入力 X_* に対する予測は次で与えられます。

  • K = K(X, X) + σ_n^2 I (訓練点間の共分散行列にノイズ分散を加えたもの)
  • K_* = K(X, X_*) (訓練点とテスト点間の共分散)
  • K_** = K(X_*, X_*) (テスト点同士の共分散)

予測分布は正規分布で、平均と共分散は次のように与えられます。

予測平均: μ_* = K_*^T K^{-1} y

予測共分散: Σ_* = K_** - K_*^T K^{-1} K_*

また、モデルのハイパーパラメータ(カーネルのパラメータやノイズ分散)は、対数周辺尤度(marginal log likelihood)を最大化することで推定されることが多いです。

log p(y|X, θ) = -1/2 y^T K^{-1} y - 1/2 log |K| - (n/2) log(2π)

共分散関数(カーネル)とその役割

カーネル k(x,x') は「どれだけ似ているか」を定量化し、関数の滑らかさや周期性、線形性などの性質を定めます。代表的なカーネル例:

  • RBF(Radial Basis Function, Gaussian): 滑らかで無限回微分可能。スケール(長さ尺度 l)と振幅 σ_f を持つ。
  • Matérn: RBF より柔らかい滑らかさを制御でき、ν によって微分可能性を調整。
  • 線形カーネル: 線形関係をモデル化。
  • 周期カーネル: 周期的挙動を表現。
  • 合成カーネル: 複数のカーネルを足し合わせたり掛け合わせることで複雑な構造を表現(例: 線形 + RBF + 周期)。

カーネル設計はモデリングにおける重要ポイントであり、適切なカーネルを選ぶことでデータの構造をうまく捉えられます。自動でカーネル探索を行う研究(自動統計モデリング)も進んでいます。

不確実性の表現

GPR の強みは予測平均だけでなく、予測分散(あるいは信頼区間)を自然に得られる点です。これはベイズ的な予測であり、外挿時やデータが少ない領域での不確実性評価に役立ちます。ただし、カーネルの仮定が誤っていると不確実性が過小あるいは過大評価されることがあるため注意が必要です。

ハイパーパラメータ推定とモデル選択

ハイパーパラメータ(カーネルパラメータ、ノイズ分散など)は通常、対数周辺尤度を最大化して推定します。勾配情報(∂/∂θ log p(y|X,θ))が解析的に得られるため、効率的な最適化が可能です。ベイズ的に扱う場合はハイパーパラメータに事前分布を与えてマルコフ連鎖や変分推論で周辺化する方法もあります。

計算量とスケーラビリティの問題

ガウス過程の主要な欠点は計算コストです。訓練ではカーネル行列 K の逆行列計算や行列式計算が必要で、計算量は O(n^3)、メモリは O(n^2) になります。n が数千〜数万を超えると直接適用が困難になります。

スケーラビリティを高める近似手法

大規模データに対しては、様々な近似手法が提案されています。

  • 誘導点(Inducing points)を使う低ランク近似(Sparse GP, FITC, VFE):観測点の代わりに m << n 個の誘導点を導入して計算を軽くする。
  • 変分推論を用いる確率的変分GP(SVGP):ミニバッチ化して大規模データに対応(Hensman らの手法)。
  • 構造的補間(SKI)や行列分解(Kronecker, Toeplitz)を利用した高速手法:規則的な格子や特定のカーネルで効率化。
  • 逐次法(共役勾配法)と行列ベクトル積だけで推論する手法(例: GPyTorch の工夫)。

非ガウス尤度の場合(分類や離散データ)

回帰でない問題(例えば分類)では、観測モデルが正規分布でないため解析的な周辺化ができません。代表的なアプローチは以下です。

  • ラプラス近似(Laplace)
  • 期待伝播(EP)
  • 変分推論(VI)

これらの近似により、分類やポアソン回帰などの非ガウス尤度問題にも GP を適用できます。

関連手法との比較

  • カーネルリッジ回帰やサポートベクターマシン(SVM)とは、カーネル関数を共有する点で関連するが、GPR はベイズ的で予測分散を与える点が異なる。
  • ベイズ線形回帰は有限次元の線形基底の仮定に基づくが、適切なカーネルを選べば GP は無限次元の線形基底に相当する(RBF カーネルなど)。

実装上のポイントと注意点

  • データ標準化(平均を引き、スケールを揃える)は重要。ノイズ分散と信号振幅のスケールに影響する。
  • 数値安定化のためにカーネル行列に小さな「ジッタ」(例: 1e-6)を加える習慣がある。
  • カーネルの初期値設定や多峰性(局所解)に注意。複数の初期化で最適化するのが実務的。
  • 外挿(観測範囲外の予測)ではカーネルの仮定に強く依存するため、過信は禁物。

代表的な用途

  • 地理空間データの補間(クリギング)
  • ベイズ最適化(ハイパーパラメータ探索)
  • 物理シミュレータのサロゲートモデルや不確実性定量化
  • ロボティクスでの学習と予測、センサフュージョン
  • 時系列予測(カーネル設計で長期依存や周期性を表現)

実装ライブラリ(代表例)

  • scikit-learn: GaussianProcessRegressor(小〜中規模向け、手軽に使える)
  • GPflow: TensorFlow ベースの GP ライブラリ(変分法やスパース法対応)
  • GPy: Python の GP 実装(解析機能が豊富)
  • GPyTorch: PyTorch ベース、高速化や大規模対応のための工夫あり

まとめと実務的アドバイス

ガウス過程回帰は不確実性を扱える柔軟な回帰手法であり、データが少ない領域やモデルの説明性が重要な場面で特に有効です。しかし計算コストとカーネル選択が実践上の課題になります。実務では次の点を意識してください。

  • まずはシンプルなカーネル(例: RBF + ノイズ)で試し、性能と不確実性を確認する。
  • データを標準化し、ジッタを入れて数値安定性を保つ。
  • サンプル数が増える場合は誘導点法や変分法、GPyTorch などの大規模対応ライブラリを検討する。
  • 得られた不確実性を過信せず、モデル仮定(カーネル)と予測領域を常に確認する。

参考文献