なぜ重要度サンプリングが必要なのですか?

Jan 04 2021

私は政策外の政策改善方法を研究していました。次に、重要度サンプリングに遭遇しました。計算の背後にある数学は完全に理解しましたが、重要度サンプリングの実際的な例は何であるか疑問に思います。

たとえば、ビデオでは、ここでバイアスされたサイコロの期待値を計算する必要があると言われています$g(x)$、公正なサイコロの期待値の観点から、 $f(x)$。これがビデオのスクリーンショットです。

偏ったサイコロの確率分布があるのに、なぜそれが必要なのですか?

回答

7 DavidIreland Jan 04 2021 at 16:20

重要度サンプリングは通常、対象の分布をサンプリングするのが難しい場合(たとえば、分布からサンプルを抽出するのに計算コストがかかる可能性がある場合)、またはベイズ統計のように分布が乗法定数までしかわからない場合に使用されます。周辺尤度を計算するのは困難です。あれは

$$p(\theta|x) = \frac{p(x|\theta)p(\theta)}{p(x)} \propto p(x|\theta)p(\theta)$$

どこ $p(x)$は、手に負えない可能性がある周辺尤度であるため、完全な事後分布を計算できないため、この分布からサンプルを生成するには、他の方法を使用する必要があります。私が手に負えないと言うとき、注意してください

$$p(x) = \int_{\Theta} p(x|\theta)p(\theta) d\theta$$

ここで非常に扱いにくいということは、a)積分に解析解がないか、b)この積分を計算するための数値的方法が実行するにはコストがかかりすぎる可能性があることを意味します。

ダイの例の例では、バイアスダイの理論上の期待値を分析的に計算できることは正しいです。これはおそらく比較的簡単な計算です。ただし、このシナリオで重要度サンプリングが役立つ理由を動機付けるには、モンテカルロ法を使用して期待値を計算することを検討してください。1〜6のランダムな整数を均一にサンプリングし、重要度サンプリング比を計算する方がはるかに簡単です。$x \frac{g(x)}{f(x)}$ バイアスダイスからサンプルを抽出するよりも、特にほとんどのプログラミング言語には整数をランダムにサンプリングするメソッドが組み込まれているためです。

あなたの質問は強化学習としてタグ付けされているので、RLドメインでなぜそれが役立つのかを追加します。理由の1つは、関心のあるポリシーをサンプリングするのに費用がかかる可能性があるため、代わりに、関心のあるポリシーについて学習しながら、他の単純なポリシーからアクションを生成することができます。第2に、決定論的(貪欲)でありながら探索できるポリシーに関心がある可能性があるため、より頻繁に探索するポリシー外の配布を行うことができます。

注意:分布が定数までしかわからない場合、重要度サンプリングをどのように使用できるかが明確でない可能性があるため、説明についてはこの回答を参照してください。