モンテカルロ法のチューニング#

採択率 (acceptance ratio) はどこで確認できますか?#

exchangepamc の場合、以下の方法で確認できます。

実行時の標準出力:

pamc では各温度ステップで採択率が標準出力に表示されます。 exchange では標準出力には表示されないため、下記の fx.txt を参照してください。

# beta  mean[f]  Err[f]  nreplica  log(Z/Z0)  acceptance_ratio

出力ファイル ``fx.txt``:

output/fx.txt の第6列に採択率が記録されています。

# $1: beta (= 1/T)
# $2: mean of f(x)
# $3: std err of f(x)
# $4: number of replicas
# $5: log(Z/Z0)
# $6: acceptance ratio

採択率はどの程度が適切ですか?#

一般的な目安として:

  • 採択率が高すぎる (> 0.8): ステップサイズが小さすぎます。パラメータ空間の探索が遅くなります。

  • 採択率が低すぎる (< 0.1): ステップサイズが大きすぎます。ほとんどの提案が棄却され、探索が停滞します。

  • 適切な範囲: 0.2〜0.5 程度が効率的とされています。

採択率は温度(逆温度 \(\beta\))によって変化します。高温(低い \(\beta\))では高く、低温(高い \(\beta\))では低くなるのが正常です。

採択率が低すぎる場合はどうすればよいですか?#

以下の対策を検討してください。

  1. ステップサイズを小さくする

    [algorithm.param] セクションの step_list でステップサイズを調整します。

    [algorithm.param]
    step_list = [0.1, 0.1, 0.1]
    

    値を小さくすると採択率が上がります。各パラメータの探索範囲に対して適切なスケールを設定してください。

  2. 温度点を増やす

    exchange の場合、レプリカ間の温度差が大きすぎると交換が起こりにくくなります。温度点数を増やして温度間隔を小さくしてください。

    pamc の場合も同様に、Tnum (温度点数) を増やすことで各ステップでの温度変化が緩やかになり、レプリカの追従性が改善されます。

  3. MCMCステップ数を増やす

    各温度での平衡化が不十分な場合は、1温度あたりの MCMC ステップ数を増やしてください。

採択率が高すぎる場合はどうすればよいですか?#

step_list の値を大きくして、1ステップでの移動量を増やしてください。 パラメータの探索範囲(max_list - min_list)に対して、ステップサイズが小さすぎる場合によく起こります。

モンテカルロ計算の結果が毎回異なります#

モンテカルロ法は確率的なアルゴリズムなので、乱数の種が異なれば結果は毎回異なります。 結果を再現するには [algorithm] セクションで seed を固定してください。

[algorithm]
seed = 12345

十分なステップ数で計算すれば、統計的に同等の結果が得られます。

なお、「最適化が収束しない」「期待した結果が得られない」場合の確認事項は トラブルシューティング を参照してください。