タグ付けされた質問 「monte-carlo」

結果を計算するために(疑似、準)乱数の繰り返し生成を必要とする方法であるモンテカルロ法に関する質問。

4
オーバーフローエラーなしで大きな指数項を確実に追加する方法は?
マルコフ連鎖モンテカルロ法の非常に一般的な問題には、大きな指数項の合計である確率の計算、 ea1+ea2+...ea1+ea2+... e^{a_1} + e^{a_2} + ... のコンポーネントは非常に小さいものから非常に大きいものまであります。私のアプローチは、最大指数項た。aaaK:=maxi(ai)K:=maxi(ai)K := \max_{i}(a_{i}) a′=K+log(ea1−K+ea2−K+...)a′=K+log(ea1−K+ea2−K+...)a' =K + log\left( e^{a_1 - K} + e^{a_2 - K } + ... \right) ea′≡ea1+ea2+...ea′≡ea1+ea2+...e^{a'} \equiv e^{a_1} + e^{a_2} + ... このアプローチは、aのすべての要素aaaが大きい場合は妥当ですが、そうでない場合はそれほど良い考えではありません。もちろん、小さな要素は浮動小数点の合計に寄与しませんが、それらを確実に処理する方法はわかりません。Rコードでは、私のアプローチは次のようになります。 if ( max(abs(a)) > max(a) ) K <- min(a) else K <- max(a) ans <- log(sum(exp(a-K))) + …

3
多くの次元のPDE
PDEの近似解を見つけるためのほとんどの方法は、次元の数に応じてスケーリングが不十分であり、モンテカルロは100次元以下を必要とする状況に使用されることを知っています。 〜4-10次元のPDEを効率的に数値的に解くための良い方法は何ですか?10-100? 次元の数に応じて適切にスケーリングするモンテカルロ以外の方法はありますか?

5
不適切な積分をどのように近似できますか?
が有限であるような関数があり、この積分を近似したいです。 ∫ R 3、F (X 、Y 、Z )のD Vf(x,y,z)f(x,y,z)f(x,y,z) ∫R3f(x,y,z)dV∫R3f(x,y,z)dV\int_{R^3} f(x,y,z)dV 私は求積規則と積分のモンテカルロ近似に精通していますが、無限領域でそれらを実装するのは困難です。モンテカルロの場合、無限の領域をサンプリングするにはどうすればよいですか(特に積分に大きく寄与する領域が不明な場合)。直角位相の場合、どのようにして最適なポイントを見つけるのですか?原点を中心とする任意の大きな領域を単純に修正し、スパース直交ルールを適用する必要がありますか?この積分をどのように近似できますか?

2
自動差別化に関して、ソースコード変換(STC)は演算子オーバーロード(OO)よりも効率的ですか?
時空間プロセスのベイジアンモデルに取り組んでおり、対数確率のモデルとモデルパラメーターに関する勾配を必要とする非Uターンサンプラー(NUTS)を使用しています。もっと簡潔に言えば、統計分布、クロネッカー積、指数、比、if-elseステートメントなどを含むかなり複雑な対数確率関数、それを提供する必要があり、NUTSに勾配があります。いくつかのパッケージ(Stanおよび JuliaのMCMC)は、オペレーターのオーバーロード(私の知る限り)を使用して、勾配を自動的に取得します。f:Rn→ Rf:Rn→Rf : \mathbb{R}^n \rightarrow \mathbb{R} おそらくソースコード変換の自動差分ツールを使用して独自の勾配関数を作成できた場合、パフォーマンスが向上しますか?

