Simulation einer Wahrscheinlichkeit von 1 von 2 ^ N mit weniger als N Zufallsbits

31

Angenommen, ich muss die folgende diskrete Verteilung simulieren:

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

Der naheliegendste Weg ist, zufällige Bits zu zeichnen und zu prüfen, ob alle gleich (oder ) sind. Die Informationstheorie sagt jedochN01

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

Die erforderliche Mindestanzahl von Zufallsbits nimmt also tatsächlich ab, wenn groß wird. Wie ist das möglich?N

Bitte nehmen Sie an, dass wir auf einem Computer laufen, auf dem Bits Ihre einzige Zufallsquelle sind, sodass Sie nicht einfach eine voreingenommene Münze werfen können.

nalzok
quelle
Dies hängt eng mit der Codierungstheorie und der Komplexität von Kolmogorov zusammen, wenn Sie nach Stichwörtern suchen, die Sie genauer untersuchen können. Die Technik des Zählens von Wiederholungsläufen desselben Bits, die DW unten erwähnt, kommt häufig vor - diese Vorlesungsnotizen berühren sie zum Beispiel people.cs.uchicago.edu/~fortnow/papers/kaikoura.pdf
Brian Gordon,

Antworten:

28

Wow, tolle Frage! Lassen Sie mich versuchen, die Auflösung zu erklären. Es werden drei verschiedene Schritte benötigt.

Das erste, was zu beachten ist, ist, dass die Entropie sich mehr auf die durchschnittliche Anzahl der pro Ziehung benötigten Bits konzentriert , nicht auf die maximale Anzahl der benötigten Bits.

Bei Ihrem Stichprobenverfahren beträgt die maximale Anzahl der pro Ziehung benötigten Zufallsbits Bits, aber die durchschnittliche Anzahl der benötigten Bits beträgt 2 Bits (der Durchschnitt einer geometrischen Verteilung mit ) - dies liegt daran, dass es a gibt Wahrscheinlichkeit, dass Sie nur 1 Bit benötigen (wenn sich das erste Bit als 1 herausstellt), Wahrscheinlichkeit, dass Sie nur 2 Bits benötigen (wenn sich die ersten beiden Bits als 01 herausstellen), Wahrscheinlichkeit, dass Sie nur 3 Bits benötigen (wenn sich herausstellt, dass die ersten drei Bits 001 sind), und so weiter.Np=1/21/21/41/8

Das zweite, was zu beachten ist, ist, dass die Entropie nicht wirklich die durchschnittliche Anzahl von Bits erfasst, die für eine einzelne Ziehung benötigt werden. Stattdessen werden die Entropie erfasst die amortisierten Anzahl von Bits , die Probe benötigt zieht iid aus dieser Verteilung. Angenommen, wir brauchen Bits, um Zeichnungen abzutasten. dann ist die Entropie die Grenze von als .mf(m)mf(m)/mm

Das dritte , was zu beachten ist , dass bei dieser Verteilung, können Sie probieren iid als zieht mit weniger Bits wiederholt Probe ein Unentschieden benötigt. Angenommen, Sie haben sich naiv dazu entschlossen, ein Sample zu zeichnen (durchschnittlich 2 zufällige Bits), und dann ein weiteres Sample zu zeichnen (durchschnittlich 2 weitere zufällige Bits), und so weiter, bis Sie dies mal wiederholt haben. Dies würde im Durchschnitt etwa zufällige Bits erfordern .mm2m

Es stellt sich jedoch heraus, dass es eine Möglichkeit gibt, aus Zeichnungen mit weniger als Bits . Es ist schwer zu glauben, aber es ist wahr!m2m

Lass mich dir die Intuition geben. Angenommen, Sie haben das Ergebnis der Stichprobe draws notiert, wobei wirklich groß ist. Dann könnte das Ergebnis als Bit-String angegeben werden. Diese Bit-Zeichenfolge besteht zumeist aus Nullen, in denen einige Einsen enthalten sind. Insbesondere hat sie im Durchschnitt etwa Einsen (könnte mehr oder weniger sein, aber wenn ausreichend groß ist, ist dies in der Regel der Fall Zahl wird in der Nähe sein). Die Länge der Lücken zwischen den Einsen ist zufällig, liegt aber typischerweise irgendwo in der Nähe von (könnte leicht halb so groß oder doppelt so groß sein oder sogar noch größer, aber in dieser Größenordnung). Natürlich, anstatt das ganze aufzuschreibenmmmmm/2Nm2NmN m / 2 N m N / 2 N m m-Bit-Zeichenfolge, wir könnten sie genauer aufschreiben, indem wir eine Liste der Lückenlängen aufschreiben - diese enthält dieselben Informationen in einem komprimierteren Format. Wie viel prägnanter? Nun, normalerweise benötigen wir ungefähr Bits, um die Länge jeder Lücke darzustellen. und es wird ungefähr Lücken geben; Wir werden also insgesamt ungefähr Bits benötigen (könnte ein bisschen mehr sein, könnte ein bisschen weniger sein, aber wenn ausreichend groß ist, wird es normalerweise in der Nähe davon sein). Das ist viel kürzer als eine Bit-Zeichenfolge.Nm/2NmN/2Nmm

