モンテカルロ法のチューニング#
採択率 (acceptance ratio) はどこで確認できますか?#
exchange と pamc の場合、以下の方法で確認できます。
実行時の標準出力:
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\))では低くなるのが正常です。
採択率が低すぎる場合はどうすればよいですか?#
以下の対策を検討してください。
ステップサイズを小さくする
[algorithm.param]セクションのstep_listでステップサイズを調整します。[algorithm.param] step_list = [0.1, 0.1, 0.1]
値を小さくすると採択率が上がります。各パラメータの探索範囲に対して適切なスケールを設定してください。
温度点を増やす
exchangeの場合、レプリカ間の温度差が大きすぎると交換が起こりにくくなります。温度点数を増やして温度間隔を小さくしてください。pamcの場合も同様に、Tnum(温度点数) を増やすことで各ステップでの温度変化が緩やかになり、レプリカの追従性が改善されます。MCMCステップ数を増やす
各温度での平衡化が不十分な場合は、1温度あたりの MCMC ステップ数を増やしてください。
採択率が高すぎる場合はどうすればよいですか?#
step_list の値を大きくして、1ステップでの移動量を増やしてください。
パラメータの探索範囲(max_list - min_list)に対して、ステップサイズが小さすぎる場合によく起こります。
モンテカルロ計算の結果が毎回異なります#
モンテカルロ法は確率的なアルゴリズムなので、乱数の種が異なれば結果は毎回異なります。
結果を再現するには [algorithm] セクションで seed を固定してください。
[algorithm]
seed = 12345
十分なステップ数で計算すれば、統計的に同等の結果が得られます。
なお、「最適化が収束しない」「期待した結果が得られない」場合の確認事項は トラブルシューティング を参照してください。