kriging — CAE用語解説

カテゴリ: 用語集 | 2026-01-15
CAE visualization for kriging - technical simulation diagram

kriging

🧑‍🎓

先生、クリギングってCAEの最適化でよく出てきますけど、どんな手法ですか?

理論と物理

Krigingの基本概念

🧑‍🎓

Kriging(クリギング)って、CAEでよく聞くけど、結局何をしている手法なんですか?

🎓

空間統計学に基づく補間・予測手法だ。限られたサンプル点(例えば、異なる設計パラメータでのCAEシミュレーション結果)から、未サンプルの点での応答(応力、固有振動数など)を確率的に推定する。特に「最良線形不偏予測(BLUP)」という性質が特徴で、予測誤差の分散を最小化する。

🧑‍🎓

「確率的に推定」というのは、単なる曲線フィッティングとどう違うんですか?

🎓

大きな違いは、Krigingが「地域化変数」という確率過程を仮定することだ。観測値

$$ Z(\mathbf{x}) $$
を、平均的なトレンド
$$ \mu(\mathbf{x}) $$
と確率的な揺らぎ
$$ \varepsilon(\mathbf{x}) $$
の和とみなす:
$$ Z(\mathbf{x}) = \mu(\mathbf{x}) + \varepsilon(\mathbf{x}) $$
。この揺らぎの相関が、点間の距離が近いほど強くなる、というモデルを組む。これが曲線フィッティングにはない「空間的な相関」を考慮した予測を可能にする。

🧑‍🎓

その「相関」は具体的にどう表すんですか?

🎓

共分散関数、または相関関数を使ってモデル化する。例えば、ガウス型相関関数がよく使われる:

$$ R(\mathbf{x}^i, \mathbf{x}^j) = \exp\left( -\sum_{k=1}^{d} \theta_k |x_k^i - x_k^j|^{p_k} \right) $$
ここで、
$$ \theta_k $$
は相関強度を決めるパラメータ(ハイパーパラメータ)、
$$ p_k $$
は平滑度を決めるパラメータだ。この関数値は、2点が同じ(距離0)なら1、離れるほど0に近づく。この相関構造をデータから推定することで、予測を行う。

数値解法と実装

Krigingモデルの構築手順

🧑‍🎓

Krigingモデルを実際に作るには、どんな計算ステップを踏むんですか?

🎓

大まかに4ステップだ。1. サンプル点の計画(実験計画法:Latin Hypercube Samplingなど)、2. 各点でCAEシミュレーションを実行し応答値を取得、3. 取得したデータを用いてKrigingモデルのハイパーパラメータ(

$$ \theta_k, p_k $$
など)を最尤推定などで決定、4. 決定したモデルを用いて未サンプル点の予測値と予測誤差分散を計算する。

🧑‍🎓

ハイパーパラメータの「最尤推定」って、具体的にはどういう計算ですか?

🎓

観測データ

$$ \mathbf{z} $$
が多変量正規分布に従うと仮定し、その確率密度関数(尤度関数)を最大にするパラメータを探す。対数尤度関数は例えばこうなる:
$$ L(\boldsymbol{\theta}, \mu, \sigma^2) = -\frac{n}{2}\ln(2\pi) - \frac{1}{2}\ln|\mathbf{R}| - \frac{1}{2\sigma^2}(\mathbf{z} - \mathbf{1}\mu)^T \mathbf{R}^{-1} (\mathbf{z} - \mathbf{1}\mu) $$
ここで
$$ \mathbf{R} $$
は相関行列だ。これを
$$ \boldsymbol{\theta} $$
について最大化するために、勾配法や進化計算アルゴリズムが使われる。計算コストの大部分は、この最適化と、その過程で必要となる相関行列
$$ \mathbf{R} $$
の逆行列計算にある。

🧑‍🎓

予測誤差分散も計算できると言っていましたが、その式は?

🎓

新しい点

$$ \mathbf{x}^* $$
における予測誤差分散
$$ s^2(\mathbf{x}^*) $$
は以下のように表せる:
$$ s^2(\mathbf{x}^*) = \sigma^2 \left[ 1 - \mathbf{r}^T \mathbf{R}^{-1} \mathbf{r} + \frac{(1 - \mathbf{1}^T \mathbf{R}^{-1} \mathbf{r})^2}{\mathbf{1}^T \mathbf{R}^{-1} \mathbf{1}} \right] $$
ここで、
$$ \mathbf{r} $$
は新しい点と既存サンプル点との相関ベクトルだ。この値が大きい領域は「情報が少ない不確かさが高い領域」と解釈でき、能動的学習(Adaptive Sampling)の指針として使われる。

実践ガイド

CAEワークフローへの組み込み

🧑‍🎓

実際の設計開発でKrigingを使う典型的なワークフローはどんな感じですか?

🎓

設計空間探索や感度分析、特に最適化の前段階として使われることが多い。例えば、板厚やリブの位置など5〜10個の設計変数に対して、初期サンプル数として「変数の10倍」程度(例えば50〜100点)のLHS計画を作成し、各点でFEM解析をバッチ実行する。得られた応力や変形量の最大値に対してKrigingモデルを構築し、その代理モデルを用いて数百万回のモンテカルロシミュレーションや、効率的な最適化アルゴリズム(例えば遺伝的アルゴリズム)を実行する。これにより、直接FEMを使うより100倍以上高速に設計空間をスクリーニングできる。

🧑‍🎓

サンプル点数はどう決めればいいですか?多ければ多いほど良いんですか?

🎓

