ガウス過程と非パラメトリック回帰
予測値だけでなく不確実性まで閉形式で返すモデルが欲しいなら、ガウス過程が最短解です。カーネルが共分散を決め、事後予測の平均と分散が行列演算だけで求まる原理と、計算量の壁を越える疎近似まで一気に掴めます。
- 1.ガウス過程は関数そのものへの事前分布で、任意の有限個の入力点での関数値が多変量ガウスに従うと仮定する。点ごとの分布ではなく関数全体の分布を扱うのが非パラメトリックの核心。
- 2.カーネル(共分散関数)が2点間の関数値の相関を決め、滑らかさや周期性などの帰納バイアスを符号化する。事後予測分布の平均と分散は訓練データとカーネルから行列演算だけで閉形式に求まり、不確実性を自然に出力する。
- 3.n点の訓練でカーネル行列の逆行列にO(n^3)、予測にO(n^2)かかりスケールしない。inducing points(誘導点)による疎近似でm個の代表点に圧縮し、O(n·m^2)へ計算量を落とすのが実用化の鍵。
関数への事前分布:点ではなく関数を確率変数にする
通常の回帰は、パラメータ w を持つ関数 f(x)=wᵀφ(x) を仮定し、w を推定します。これは「関数の形を有限個のパラメータに押し込める」発想で、パラメトリックモデルと呼ばれます。ガウス過程(GP: Gaussian Process)はこの発想を裏返し、関数 f そのものを確率変数として扱います。パラメータを介さず関数全体に直接分布を置くため、非パラメトリックです。
定義はこうです。GPとは、その関数の値を任意の有限個の入力点 {x_1,…,x_n} で取り出したとき、得られるベクトル [f(x_1),…,f(x_n)] が必ず多変量ガウス分布に従う、という確率過程です。無限次元の関数空間上の分布を、有限個の点に射影するといつでもガウスになる、と言い換えられます。GPは平均関数 m(x) と共分散関数(カーネル)k(x,x') の2つだけで完全に決まります。
f(x) ~ GP( m(x), k(x, x') )
任意の有限点では:
[f(x_1), …, f(x_n)] ~ N( μ, K )
μ_i = m(x_i)
K_ij = k(x_i, x_j) (n×n のカーネル行列、グラム行列)
実務では平均関数を m(x)=0 に取ることが多く、以降そうします。すると関数の性質はすべてカーネル k が握ります。
関数空間は無限次元ですが、私たちが実際に観測・予測するのは有限個の点だけです。GPは「どの有限部分集合を取り出してもガウス」という整合性(コルモゴロフの拡張定理が保証する周辺整合性)を持つため、無限次元の対象を、必要な点だけの有限な多変量ガウスとして厳密に扱えます。ガウスは周辺化も条件付けも閉じている——この代数的な良さが、後述の事後予測分布の閉形式を生みます。
カーネルが共分散と帰納バイアスを決める
カーネル k(x,x') は「入力 x と x' での関数値がどれだけ相関するか」を表します。近い入力ほど関数値が似る、という直観を数式に落としたものです。最も使われるのがRBF(ガウス)カーネルです。
k(x, x') = σ_f² · exp( −‖x − x'‖² / (2·ℓ²) )
ℓ(長さスケール)は「どれだけ離れると相関が切れるか」を決め、小さいほど関数が激しく波打ち、大きいほど滑らかになります。σ_f² は関数値の縦方向の振れ幅です。カーネルを選ぶことは、関数の滑らかさ・周期性・線形性といった帰納バイアスを事前分布として符号化することに等しい。周期カーネルなら周期関数を、線形カーネルなら直線を事前に好むGPになります。カーネルは加算・乗算で合成でき、これがGPの表現力を支えます。
カーネルが有効であるための条件は、任意の点集合で作るカーネル行列 K が半正定値であることです。これは多変量ガウスの共分散行列が満たすべき条件そのもので、SVMとカーネルトリック で出てくるMercer条件と同じものです。GPとカーネルSVMは「特徴空間の内積をカーネルで暗黙に計算する」点を共有しますが、GPはそれを共分散として確率モデルに据える点が異なります。
事後予測分布:平均と分散の閉形式
ここがGPの真骨頂です。訓練データ (X, y)(y は観測ノイズ付き、y_i=f(x_i)+ε_i、ε_i~N(0,σ_n²))を観測したあと、新しい入力 X_* での関数値 f_* の予測分布を求めます。訓練値と予測値をまとめて1つの多変量ガウスに置きます。
[ y ] ~ N( 0, [ K + σ_n²·I K_* ] )
[ f_*] [ K_*ᵀ K_** ] )
K = k(X, X) (n×n)
K_* = k(X, X_*) (n×m_*)
K_**= k(X_*, X_*) (m_*×m_*)
多変量ガウスは条件付けに対して閉じているので、y を観測値で固定したときの f_* の条件付き分布もガウスになり、平均と共分散が代数で求まります。これが事後予測分布です。
事後平均: μ_* = K_*ᵀ (K + σ_n²·I)⁻¹ y
事後共分散: Σ_* = K_** − K_*ᵀ (K + σ_n²·I)⁻¹ K_*
事後平均 μ_* は訓練ラベル y の線形結合で、重みはカーネルが決めます。新しい点が訓練点に近い(カーネル値が大きい)ほど、その訓練ラベルが強く効きます。これはカーネル回帰・加重平均の一般化です。事後共分散 Σ_* は、事前の分散 K_** から「データで説明できた分」K_*ᵀ(K+σ_n²I)⁻¹K_* を引いた残りで、必ず事前以下になります。データの近くでは分散が小さく、遠く外挿する領域では事前分散へ戻り大きくなる——この振る舞いがGPの不確実性推定の本体です。
不確実性推定:データから離れるほど自信を失う
GPが多くのベイズモデルと一線を画すのは、点予測 μ_* と同時に較正された予測分散 diag(Σ_*) を出力する点です。訓練点の密な領域では分散が小さく、データのない外挿領域では分散が事前の σ_f² まで膨らみます。これは「知らないことを知らないと言える」性質で、ベイズ最適化(次に観測すべき点を不確実性が大きい所から選ぶ)や能動学習で決定的に効きます。
予測区間(95%): μ_*(x) ± 1.96 · sqrt( Σ_*(x,x) )
この不確実性は事前分布(カーネルとハイパーパラメータ)と観測ノイズ σ_n² から自動的に出るもので、別途アンサンブルを組む必要がありません。GPはベイズ推論の枠組みそのもの——事前×尤度から事後を得る——を関数空間で閉形式に実行したものと見なせます(事前と事後の関係は MLE・MAP・ベイズ推論の関係 を参照)。
カーネルのハイパーパラメータ(ℓ, σ_f, σ_n)は、周辺尤度(エビデンス)log p(y|X) を最大化して学習します。これは閉形式で書け、データへの適合とモデルの複雑さのペナルティを自動で釣り合わせる——オッカムの剃刀が内蔵された形になっています。
log p(y|X) = −½·yᵀ(K+σ_n²I)⁻¹y − ½·log|K+σ_n²I| − (n/2)·log 2π
└── データ適合 ──┘ └── 複雑さペナルティ ──┘
計算量O(n^3)の壁と疎近似
GPの代償は計算量です。事後予測も周辺尤度も (K+σ_n²I)⁻¹ と log|K+σ_n²I| を必要とし、n×n 行列の逆行列・行列式はコレスキー分解でO(n^3)、メモリはO(n^2) かかります。予測1点ごとには平均でO(n)、分散でO(n^2)です。n が数万を超えると現実的でなくなります。
ボトルネックは n×n のカーネル行列 K+σ_n²I のコレスキー分解です。n を2倍にすると計算は約8倍、メモリは約4倍に膨らみます。これがフルGPを大規模データへ直接適用できない根本理由で、近似なしの素朴な実装は数千〜1万点が実用上の上限の目安になります。
これを解くのがinducing points(誘導点)による疎近似です。m 個(m は n より十分小さい)の代表点 Z={z_1,…,z_m} を導入し、全訓練点の情報をこの少数の点に要約します。誘導点での関数値 u=f(Z) を介してのみ訓練点と予測点が相互作用すると仮定すると、n×n 行列の反転を m×m 行列の反転に置き換えられ、計算量が落ちます。
フルGP: 逆行列 O(n^3), 予測分散 O(n^2)
疎GP(m点): O(n·m^2), メモリ O(n·m) (m ≪ n)
代表的な定式化がFITC(Fully Independent Training Conditional)や、変分推論で誘導点を最適化するSVGP(Sparse Variational GP)です。SVGPは誘導点の位置 Z と分布を変分パラメータとして扱い、ELBO最大化で学習します。これによりミニバッチ確率的勾配が使え、GPを数百万点規模やディープラーニングのパイプラインへ載せられます。
| 観点 | フルGP | 疎GP(inducing points) |
|---|---|---|
| 逆行列の計算量 | O(n^3) | O(n·m^2)(m ≪ n) |
| メモリ | O(n^2) | O(n·m) |
| 近似誤差 | なし(厳密) | 誘導点 m の数・配置に依存 |
| ミニバッチ学習 | 原理的に不可 | SVGPで可(確率的勾配) |
| 適用規模の目安 | 〜1万点 | 数十万〜数百万点 |
まとめ:閉形式の不確実性を、スケールさせる
| 要素 | 正体 | 効く理由 |
|---|---|---|
| 関数への事前 | 有限射影が常にガウス | 周辺化・条件付けが閉じ閉形式が出る |
| カーネル | 共分散=帰納バイアス | 滑らかさ・周期性を事前に符号化 |
| 事後予測 | 平均・分散の閉形式 | y の線形結合と分散縮小で予測+不確実性 |
| 不確実性 | データから離れると増大 | ベイズ最適化・能動学習の判断材料 |
| 疎近似 | 誘導点でO(n^3)→O(n·m^2) | 少数の代表点に情報を要約しスケール |
ガウス過程は、関数そのものに事前分布を置き、カーネルで帰納バイアスを与え、観測で条件付けるだけで、予測の平均と不確実性を閉形式で同時に得る枠組みです。最大の障壁である O(n^3) の計算量は誘導点による疎近似で O(n·m^2) へ下げられ、変分定式化(SVGP)でミニバッチ学習やスケールが可能になります。較正された不確実性が安価に欲しい——ベイズ最適化、能動学習、小〜中規模データの回帰——という場面で、GPは今なお第一級の選択肢です。
AI/機械学習 Article
ガウス過程と非パラメトリック回帰を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ガウス過程
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 5
導入後に効く点
カーネル(共分散関数)が2点間の関数値の相関を決め、滑らかさや周期性などの帰納バイアスを符号化する。事後予測分布の平均と分散は訓練データとカーネルから行列演算だけで閉形式に求まり、不確実性を自然に出力する。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 5
判断チェックリスト
- 自社の用途が「ガウス過程 / ベイズ推論」に近いか確認する。
- 強みである「ガウス過程は関数そのものへの事前分布で、任意の有限個の入力点での関数値が多変量ガウスに従うと仮定する。点ごとの分布ではなく関数全体の分布を扱うのが非パラメトリックの核心。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。