ガウス過程回帰シミュレーター 戻る
機械学習シミュレーター

ガウス過程回帰 — RBFカーネルと95%信頼区間

1次元データへの GP 回帰をリアルタイム可視化。観測点数・長さスケール・信号分散・ノイズを変えて、ベイズ的な不確かさ推定の挙動を学べます。

パラメータ設定
観測点数 N
長さスケール l
信号分散 σ_f
ノイズ σ_n

真関数 $y=\sin(x)+0.5\cos(2x)$ に決定論的ノイズを加えた N 個の観測(LCG seed=42 固定)で GP 回帰します。

計算結果
x*=5 の予測平均 μ
x*=5 の予測標準偏差 σ
全予測点の平均不確かさ
対数周辺尤度 log p(y)
GP 回帰の予測平均と95%信頼区間

灰色破線=真関数 $\sin(x)+0.5\cos(2x)$ /黒丸=観測点/青実線=予測平均 μ(x)/青塗り=μ ± 1.96σ の95%信頼帯

理論・主要公式

ガウス過程回帰では、観測点間の共分散をカーネル関数で表し、観測データで条件付けて予測分布を求めます。

RBFカーネル(信号分散 $\sigma_f$、長さスケール $l$):

$$k(x, x') = \sigma_f^2 \exp\!\left(-\frac{(x - x')^2}{2 l^2}\right)$$

カーネル行列にノイズ分散を加える($\delta_{ij}$ はクロネッカーのデルタ):

$$K_{ij} = k(x_i, x_j) + \sigma_n^2 \delta_{ij}$$

予測点 $x_\ast$ における予測平均と予測分散:

$$\mu(x_\ast) = \mathbf{k}_\ast^\top K^{-1} \mathbf{y}, \qquad \sigma^2(x_\ast) = k(x_\ast, x_\ast) - \mathbf{k}_\ast^\top K^{-1} \mathbf{k}_\ast$$

95%信頼区間は $\mu \pm 1.96\,\sigma$。観測点から離れるほど分散が大きくなり、不確かさが自動的に増えるのが特徴です。

ガウス過程回帰シミュレーターとは