多すぎると構築コストが増大し、少なすぎると精度が出ない。経験則として、設計変数dに対して10d〜20dが初期サンプル数の目安だ。ただし、応答曲面が非常に複雑(多くの局所解があるなど)な場合はもっと必要になる。重要なのは、モデル精度を検証することだ。構築したKrigingモデルに対して、学習に使っていない検証用のサンプル点(例えば全体の20%)を用意し、予測値と実際のCAE結果との誤差(RMSEやR²)を評価する。R²値が0.9を下回るようなら、予測誤差分散が大きい領域を特定して追加サンプリング(Adaptive Sampling)を行うべきだ。

🧑‍🎓

Krigingモデルが「過学習」することはあるんですか?

🎓

ある。特にハイパーパラメータ

$$ \theta_k $$
が極端に大きい値に推定されると、相関が距離に対して急激に減衰し、実質的にサンプル点を通るだけの「折れ線グラフ」のようなモデルになる。これは数値的ノイズ(メッシュわずかな違いによる結果のぶれ)に過剰に適合してしまう。これを防ぐには、最尤推定の際に
$$ \theta_k $$
に上限を設けたり、パラメータ空間で複数の初期値から最適化をスタートさせて安定した解を探す、といった対策が必要だ。

ソフトウェア比較

主要CAEソフトにおける実装

🧑‍🎓

Krigingを使う場合、どんなソフトウェアが選択肢になりますか?

🎓

大きく分けて3種類ある。1. CAEソフトに統合された最適化/DOEモジュール(Ansys DesignXplorer、Siemens HEEDS、Altair HyperStudy)、2. 専門のプロセス統合・設計最適化(PIDO)ツール(modeFRONTIER、Isight)、3. プログラミング言語のライブラリ(Pythonの`scikit-learn`や`GPy`、MATLABのStatistics and Machine Learning Toolbox)。統合型はワークフロー構築が楽だが、PIDOツールはアルゴリズムのカスタマイズ性が高い。

🧑‍🎓

Ansys WorkbenchのDesignXplorerでKrigingを使う場合、どんな設定が必要ですか?

🎓

Response Surface Optimizationの設定で、「Kriging」を代理モデルタイプとして選択する。重要な設定は「Theta」の初期値と範囲だ。デフォルトでは「Trend Function」は「Constant」か「Linear」が選べる。複雑な応答には「Linear」を選ぶことが多い。また、相関関数は「Gauss」がデフォルトだ。100サンプル点程度までなら、Workbench上でも問題なく動作するが、それ以上になると最適化計算に時間がかかる場合がある。

🧑‍🎓

Pythonで自分で実装するメリットは何ですか?

🎓

柔軟性とコストだ。`scikit-learn`の`GaussianProcessRegressor`は、カーネル(相関関数)を自分で組み合わせられる(例:`RBF()` + `WhiteKernel()`)。また、予測値だけでなく予測分布の分位数も直接計算できるので、信頼性ベース設計最適化(RBDO)に組み込みやすい。商用ソフトのブラックボックスな部分を理解したい場合や、研究開発で新しいアルゴリズム(例えば異方性を考慮した特殊なカーネル)を試したい場合には必須だ。ただし、CAEソフトとのデータ連携や並列計算ジョブの管理は自分で構築する必要がある。

トラブルシューティング

よくある問題と対策

🧑‍🎓

Krigingモデルを構築しようとしたら、「共分散行列が特異である」というエラーが出ました。原因は何ですか?

🎓

主に2つの原因が考えられる。1. サンプル点の中に互いに極端に近い点が含まれている。例えば、LHSで生成した点が丸め誤差などで実質的に同じ座標になってしまうと、相関行列

$$ \mathbf{R} $$
の行がほぼ同一になり、逆行列が計算できない。2. ハイパーパラメータ
$$ \theta_k $$
が最適化の過程で0に近づきすぎて、すべての点の相関が1に近くなり、行列がランク落ちする。対策としては、サンプル点を事前にチェックして近接点を除去する、または共分散行列に「ナゲット効果」を表す小さな対角行列(例えば、`WhiteKernel`)を加えて数値的安定性を高める。

🧑‍🎓

構築したモデルの予測が、サンプル点から離れるとすぐに平均値(トレンド関数)に張り付いてしまいます。これはなぜですか?

🎓

これは「相関長」が短すぎる、つまりハイパーパラメータ

$$ \theta_k $$
が大きすぎる状態だ。相関関数が急激に0に落ちるため、サンプル点からの影響がほとんど及ばず、予測は大域的なトレンド
$$ \mu(\mathbf{x}) $$
に収束する。最尤推定の際に局所解に陥っている可能性が高い。対策として、
$$ \theta_k $$
の最適化の初期値を小さめ(例えば0.1)に設定し直す、または最適化アルゴリズムをグローバル探索型(例:差分進化法)に変更して再計算してみる。

🧑‍🎓

CAEのノイズ(数値誤差)が大きい場合、Krigingは使えないんですか?

🎓

いや、むしろKrigingはノイズを明示的にモデル化できる「Regression Kriging」という派生形が有効だ。先ほどのモデルに、観測ノイズの分散

$$ \sigma_n^2 $$
を表す項を加える。具体的には、相関行列の対角成分に
$$ \sigma_n^2 / \sigma^2 $$
を加算する。これにより、モデルはサンプル点を厳密には通らなくなり、過学習を防ぎつつ背後にある滑らかなトレンドを推定できる。商用ソフトでは「Nugget Effect」や「Noise Variance」というパラメータとして設定できる場合が多い。

この記事の評価
ご回答ありがとうございます!
参考に
なった
もっと
詳しく
誤りを
報告
参考になった
0
もっと詳しく
0
誤りを報告
0
Written by NovaSolver Contributors
Anonymous Engineers & AI — サイトマップ
プロフィールを見る