科學計算實務:軟體、驗證與可重現性

多項式混沌(polynomial chaos)

假設你模擬的輸出取決於幾個不確定的輸入,而你想知道輸出的整個分佈——它的平均、散佈,以及它超過某個危險門檻的機率。蒙地卡羅就只會抽樣幾千次再清點結果,付出緩慢的 1/sqrt(N) 代價。當這份依賴是光滑的時候,多項式混沌走一條更聰明的路:它建立一個精簡的「公式」——一個關於隨機輸入的多項式——來模仿輸出如何回應,然後幾乎免費地從那個公式上讀出統計量。這個名字是歷史性的,且有點誤導:它一點也不混沌;這裡的「混沌」(chaos)是個舊詞(來自 Norbert Wiener 一九三八年的工作),指的是一種隨機展開。

以下是平實步驟下的想法。把不確定的輸入寫成隨機變數(比方說單一個 xi,帶有已知分佈)。多項式混沌把輸出 Y 近似為一個短級數 Y 約等於 sum_{k=0}^{P} c_k Phi_k(xi),其中 Phi_k 是與輸入分佈相匹配的特殊「正交」多項式——高斯輸入用埃爾米特多項式、均勻輸入用勒讓德多項式,依此類推(這種匹配正是「廣義」多項式混沌的想法)。巧妙之處在於,這些多項式相對於輸入的機率權重是正交的,所以一旦你找出係數 c_k,輸出的平均就單純是 c_0,它的變異數則是其他 c_k 平方的加權和——統計量是用手就能從係數裡掉出來的,不需要再取樣。你找係數的方式,要嘛是投影(計算積分,常用高斯求積),要嘛是回歸(把級數擬合到不多的若干次模擬執行上)。

當它行得通時,多項式混沌可能比蒙地卡羅便宜得驚人:少數幾次精挑細選的模擬執行,就能釘住一個蒙地卡羅要用幾千個樣本才能解析出來的分佈,因為對光滑的回應,這個級數收斂得很快(譜收斂)。它本質上是一個譜/代理方法,從「近似空間的函數」移植到「近似隨機輸入的函數」。誠實的限制很尖銳。第一,它需要輸出「光滑地」依賴於輸入——一個不連續(一次突然的相變、一個門檻)會毀掉多項式擬合,就像龍格現象毀掉高次插值一樣。第二,它受維度災難所苦:項數隨不確定輸入的個數快速增長,所以它對少數幾個不確定參數大放異彩,對非常多的輸入則輸給蒙地卡羅。在低到中等維度的光滑問題上用它;當回應粗糙或不確定輸入多如牛毛時,就去找蒙地卡羅。

一個輸出 Y 取決於 [-1,1] 上的均勻隨機輸入 xi。多項式混沌用勒讓德多項式 P_k 把 Y 寫成 Y 約等於 c_0 P_0 + c_1 P_1 + c_2 P_2。在幾個高斯-勒讓德節點上執行模擬就釘住了 c_k;接著 mean(Y) = c_0(精確),且 var(Y) = sum_{k>=1} c_k^2 / (2k+1)。少數幾次執行,就產出整個分佈,而蒙地卡羅要用幾千個樣本才能匹配它。

一個關於隨機輸入的短正交多項式級數,從它的係數產出輸出的平均與變異數。

多項式混沌需要輸出光滑地依賴於輸入——一個不連續會毀掉擬合,正如龍格現象毀掉高次插值。而它也受維度災難所苦,所以當不確定輸入非常多時,它會輸給蒙地卡羅。

又稱
polynomial chaos expansionPCEgeneralized polynomial chaosstochastic spectral method多項式混沌展開隨機譜方法