Und wenn es eine Möglichkeit gibt, die Zeichenfolge so kurz zu schreiben, ist es vielleicht nicht verwunderlich, wenn dies bedeutet, dass die Zeichenfolge mit einer Anzahl von Zufallsbits generiert werden kann, die mit der Länge der Zeichenfolge vergleichbar sind. Insbesondere generieren Sie die Länge jeder Lücke nach dem Zufallsprinzip. Dies ist eine Stichprobe aus einer geometrischen Verteilung mit , und das kann mit ungefähr zufälligen Bits im Durchschnitt (nicht ) durchgeführt werden. Sie benötigen ungefähr iid Draws aus dieser geometrischen Verteilung, sodass Sie insgesamt ungefähr zufällige Bits benötigen . (Es könnte ein kleiner konstanter Faktor sein, der größer, aber nicht zu groß ist.) Beachten Sie, dass dies viel kleiner als Bits ist.p=1/2NN2Nm/2NNm/2N2m

So können wir probieren iid schöpft aus Ihrer Distribution, mit nur Zufallsbits (grob). Denken Sie daran, dass die Entropie . Das heißt, Sie sollten erwarten, dass die Entropie (ungefähr) . Das ist ein bisschen anders, weil die obige Berechnung skizzenhaft und grob war - aber hoffentlich gibt sie Ihnen eine Vorstellung davon, warum die Entropie so ist, wie sie ist, und warum alles konsistent und vernünftig ist.mf(m)Nm/2Nlimmf(m)/mN/2N

DW
quelle
Wow, tolle Antwort! Aber können Sie erläutern, warum das Abtasten aus einer geometrischen Verteilung mit im Durchschnitt Bits dauert ? Ich weiß, dass eine solche Zufallsvariable einen Mittelwert von , daher werden durchschnittlich Bits zum Speichern benötigt, aber ich nehme an, dies bedeutet nicht, dass Sie eine Variable mit Bits generieren können. N2NNNp=12NN2NNN
Nalzok
@nalzok, eine faire Frage! Könnten Sie das vielleicht als separate Frage stellen? Ich kann sehen, wie es geht, aber es ist ein bisschen chaotisch, sich gerade einzutippen. Wenn Sie fragen, wird vielleicht jemand schneller antworten als ich. Der Ansatz, an den ich denke, ähnelt der arithmetischen Codierung. Definiere (wobei das geometrische rv ist), dann eine Zufallszahl im Intervall und finde so, dass . Wenn Sie die Bits des binären expension aufschreiben eines zu einer Zeit, in der Regel nach dem Aufschreiben Bits von , werden vollständig bestimmt.qi=Pr[Xi]Xr[0,1)iqir<qi+1rN+O(1)ri
DW
1
Sie verwenden also im Grunde die inverse CDF-Methode, um eine gleichmäßig verteilte Zufallsvariable in eine beliebige Verteilung umzuwandeln, kombiniert mit einer Idee, die der binären Suche ähnelt? Ich muss die Quantilfunktion einer geometrischen Verteilung analysieren, um sicherzugehen, aber dieser Hinweis reicht aus. Vielen Dank!
Nalzok
1
@nalzok, ahh, ja, das ist eine schönere Art, darüber nachzudenken - schön. Vielen Dank, dass Sie dies vorschlagen. Ja, das war es, was ich im Sinn hatte.
DW
2

Sie können dies rückwärts denken: Betrachten Sie das Problem der binären Codierung anstelle der Generierung. Angenommen, Sie haben eine Quelle, die die Symbole mit , . Wenn beispielsweise , erhalten wir . Also (Shannon sagt es uns) gibt es eine eindeutig dekodierbare binäre Kodierung , wobei (Datenbits) ist, so dass wir durchschnittlich ungefähr Datenbits für jedes ursprüngliche Symbol benötigen .X{A,B}p(A)=2Np(B)=12NN=3H(X)0.54356XYY{0,1}0.54356X

(Für den Fall, dass Sie sich fragen, wie eine solche Codierung existieren kann, da wir nur zwei Quellensymbole haben und es den Anschein hat, dass wir die triviale Codierung , mit einem Bit pro Symbol nicht besser machen können.) Sie müssen verstehen, dass wir zur Annäherung an die Shannon-Grenze "Erweiterungen" der Quelle verwenden müssen, dh Sequenzen von Eingaben als Ganzes codieren müssen (siehe insbesondere arithmetische Codierung).A0B1

Sobald das Obige klar ist, wenn wir annehmen, dass wir eine invertierbare Abbildung von , und bemerken, dass in der Shannon-Grenze die maximale Entropie haben muss (1 Informationsbit pro Datenbit), d. H , die Statistiken einer faire Münze hat, dann haben wir eine Erzeugungsschema auf der Hand: zeichnen Zufallsbits (hier hat keine Beziehung zu ) mit einer fairen Münze, interpretieren es als das Ausgang des Codierers , und dekodiere daraus. Auf diese Weise hat die gewünschte Wahrscheinlichkeitsverteilung, und wir benötigen (im Durchschnitt) Münzen, um jeden Wert von zu erzeugen .XnYnYnYnnnNYnXnXnH(X)<1X

Leonbloy
quelle