2
ベイジアン最適化のためのGP回帰における不良条件共分散行列
背景と問題 回帰とその後のベイズ最適化(BO)にガウス過程(GP)を使用しています。回帰の場合、MATLABでgpmlパッケージを使用し、いくつかのカスタムメイドの変更を加えますが、問題は一般的です。 2つのトレーニング入力が入力空間内で近すぎる場合、共分散行列が非正定値になる可能性があることはよく知られています(このサイトにはいくつかの質問があります)。その結果、さまざまなGP計算に必要な共分散行列のコレスキー分解は、数値誤差により失敗する場合があります。これは、私が使用している目的関数でBOを実行したときにいくつかのケースで発生し、修正したいと思います。 提案されたソリューション 悪条件を緩和するための標準ソリューションであるAFAIKは、共分散行列の対角線にリッジまたはナゲットを追加することです。GP回帰の場合、これは観測ノイズの追加(または、既に存在する場合は増加)に相当します。 ここまでは順調ですね。コードを修正してgpmlを正確に推論し、コレスキー分解が失敗するたびに、ジョンD' Errico によるこのMATLABコードに触発されたフロベニウスノルムの最も近い対称正定(SPD)行列に共分散行列を修正しようとします。理論的根拠は、元のマトリックスへの介入を最小限にすることです。 この回避策は仕事をしますが、いくつかの機能でBOのパフォーマンスが大幅に低下することに気付きました-おそらくアルゴリズムが特定の領域にズームインする必要があるときはいつでも(たとえば、最小に近づくか、長さのスケールのため問題の不均一に小さくなります)。2つの入力ポイントが近づきすぎるとノイズが効果的に増加するため、この動作は理にかなっていますが、もちろん理想的ではありません。または、問題のあるポイントを削除することもできますが、繰り返しますが、入力ポイントを近づける必要がある場合があります。 質問 GPの共分散行列のコレスキー因数分解に関する数値的な問題は新しい問題ではないと思いますが、驚いたことに、ノイズを増やしたり、互いに近すぎる点を削除したりすることを除けば、これまでのところ多くの解決策を見つけることができませんでした。一方で、私の機能のいくつかは非常に悪い振る舞いをしているので、おそらく私の状況はそれほど典型的ではありません。 ここで役立つ可能性のある提案/参照はありますか?