Box-Muller変換
概要
Box-Muller 変換は、独立な一様乱数のペアを、独立な標準正規乱数のペアに変換する手法です。 本アプリのすべてのガウスサンプリング(代表的には Robustness ウィジェットの入力ノイズ摂動)の背後にあるサンプラーです。 近似ではなく厳密であること、分岐がないこと、アプリの決定論的な ChaCha8 ベース乱数生成器の上で再現性を確保しやすいことから採用しています。
数式
独立な一様乱数 に対して:
このとき であり、両者は独立です。
この構成は、極座標への変数変換です。 は半径の 2 乗に自由度 2 のカイ二乗分布(標準 2 変量正規分布における の分布)を与え、 は角度を一様に選びます。 ペア を直交座標へ戻すと、独立な標準正規乱数が 2 つ得られます。
一般のガウスサンプルはスケールとシフトで得ます: 。
特性・限界
- 厳密:出力は(浮動小数点誤差を除き)正規分布に厳密に従います。一様乱数 12 個の和のような近似法とは異なります。
- 定義域への配慮:$\ln U_1$ は を要求します。基盤の生成器は の値を返すため、Tunny Dashboard は対数に ( の範囲)を渡し、生の値がちょうど でも が発生しないようにしています。
- 本アプリは余弦側( )のみを使い、 は捨てています。効率は半分になりますが、状態を持たない単純な呼び出しになります。解析あたり数千サンプル程度の規模では、このコストは無視できます。
- 再現性:シード付き ChaCha8 乱数生成器で駆動されるため、同じシードなら常に同じガウス列が得られます。ロバスト性解析の結果が設定固定で決定論的になるのは、この性質によるものです。
- 裾の挙動は、 近傍での の分解能に制限されます。53 ビット倍精度では到達可能な最大の は約 であり、ここで使うサンプル数では、この制限が問題になることはほとんどありません。
アプリ内での利用箇所
- Robustness ウィジェット:候補設計点まわりのガウス入力ノイズ摂動の生成と、("Model uncertainty" 有効時の)GP 事後分布からのドローに使われます。
参考文献
- Box, G. E. P., & Muller, M. E. (1958). A Note on the Generation of Random Normal Deviates. Annals of Mathematical Statistics, 29(2), 610–611. https://doi.org/10.1214/aoms/1177706645