4
非同期セルオートマトン用の並列(GPU)アルゴリズム
非同期セルラーオートマトンと呼ばれる計算モデルのコレクションがあります。これらのモデルはイジングモデルに似ていますが、少し複雑です。このようなモデルは、CPUではなくGPUで実行することでメリットが得られるようです。残念ながら、そのようなモデルを並列化することは非常に簡単ではなく、どのように実行するかはまったくわかりません。私は主題に関する文献があることを知っていますが、それはすべて、私が実装できるものの説明を望んでいる私のような人ではなく、アルゴリズムの複雑さの詳細に興味がある筋金入りのコンピュータ科学者を対象にしているようです、その結果、私はそれをかなり浸透していません。 明確にするために、私はCPU実装を大幅に高速化する可能性があるCUDAで迅速に実装できるものほど最適なアルゴリズムを探していません。このプロジェクトでは、プログラマーの時間はコンピューターの時間よりもはるかに制限要因です。 また、非同期セルオートマトンは同期セルオートマトンとはかなり異なるものであり、同期CA(Conwayの生活など)を並列化する技術はこの問題に簡単に適応できないことを明確にする必要があります。違いは、同期CAはすべてのセルをタイムステップごとに同時に更新するのに対して、非同期CAはランダムに選択されたローカルリージョンをタイムステップごとに更新することです。 並列化したいモデルは、〜100000セルからなる格子(通常は六角形)に実装されています(さらに使用したいのですが)、それらを実行するための非並列化アルゴリズムは次のようになります。 隣接するセルのペアをランダムに選択します 「エネルギー」機能計算これらの細胞の周囲の局所近傍に基づきますΔ E△E\Delta E 依存確率で(とβ Aパラメータ)、いずれか2つのセルの状態を入れ替えるか、何もしません。e- βΔ Ee−β△Ee^{-\beta \Delta E}ββ\beta 上記の手順を無期限に繰り返します。 境界条件にはいくつかの複雑な問題もありますが、並列化にそれほど困難はないと思います。 ちょうど平衡状態ではなく、これらのシステムの過渡的なダイナミクスに興味があることに言及する価値があるため、同じ平衡分布に近づくだけではなく、上記と同等のダイナミクスを持つものが必要です。(したがって、チェッカーボードアルゴリズムのバリエーションは、私が探しているものではありません。) 上記のアルゴリズムを並列化する際の主な困難は衝突です。すべての計算はラティスのローカル領域のみに依存するため、近傍が重複していない限り、多くのラティスサイトを並行して更新できます。問題は、このような重複を回避する方法です。いくつかの方法を考えることができますが、実装するのに最適な方法があるかどうかはわかりません。これらは次のとおりです。 CPUを使用して、ランダムグリッドサイトのリストを生成し、衝突をチェックします。グリッドサイトの数がGPUプロセッサの数と等しい場合、または衝突が検出された場合、座標の各セットをGPUユニットに送信して、対応するグリッドサイトを更新します。これは簡単に実装できますが、おそらくCPUでの衝突のチェックはCPUで更新全体を行うよりもそれほど安くないので、おそらく速度をあまり上げません。 ラティスをリージョン(GPUユニットごとに1つ)に分割し、そのリージョン内のグリッドセルをランダムに選択および更新するGPUユニットを1つ用意します。しかし、このアイデアには解決方法がわからない多くの問題があります。最も明白なのは、ユニットがその領域の端に重なる近傍を選択したときに正確に何が起こるかです。 システムを次のように近似します。時間を個別のステップで進めます。格子を上に分割します別のものに事前に定義されたスキームに従ってタイムステップごとに領域のセットを作成し、各GPUユニットが、領域の境界と重なり合わないグリッドセルのペアをランダムに選択および更新します。境界はタイムステップごとに変化するため、領域が比較的大きい限り、この制約はダイナミクスにあまり影響しません。これは簡単に実装でき、高速であるように見えますが、ダイナミクスをどれだけ近似するか、または各タイムステップで領域境界を選択するための最適なスキームはどれかわかりません。「ブロック同期セルオートマトン」への参照をいくつか見つけましたが、これはこの考えと同じである場合とそうでない場合があります。(メソッドの説明はすべてロシア語であるか、アクセスできないソースにあるようですので、わかりません。) 私の具体的な質問は次のとおりです。 上記のアルゴリズムのいずれかは、非同期CAモデルのGPU並列化にアプローチする賢明な方法ですか? もっと良い方法はありますか? このタイプの問題に対応する既存のライブラリコードはありますか? 「ブロック同期」メソッドの明確な英語の説明はどこにありますか? 進捗 適切な非同期CAを並列化する方法を考え出したと思います。以下に概説するアルゴリズムは、私のように隣接するセルのペアではなく、一度に1つのセルのみを更新する通常の非同期CA用です。私の特定のケースにそれを一般化することにはいくつかの問題がありますが、私はそれらを解決する方法を考えていると思います。ただし、以下で説明する理由により、どれだけの速度のメリットが得られるかはわかりません。 考え方は、非同期CA(以降ACA)を、同等に動作する確率的同期CA(SCA)に置き換えることです。これを行うには、まずACAがポアソンプロセスであると考えます。つまり、時間は継続的に進み、各セルは、他のセルとは無関係に、その更新機能を実行する単位時間あたりの一定の確率として進行します。 バツ私はjバツ私jX_{ij}t私jt私jt_{ij}t私はj( 0 )〜経験(λ)t私j(0)〜Exp⁡(λ)t_{ij}(0) \sim \operatorname{Exp}(\lambda)λλ\lambda 値を任意に選択できるパラメーターです。) 各論理タイムステップで、SCAのセルは次のように更新されます。 k 、lk、lk, li 、j私、ji,jtk l&lt; t私はjtkl&lt;t私jt_{kl}<t_{ij} バツ私はjバツ私jX_{ij}バツk lバツklX_{kl}Δ トン〜経験(λ )△t〜Exp⁡(λ)\Delta t \sim \operatorname{Exp}(\lambda)t私はjt私jt_{ij}t私はj+ Δ …