🙋
回帰って最小二乗法しか知らないんですけど、「ガウス過程回帰」って何が違うんですか?
🎓
大きな違いは「予測に不確かさが付いてくる」ことだ。最小二乗法は1本の最良な直線や曲線を返すだけだけど、GPは予測点ごとに「平均値」と「その周りのばらつき」をペアで返してくる。上のシミュレーターの青い実線が予測平均、薄い青の帯が95%信頼区間だよ。観測点(黒丸)の近くでは帯が細く、離れると太くなるのが見えるかな。
🙋
本当だ!観測点がない区間だけ帯が膨らんでます。これって自動的にそうなるんですか?
🎓
そう、誰も「不確かさは観測点から離れると大きくする」とプログラムしたわけじゃない。GPの数学そのものが教えてくれるんだ。式で言うと予測分散 $\sigma^2(x_\ast) = k(x_\ast,x_\ast) - \mathbf{k}_\ast^\top K^{-1} \mathbf{k}_\ast$。観測点から遠いと $\mathbf{k}_\ast$ が小さくなり、引かれる項が小さくなるので分散が大きくなる。これが「不確かさが自動で出る」秘密だよ。
🙋
「長さスケール」のスライダーを左に動かすと、曲線がぐにゃぐにゃになりますね。逆に右に動かすと、ほぼ直線になっちゃう。
🎓
それが l の効果だ。RBFカーネルの $\exp(-(x-x')^2 / 2l^2)$ で、l は「どのくらい離れた点まで似ているとみなすか」を決める。l が小さいと近い点しか影響せず、結果として関数がぐにゃぐにゃ振動する。逆に l が大きいと遠い点まで「似ている」と判断するので、滑らかになりすぎて真の振動を捉えきれなくなる。実務では「対数周辺尤度」を最大化して l を自動選択するんだ。シミュレーターの logML カードを見ながら l を動かしてみて。最大になる l がだいたい「最適」だよ。
🙋
なるほど。じゃあ「ノイズ σ_n」を大きくするとどうなりますか?
🎓
σ_n を大きくすると、GPは「観測値はそんなに正確じゃない」と判断するから、観測点を厳密に通らなくなって滑らかな曲線になる。逆に σ_n を非常に小さくすると、観測点を必ず通そうとしてオーバーフィットする。実務では「真のノイズレベル」を当てることが大事で、これも対数周辺尤度を最大化することで自動チューニングするのが普通だ。GPがすごいのは、l・σ_f・σ_n の全ハイパーパラメータを「データから一貫して学習できる」枠組みを持っていることなんだよ。

よくある質問

はい、Matérn(ν=1/2、3/2、5/2)、有理2次(rational quadratic)、周期カーネル、線形カーネルなど多くの選択肢があります。RBFは無限階微分可能で滑らかすぎる場合があり、Matérn 3/2 や 5/2 はより現実的な滑らかさを表現できます。周期的な現象(季節変動、振動など)には周期カーネル、複数の挙動を組み合わせるならカーネルの加算・乗算(kernel composition)が有効です。
log p(y|X, θ) を、ハイパーパラメータ θ = (l, σ_f, σ_n) に関して勾配法(L-BFGS等)で最大化します。この値は「データへの当てはまり」と「モデルの複雑さに対するペナルティ」のバランスを自然に取るため、過適合を防ぐ正則化の役割を果たします。実装では sklearn.gaussian_process や GPy、GPflow などのライブラリが微分・最適化を自動で行ってくれます。
N が数千〜数万になると O(N³) の計算が現実的でなくなるため、データの代わりに M≪N 個の「誘導点(inducing points)」で近似します。SVGP(Stochastic Variational GP)は変分推論で誘導点を学習し、ミニバッチ学習にも対応します。FITC、DTC、KISS-GPなど多くの近似手法があり、扱えるデータ規模を100万点以上まで拡張できます。精度と計算コストのトレードオフを設計で選びます。
代表的なのは EI(期待改善量)、UCB(信頼上限)、PI(改善確率)です。EI は「現在の最良値からどれだけ改善するか」の期待値を最大化、UCB は μ + κσ で「平均が高くかつ不確かさが大きい点」を選びます。κ を大きくすると探索重視、小さくすると活用重視になります。多目的最適化なら EHI(期待ハイパーボリューム改善)など専用の獲得関数が使われます。

実世界での応用

ベイズ最適化:機械学習のハイパーパラメータ探索(学習率、層数、正則化係数など)は、1回の評価に数時間〜数日かかることがあります。GPで予測平均と不確かさを推定し、獲得関数で次に試すべき点を決めることで、ランダム探索やグリッドサーチに比べて圧倒的に少ない試行回数で最良点に到達できます。AutoML、SigOpt、Optuna 等のツールに広く実装されています。

材料設計・実験計画:新材料の合成条件(温度、組成、時間など)を実験で探索するとき、1回の実験コストが非常に高いケースが多いです。GPベースのベイズ最適化を使うと、過去の実験結果から「次に試すべき有望な条件」を提案でき、実験回数を大幅に削減できます。電池材料、触媒、合金開発、創薬で実用化が進んでいます。

シミュレーションの代理モデル(surrogate model):CFD や FEM の重いシミュレーションを多数回実行する代わりに、少数の計算結果から GP を学習させて代理モデルとして使います。設計最適化、感度解析、不確かさ伝播の解析で、計算コストを数桁削減できます。航空機翼の空力設計、自動車衝突解析のロバスト最適化などで活用されます。

地球統計学(クリギング):GPの地理空間版である「クリギング」は、鉱床評価、土壌汚染マップ、気象データの空間補間で古くから使われています。少数の測定地点から、未測定地点の値とその不確かさを推定でき、追加サンプリング地点の選定にも役立ちます。実は GP は地球統計学の世界では1960年代から「Kriging」として知られていました。

よくある誤解と注意点

最も多い誤解は、「ハイパーパラメータ(l, σ_f, σ_n)は適当でいい」と思ってしまうことです。実際にはこれらの値で予測の質が決定的に変わります。シミュレーターで l スライダーを 0.1 と 5.0 の両極端に動かしてみてください。前者は観測ノイズに完全に過適合し、後者は真の振動を全く捉えられません。実務では必ず対数周辺尤度を最大化する自動チューニングを行うか、最低でも交差検証で l を選びましょう。「目で見て良さそうな値」は危険です。

次に多いのが、GPの予測区間を「予測値が必ず95%の確率でそこに入る」と読み違えることです。これは「現在のモデル(カーネル選択+ハイパーパラメータ)の下での確率」であり、モデルが現実と合っていなければ意味を持ちません。例えば真関数が周期的なのに RBF カーネルを使うと、信頼区間は「滑らかな関数の中での不確かさ」しか表さず、構造的なズレを見逃します。区間幅だけでなく「予測平均が真関数からどれだけずれるか」を別途検証することが重要です。

最後に、「観測点を増やせば必ず精度が上がる」とは限らない点に注意してください。N が大きくなるとカーネル行列の条件数が悪化し、Cholesky 分解で数値的不安定が起こりやすくなります。実装では対角に小さなジッター(10⁻⁶ 程度)を加えて安定化させます。また計算量も O(N³) で増えるため、N が数千を超える場合はスパース GP や誘導点法を検討する必要があります。シミュレーターでは N=30 が上限ですが、実用では「N を増やすこと」と「カーネル選択を見直すこと」のどちらが効果的かを常に天秤にかけましょう。