スパースPCEとLAR
スパースPCEの理論基礎
多項式カオス展開(PCE)とは
多項式カオス展開は、確率入力 \( \mathbf{X} = (X_1,\dots,X_d) \) を持つ応答を、入力分布に直交する多項式基底で展開する手法です。
$$ f(\mathbf{X}) \approx \sum_{\boldsymbol{\alpha} \in \mathcal{A}} c_{\boldsymbol{\alpha}}\, \Psi_{\boldsymbol{\alpha}}(\mathbf{X}) $$
基底 \( \Psi_{\boldsymbol{\alpha}} \) は入力分布ごとに決まります(Wiener-Askey対応:正規分布→Hermite、一様分布→Legendre、等)。PCEの決定的な利点は、係数が求まった瞬間に統計量が解析的に出ることです。
$$ \mathbb{E}[f] = c_{\mathbf{0}}, \qquad \mathrm{Var}[f] = \sum_{\boldsymbol{\alpha} \ne \mathbf{0}} c_{\boldsymbol{\alpha}}^2 $$
さらにSobol'感度指数も係数の部分和の比として追加計算ゼロで得られます。モンテカルロを何万回も回さずに、平均・分散・感度が展開係数から直読できる——これがCAEのUQでPCEが使われる理由です。
次元の呪いとスパース性の仮定
基底の数って、次元と次数を上げるとどれくらい増えるんですか?
全次数 \( p \) までの完全基底は \( P = \binom{d+p}{p} \) 個。\( d=10, p=5 \) で3003個、\( d=20, p=5 \) なら53,130個だ。係数を最小二乗で推定するにはその2〜3倍のCAE解析が要るから、まともに戦うと即破産する。でも救いがあって、実際の工学応答では重要な係数はごく一部——低次の主効果と少数の交互作用に集中している(有効スパース性)。「多くの係数はゼロ」と仮定して重要な基底だけを自動選別するのがスパースPCE、その選別エンジンとして使われるのがLAR(Least Angle Regression)だよ。
LARによる基底選択の原理
LARは、残差との相関が最も高い基底から順に「少しずつ」モデルへ取り込む貪欲アルゴリズムです。基底を1つずつ完全に取り込むステップワイズ法と異なり、相関が拮抗する基底を同時に等角方向へ進めるため選択が安定します。スパースPCEでは、LARが生成する候補モデル列(基底1個→2個→…)のそれぞれをLeave-One-Out誤差で採点し、最良のモデルを採用します。これにより「どの基底を」「何個まで」入れるかがデータ駆動で決まり、人手の次数調整が不要になります。
計算手法の詳細
係数推定の2経路——射影と回帰
| 方式 | 仕組み | 特徴 |
|---|---|---|
| 射影(求積) | 直交性を使い \( c_{\boldsymbol{\alpha}} = \mathbb{E}[f\Psi_{\boldsymbol{\alpha}}] \) を数値求積 | 低次元では高精度。次元とともに求積点が指数増加(スパースグリッドでも限界) |
| 回帰(最小二乗) | サンプル点で \( \| \mathbf{y} - \Psi\mathbf{c} \|^2 \) を最小化 | サンプル配置が自由。スパース化との相性が良く現在の主流 |
スパース化の実際——打ち切り戦略とアダプティブ次数
実装されているスパースPCEは、次の3段構えで候補空間を絞ります。
- 双曲型打ち切り(q-ノルム) — 候補基底を \( \|\boldsymbol{\alpha}\|_q \le p \)(\( q \approx 0.5\sim0.75 \))に制限し、高次の交互作用項を最初から間引く
- LAR選別 — 候補の中からLOO誤差最小のアクティブ基底集合を選ぶ
- アダプティブ次数 — 最大次数 \( p \) を上げながら繰り返し、LOO誤差が最良の \( p \) で停止
この構成なら、必要サンプル数は完全基底の理論値ではなく「アクティブ基底数の2〜3倍」程度まで下がり、\( d = 10\sim20 \) の問題が数十〜200ラン程度で実用精度に達することが多くなります。
検証指標——LOO誤差と修正係数
回帰ベースPCEのLOO誤差は、クリギング同様に閉形式で計算できます(射影行列の対角成分を使う恒等式により、\( n \) 回の再学習は不要)。指標は相対LOO誤差 \( \epsilon_{LOO} \) または \( Q^2 = 1 - \epsilon_{LOO} \) で、目安はモーメント推定目的で \( Q^2 \ge 0.99 \)、傾向把握なら0.95程度。有限サンプルのLOOは楽観側に偏るため、基底数/サンプル数比で補正する修正LOO(UQLab等が実装)を使うのが堅実です。
実務適用の手順
標準ワークフロー
- 入力分布の定義 — 各因子の分布型と範囲を実測・規格から設定。分布の根拠がPCE全体の土台(分布が違えば基底も統計量も変わる)
- 相関の処理 — 入力に相関がある場合はNataf変換等で独立標準変数へ写像してから展開
- 実験計画 — LHSで初期 \( n = 2\sim3 \) 倍×想定アクティブ基底数。迷ったら \( 10d \) から
- アダプティブ・スパースPCE構築 — LAR+LOOで次数・基底を自動選択
- 検証 — 修正LOOと、可能ならホールドアウト数点の実CAE値と比較
- ポスト処理 — 平均・分散・Sobol'指数を係数から算出。必要なら展開上でモンテカルロして分布・裾確率を推定
クリギングとの使い分け
| 観点 | スパースPCE | クリギング |
|---|---|---|
| 得意な応答 | 大域的に滑らか・多項式的 | 局所的な起伏・中程度の非線形 |
| 統計量の取得 | 係数から解析的(Sobol'含む) | 展開上のサンプリングが必要 |
| 予測の不確かさ | 直接は出ない | 予測分散が出る(能動学習可) |
| 入力の扱い | 確率分布として定義が前提 | 範囲だけでも構築可 |
「UQ・感度分析が主目的ならPCE、逐次サンプリングや最適化が主目的ならクリギング」が入口の目安です。両者を組み合わせたPC-Kriging(トレンドにスパースPCE、残差にGP)は両方の長所を取る折衷で、UQLab等で使えます。
CAE特有の注意点
解析の数値ノイズ(メッシュ再生成・収束打ち切り)は高次係数に漏れ込み、分散とSobol'指数を系統的に過大評価させます。ノイズ疑いがあるときは、①同一点の再計算でノイズ振幅を測る、②収束基準を1桁締める、③次数上限を意図的に下げる(ノイズフィット防止)、の順で対処します。また失敗ラン(非収束)の除外はサンプル分布を歪めるため、Morris法のページで述べた扱い(範囲の見直し・記録)と同じ規律を適用します。
実装ツール
主要ツールの対応状況
| ツール | スパースPCE対応 | 特徴 |
|---|---|---|
| UQLab(MATLAB) | LARS・OMP・アダプティブ次数・修正LOO | スパースPCEの参照実装として広く引用される |
| OpenTURNS(Python) | FunctionalChaos(LARS+モデル選択) | 分布定義〜信頼性解析まで一体。産業利用実績 |
| ChaosPy(Python) | 基底生成・回帰・求積が自由に組める | 研究・カスタム実装向け |
| Dakota | polynomial_chaos(スパース回帰含む) | ソルバー連携枠組みでHPC運用 |
| pygpc 等 | 適応スパースgPC | 用途特化の軽量実装 |
OpenTURNSでの最小例
import openturns as ot
dist = ot.ComposedDistribution([ot.Normal(210e9, 6e9), # E
ot.Uniform(1.8e-3, 2.2e-3)]) # 板厚
X = ot.LHSExperiment(dist, 60).generate()
Y = run_fem_batch(X) # CAE一括実行(ユーザー実装)
algo = ot.FunctionalChaosAlgorithm(X, Y, dist) # 既定でLARS+モデル選択
algo.run()
result = algo.getResult()
sens = ot.FunctionalChaosSobolIndices(result)
print(sens.getSobolIndex(0), sens.getSobolIndex(1)) # Sobol'一次指数
係数・アクティブ基底・LOO誤差はいずれもresultオブジェクトから取得でき、報告書にはアクティブ基底数とLOO誤差を必ず添えます。
先端研究の動向
圧縮センシングとの接続
「少数サンプルからスパースな係数を復元する」問題は圧縮センシングそのものであり、\( \ell_1 \) 最小化(Basis Pursuit)・OMP・ベイズ圧縮センシングなどの復元アルゴリズムがPCEに移植されています。復元保証理論(RIP等)の立場から必要サンプル数を論じる研究が進み、LARを含むアルゴリズム間の実証比較も蓄積されています。実務的には「どの復元法でも、修正LOOでのモデル選択を挟むのが最終精度を決める」というのが経験的な結論です。
任意分布・相関入力への拡張(aPC・コピュラ)
実測データはきれいな正規・一様に従いません。データのモーメントから直交基底を数値的に構成するarbitrary PC(aPC)、相関構造をコピュラで表現してRosenblatt/Nataf変換で独立化する枠組みが整備され、「分布仮定の理想化」によるモデル化誤差を切り分けられるようになっています。分布の推定不確かさ自体をUQに含める二階の解析も研究対象です。
不連続応答とマルチエレメントPCE
座屈・接触・相変化のような応答の不連続・急峻な遷移は、大域多項式では原理的に収束が悪化します(Gibbs現象)。入力空間を分割して要素ごとに低次PCEを張るマルチエレメントgPC、不連続位置を検出して分割を適応させる手法が研究され、突発型の非線形を含むCAE応答への適用が広がっています。実務では「LOOが次数を上げても改善しない」のが不連続のサインで、その時点でME-PCEまたはクリギング系への切替を検討します。
トラブル対応
症状別の原因と対策
| 症状 | 考えられる原因 | 対策 |
|---|---|---|
| LOOは良いのに検証点で外す | サンプル不足でLOOが楽観的、外挿 | 修正LOOを使用。ホールドアウト検証を追加、使用域を学習域内に |
| 次数を上げると誤差が悪化 | ノイズへの過学習、サンプル不足の高次項 | 次数上限を下げる、サンプル追加、ノイズ振幅の実測 |
| 分散・Sobol'指数が過大 | 数値ノイズが高次係数に混入 | 収束基準の厳格化、メッシュ固定、q-ノルム打ち切りを強める |
| 相関のある入力でSobol'指数が不自然 | 独立前提の展開に相関入力を直接投入 | Nataf/Rosenblatt変換で独立化。指数の解釈も変換後変数で行う |
| 係数が実行のたびに変わる | アクティブ基底の選択が不安定(サンプル僅少) | サンプル追加。安定するまで統計量の信頼区間をブートストラップで併記 |
| 不連続応答で収束しない | 大域多項式の限界(Gibbs) | マルチエレメントPCE、領域分割クリギング、応答の再定義(発生荷重を応答にする等) |
報告に必要な最小セット
スパースPCEの結果って、報告書には何を書けば検証可能になりますか?
5点セットで覚えるといい。①入力分布の定義と根拠(型・パラメータ・相関)、②サンプル数と実験計画の種類、③選ばれた次数とアクティブ基底数、④修正LOO誤差(できればホールドアウト誤差も)、⑤導出した統計量(平均・分散・Sobol'指数)とその使用目的。この5点があれば第三者が同じ解析を再構成できる。逆にQ²なしのSobol'棒グラフだけの報告は、どれだけ綺麗でも検証不能だから避けよう。
なった
詳しく
報告