3
既知の境界を持つ多次元積分の数値積分
(2次元)不適切な積分があります I=∫AW(x,y)F(x,y)dxdyI=∫AW(x,y)F(x,y)dxdyI=\int_A \frac{W(x,y)}{F(x,y)}\,\mbox{d}x\mbox{d}y ここで、積分領域AAAは、よりも小さいですが、によってさらに制限されてい。以来および滑らかであり、x=[−1,1]x=[−1,1]x=[-1,1]y=[−1,1]y=[−1,1]y=[-1,1]F(x,y)&gt;0F(x,y)&gt;0F(x,y)>0FFFWWWW≠0W≠0W \ne 0境界では、後者の関係は、被積分関数が境界で特異になる可能性があることを意味します。ただし、被積分関数は有限です。私はこれまでのところ、ネストされた数値積分を使用してこの積分を計算します。これは成功しますが、遅いです。積分に対処するために、より適切な(より高速な)メソッド、おそらくモンテカルロメソッドを検索します。しかし、非立方体領域Aの境界に点を配置せず、不適切な積分の制限を正しく取るものが必要です。積分変換は、この一般的な表現に役立ちますか?私は解決することが可能であるするためのの関数としてとも計算いくつかの特別な重み関数のための。F(x,y)F(x,y)F(x,y)yyyxxxIIIW(x,y)W(x,y)W(x,y)

1
C ++でのMathematicaのQuasiMonteCarlo統合の置き換え
QuasiMonteCarloメソッドを使用して3次元または4次元で積分を実行するMathematicaプログラムがあります。問題は、これらの計算の一部がHPCクラスターで利用可能な最大ジョブ時間で完了できない点まで、実行するのに非常に長い時間がかかることです。だから私はプログラムをC ++で書き直すことを考えています。 GSLのドキュメントを見て、準ランダムシーケンスと通常のMC統合に関するセクションはありますが、それらをまとめるものは見当たりません。また、1つか2つのGoogle検索では、広く信頼されている実装のように見えるものは何も見つかりませんでした。C ++でのQMC統合の十分にテストされた実装のオプションは何ですか? 一貫性を保つために、Mathematicaが実装するHalton-Hammersley-Wozniakowskiメソッドに近いものを使用することをお勧めします(オプションの場合)。

