N未満のランダムビットで2 ^ Nの1の確率をシミュレートする


31

次の離散分布をシミュレートする必要があるとします。

P(X=k)={12N,if k=1112N,if k=0

最も明白な方法は、Nランダムビットを描画し、それらすべてが0(または1)に等しいかどうかをチェックすることです。しかし、情報理論は言う

S=iPilogPi=12Nlog12N(112N)log(112N)=12Nlog2N+(112N)log2N2N10

したがって、必要なランダムビットの最小数は、Nが大きくなるにつれて実際に減少します。これはどのように可能ですか?N

ビットがランダム性の唯一のソースであるコンピューターで実行していると仮定してください。そのため、偏ったコインを投げるだけではいけません。


より深く掘り下げるためのキーワードを探している場合、これはコーディング理論とコルモゴロフの複雑さに密接に関連しています。DWが以下で言及している同じビットの繰り返し実行をカウントする手法がたくさん登場します。たとえば、これらの講義ノートでは、people.cs.uchicago.edu /〜fortnow / papers / kaikoura.pdf
Brian Gordon

回答:


28

素晴らしい質問です 解像度を説明してみましょう。3つの異なるステップが必要です。

最初に注意することは、エントロピーが、必要な最大ビット数ではなく、描画ごとに必要な平均ビット数に重点を置いていることです。

あなたのサンプリング手順を用いて、延伸当たりに必要なランダムビットの最大数であるNビットが、必要とされるビットの平均数は、(幾何学的分布の平均2ビットのp=1/2) - Aがあるからです1/2だけ1ビット(最初のビットが1であることが判明した場合)、必要確率1/4(最初の2ビットが01であることが判明する場合)は、2ビットのみを必要とする確率を1/8必要な確率は3ビットのみです(最初の3ビットが001であることが判明した場合)。

2つ目の注意点は、エントロピーが実際に1回の描画に必要な平均ビット数をキャプチャしないことです。代わりに、エントロピーは、この分布からm iid描画をサンプリングするために必要な償却ビット数をキャプチャします。m個のドローをサンプリングするためにf m ビットが必要だとします。エントロピーは、m としてのf m / mの極限です。mf(m)mf(m)/mm

3番目に注意する点は、この分布を使用すると、1回の描画を繰り返しサンプリングするのに必要なビット数より少ないビットで、m iid描画をサンプリングできることです。これをm回繰り返すまで、1つのサンプルを描画し(平均でランダムな2ビットを取る)、別のサンプルを描画する(平均でさらに2つのランダムビットを使用する)といったように単純に決定したとします。それには、平均で約2mランダムビットが必要です。

しかし、2 mビット未満を使用してm描画からサンプリングする方法があることがわかりました。信じがたいですが、本当です!2m

直感を聞かせてください。mドローのサンプリング結果を書き留めたとしますmは本当に大きいです。次に、結果をmビット文字列として指定できます。このmビットの文字列はほとんどが0で、数個の1が含まれます。特に、平均して約m/2N 1になります(それよりも大きい場合も小さい場合もありますが、mが十分に大きい場合、通常は数それに近くなります)。1の間のギャップの長さはランダムですが、通常は2 Nの近くの漠然とした場所になります。2N(簡単にその半分または2倍、またはそれ以上になりますが、その程度です)。もちろん、mビット文字列全体を書き留める代わりに、ギャップの長さのリストを書き留めることで、より簡潔に書き留めることができます。これは、同じ情報をより圧縮された形式で保持します。もっと簡潔に?まあ、通常、各ギャップの長さを表すには約Nビットが必要です。約m/2Nギャップがあります。したがって、合計で約mN/2Nビットが必要になります(もう少し大きくても少し小さくてもかまいませんが、mが十分に大きければ、通常はそれに近い値になります)。それはずっと短いですm文字列。

そして、文字列をこれほど簡潔に書き留める方法があれば、それが文字列の長さに匹敵するランダムなビット数で文字列を生成する方法があることを意味するのであれば、おそらく驚くことではないでしょう。特に、各ギャップの長さをランダムに生成します。これは、と幾何分布からのサンプリングされたp=1/2N、それはおおよそで行うことができるN平均ランダムビット(しない2N)。あなたは必要がありますm/2Nあなたはおおよそ合計で必要になりますので、IIDは、この幾何分布から描くNm/2Nランダムビット。(これは、小さい定数ファクターより大きい可能性がありますが、大きすぎることはありません。)そして、これは2mビットよりはるかに小さいことに注意してください。

そこで、我々は、サンプリングすることができますm IIDだけ使用して、お使いのディストリビューションから引くf(m)Nm/2Nランダムビットを(おおよそ)。エントロピーであることを想起limmf(m)/m。したがって、これは、エントロピーが(おおよそ)N/2Nになることを期待する必要があることを意味します。上記の計算はおおざっぱで粗雑なため、これは少しずれていますが、エントロピーがそれである理由と、すべてが一貫性があり合理的である理由について直感を与えてくれることを願っています。


うわー、素晴らしい答えです!しかし、p = 1の幾何分布からサンプリングする理由について詳しく説明してください は平均してNビットかかりますか?私は、このような確率変数は、平均だろう知っている2Nを、それが平均を取るので、Nのストアにビットが、私は、これはあなたが1を生成することができますという意味ではありませんと仮定し、N個のビット。p=12NN2NNN
nalzok

@nalzok、公正な質問!おそらく別の質問として質問してもらえますか?方法はわかりますが、今すぐ入力するのは少し面倒です。あなたが尋ねると、おそらく誰かが私よりも早く答えることができるでしょう。私が考えているアプローチは、算術コーディングに似ています。定義(ここで、Xは、幾何学的なRVである)、次に乱数生成R間隔でを[ 0 1 、そして見つけるIになるようにqとiがR < QのI + 1qi=Pr[Xi]Xr[0,1)iqir<qi+1rN+O(1)ri

1
つまり、基本的に逆CDFメソッドを使用して、均一に分布したランダム変数を任意の分布に変換し、バイナリ検索に似たアイデアを組み合わせていますか?幾何分布の変位値関数を分析する必要がありますが、このヒントで十分です。ありがとう!
nalzok

1
@nalzok、ああ、はい、それはそれについて考えるより良い方法です-素敵です。それを提案していただきありがとうございます。うん、それは私が念頭に置いていたものです。
DW

2

あなたはこれを逆に考えることができます:生成の代わりにバイナリエンコーディングの問題を考えてください。シンボルを出力するソースがあると仮定しますバツ{AB}pA=2NpB=12N。たとえば、N=3、 我々が得る Hバツ0.54356. So (Shannon tells us) there is an uniquely decodable binary encoding XY, where Y{0,1} (data bits), such that we need, on average, about 0.54356 data bits for each original symbol X.

(In case you are wondering how such encoding can exists, given that we have only two source symbols, and it seems that we cannot do better that the trivial encoding , A0, B1 , with one bit per symbol, you need to understand that to approximate the Shannon bound we need to take "extensions" of the source, that is, to code sequences of inputs as a whole. See in particular arithmetic encoding).

Once the above is clear, if we assume we have an invertible mapping XnYn , and noticing that, in the Shannon limit Yn must have maximum entropy (1 bit of information per bit of data), i.e., Yn has the statistics of a fair coin, then we have a generation scheme at hand: draw n random bits (here n has no relation with N) with a fair coin, interpret it as the output Yn of the encoder, and decode Xn from it. In this way, Xn will have the desired probability distribution, and we need (in average) H(X)<1 coins to generate each value of X.

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