3
どのような状況で、モンテカルロ統合は準モンテカルロよりも優れていますか?
簡単な質問:多次元積分を行うには、ある種のモンテカルロ法が適切であると判断した場合、擬似乱数を使用した通常のMC積分が準乱数列を使用した準モンテカルロ積分よりも優れているという利点があります?もしそうなら、この優位性が発揮される状況をどのように認識するのでしょうか?(そうでない場合、なぜ誰もが昔ながらのモンテカルロ統合を使用するのですか?)

2
モンテカルロサンプリングによる情報エントロピーの推定
その分布からサンプリングする唯一の実用的な方法がモンテカルロ法である場合、その分布の情報エントロピーを推定できる方法を探しています。 私の問題は、Metropolis–Hastingsサンプリングの導入例として通常使用される標準のイジングモデルと同じです。セット確率分布があります。つまりごとにがあります。の要素はイジング状態のような組み合わせの性質のものであり、それらの数は非常に多いです。つまり、実際には、この分布からコンピューターでサンプリングするときに、同じサンプルを2回取得することはありません。正規化係数がわからないためを直接計算することはできませんが、比率は簡単に計算できます。AAAp(a)p(a)p(a)a∈Aa∈Aa \in Aa∈Aa∈Aa \in Ap(a)p(a)p(a)p(a1)/p(a2)p(a1)/p(a2)p(a_1)/p(a_2) この分布の情報エントロピーを推定したいのですが、 S=−∑a∈Ap(a)lnp(a).S=−∑a∈Ap(a)ln⁡p(a). S = -\sum_{a \in A} p(a) \ln p(a). あるいは、この分布とそれをサブセット制限することで得られる分布とのエントロピーの差を推定したいと思います(もちろん再正規化します)。a∈A1⊂Aa∈A1⊂Aa\in A_1 \subset A

3
双曲線空間の点をサンプリングする方法は?
ポアンカレ上半分の空間モデルの双曲線空間は通常のように見えますが、角度と距離の概念は比較的単純な方法で歪んでいます。ユークリッド空間でIは、例えば、生成することにより、いくつかの方法でボールに一様ランダム点をサンプリングすることができ方向を得るために、独立したガウスサンプル、別途座標半径サンプリングRを一様にサンプリングすることによってSから[ 0 、1RんRn\Bbb R^nんnnrrrsss[ 0 、1n + 1Rn + 1][0,1n+1Rn+1]\left[0, \frac1{n+1}R^{n+1}\right]、ここでRRRは半径であり、設定r = ((n + 1 )s )1n + 1r=((n+1)s)1n+1r = \left((n+1)s\right)^{\frac1{n+1}}。双曲線上半平面では、球体はたまたま球体であり、その中心だけがユークリッドメトリックの中心にはならないので、同じことができます。 非均一な分布に従ってサンプリングしたいが、ガウス分布などの等方性の方法では、これはそれほど簡単ではないように見えます。ユークリッド空間では、座標ごとにガウスサンプルを生成するか(これはガウス分布でのみ機能します)、または同等に多次元ガウスサンプルを生成できます。このサンプルを双曲線空間のサンプルに直接変換する方法はありますか? 別のアプローチは、最初に均一に分散された方向を生成し(たとえば、んnnガウスサンプルから)、次にラジアルコンポーネントのガウスサンプルを生成し、最後に、指定された方向の指定された長さの指数マップの下でイメージを生成します。バリエーションは、ユークリッドガウスサンプルを取り、それを指数マップの下にマッピングすることです。 私の質問: 双曲線空間の特定の平均と標準偏差でガウスサンプルを取得するための良い効率的な方法は何でしょうか。 上記で説明した方法では、目的のサンプリングが提供されますか? 誰かがすでに式を解決しましたか? これは他のメトリックおよび他の確率分布にどのように一般化されますか? 前もって感謝します。 編集 私は、一様にサンプリングした場合でも、これらの質問が残っていることに気づきました。球が球であるとしても、均一な分布はボール上の定数関数によって記述されません。

2
確率的に計算された関数で機能する方程式解法の数値法
タイプ方程式を解くための多くのよく知られた数値的方法があります たとえば、二分法、ニュートン法などです。f(x )= 0 、X ∈ Rん、f(バツ)=0、バツ∈Rん、 f(x) = 0, \quad x \in \mathbb{R}^n, 私のアプリケーションでは、は確率的方法で計算されます(結果は平均です)。f(x )f(バツ)f(x) この状況をうまく処理する数値方程式解法はありますか?同様の状況の議論へのリンクも高く評価されます。 計算できる精度はに強く依存し、計算時間を大幅に増加させなければ精度を上げることができない壁に簡単にぶつかる可能性があります。したがって、の結果が正確でないという事実を無視することはできません。これは、が実際に見つかる精度にも影響します。f(x )f(バツ)f(x)バツバツxfffバツバツx

2
量子モンテカルロについての混乱
私の質問は、このリファレンスで説明されているように、QMCメソッドからオブザーバブルを抽出することです。 Path Integral Monte CarloのようなさまざまなQMCメソッドの正式な派生を理解しています。しかし、結局のところ、私はこれらのテクニックを効果的に使用する方法についてまだ混乱しています。 量子MC法の導出の基本的な考え方は、トロッター近似を介して、密度行列または量子システムの時間発展演算子のいずれかである演算子を離散化することです。次に、MCメソッドで処理できる追加の次元を持つ古典的なシステムを取得します。 私たちが解釈できることを考えると量子演算子で逆温度と虚時間の両方を、これらのアルゴリズムの目的は、この演算子の近似値を計算する必要があります。実際、シミュレーションに沿ってサンプリングされたさまざまな構成から数量を直接測定する場合、「逆温度」の場合、基づく確率密度に関するサンプルがあり、は、トロッター分解。代わりに、「架空の時間」の場合、さまざまな離散時間ステップでサンプルを取得し、時間の平均も取得します。また、ような数量も取得しません。ββ\betae−βH^e−βH^e^{−\beta\hat{H}}β/Mβ/M\beta/MMMM⟨ψt|A^|ψt⟩⟨ψt|A^|ψt⟩\langle\psi_t|\hat{A}|\psi_t\rangle与えられた時間で、いくつかの観測可能な演算子を使用します。tttA^A^\hat{A} ただし、私の意見では、この種類のシミュレーションから直接サンプリングする量(ドキュメントの(5.34)、35ページから取得): O¯≡⟨O^(X)⟩≡1N!∑P∫O(X)π(X,P)dXO¯≡⟨O^(X)⟩≡1N!∑P∫O(X)π(X,P)dX\bar{O} \equiv \langle \hat{O}(X) \rangle \equiv \frac{1}{N!} \sum_P \int O(X) \pi(X,P) dX 追加の次元を考えると、量子システムに関連する量であってはなりません。代わりに、正しい量子量は各サンプル中の全鎖含有(5.35)、のような式を介して計算することができるシミュレー構成。MMM EthN=⟨d2τ−m2(ℏτ)2MN∑j=1M(Rj−Rj+1)2+1MN∑j=1MV(Rj)⟩EthN=⟨d2τ−m2(ℏτ)2MN∑j=1M(Rj−Rj+1)2+1MN∑j=1MV(Rj)⟩\frac{E_{th}}{N}= \left\langle \frac{d}{2 \tau} - \frac{m}{2 (\hbar \tau)^2MN } \sum_{j=1}^{M} (\mathbf{R}_j -\mathbf{R}_{j+1})^2 + \frac{1}{MN} \sum_{j=1}^{M} V(\mathbf{R}_j) \right\rangle 特定のオブザーバブルについての有用な情報を抽出するには、一連のQMCシミュレーションが必要であることは正しいですか?

3
未知のノイズの多い関数を最大化する
関数を最大化することに興味があります。ここで、です。θ ∈ R Pf(θ)f(θ)f(\mathbf \theta)θ ∈ Rpθ∈Rp\theta \in \mathbb R^p 問題は、関数またはその導関数の分析形式がわからないことです。私ができる唯一のことは、値をプラグインして関数をポイントごとに評価し、そのポイントでNOISY推定を取得することです。必要に応じて、これらの推定値の変動性を減らすことができますが、計算コストを増やす必要があります。 θ∗θ∗\theta_*f^(θ∗)f^(θ∗)\hat{f}(\theta_*) これが私がこれまでに試したことです: 有限差分の確率的急降下:機能しますが、多くの調整(ゲインシーケンス、スケーリング係数など)を必要とし、多くの場合非常に不安定です。 シミュレーテッドアニーリング:機能し、信頼できますが、多くの関数評価が必要なため、かなり遅いことがわかりました。 したがって、私はこれらの条件下で機能する可能性のある代替の最適化方法についての提案/アイデアを求めています。私とは別の研究分野からの提案を奨励するために、問題をできるだけ一般的にしている。収束時のヘッセ行列を推定できる方法に非常に興味があることも付け加えておきます。これは、パラメーター不確実性を推定するために使用できるためです。それ以外の場合は、推定値を取得するために最大値の周りの有限差分を使用する必要があります。θθ\theta

3
正規分布の有限混合からサンプルを引きますか?
Pr(θ|data)=∑i=1kwiN(μi,σ2).Pr(θ|data)=∑i=1kwiN(μi,σ2).\Pr(\theta| \text{data} ) = \sum_{i=1}^k w_i N(\mu_i, \sigma^2).θθ\thetaθ∼Pr(θ|data)θ∼Pr(θ|data)\theta\sim\Pr(\theta|\text{data})iiiiii{wi}{wi}\{w_i\}θ∼N(μi,σ2)θ∼N(μi,σ2)\theta\sim N(\mu_i, \sigma^2)。このフォームの後方からサンプルを描画する効率的な方法はありますか?

3
モンテカルロのための並列メルセンヌツイスター
最近、モンテカルロ法を行うほとんどすべての研究者が間違っていると主張するコメントに出くわしました。Mersenne TwisterなどのPRNGのインスタンスごとに異なるシードを選択するだけでは、悪い衝突が発生する可能性があるため、公平な結果を保証するには不十分であるとさらに説明しました。メルセンヌツイスター上のWikipediaの記事を裏付けるようです: 複数のパラメーター値のセットを選択する方法はありますが、シード値のみが異なる(他のパラメーターは異なる)複数のMersenne Twisterインスタンスは、独立した乱数ジェネレーターを必要とするモンテカルロシミュレーションには一般的に適していません。 私は認めなければならない、私は起訴されたように有罪です。しかし、これまでに見てきた他のすべての並列モンテカルロライブラリの実装、特にALPSも同様です。 ウィキペディアの記事では、救済策を提供する2つの論文も参照しています。 動的な作成(DC)制度(1998)は、対応する固有多項式が互いに素であれば、彼らは独立しているという仮説に基づいて、MTのためのパラメータセットを選びます。 控えのためにジャンプ -linearのRNGF2F2\mathbb F_2(2008)。LCGのリープフロッグ法に似ていると思います。 どちらの方法も、メルセンヌツイスターアルゴリズムの原作者である松本と西村によって共同開発されました。 私は、数論や代数についてあまり知識がなく、上記のスキームやメルセンヌツイスターの背後にある数学を完全には理解していません。私の質問は主に実用的な性質のものです: そのようなスキームを採用していない場合、実際に(少なくとも私のコミュニティでは)誰もそれを気にしない場合、シミュレーションにバイアスを導入することについて本当に心配する必要がありますか? これらの対策の1つを実装した場合、Jump-Aheadは確固たる理論に基づいており、より近代的な方法であるため、Jump-Aheadの方が適していると思いますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.