Simulazione di una probabilità di 1 di 2 ^ N con meno di N bit casuali


31

Di 'che devo simulare la seguente distribuzione discreta:

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

Il modo più ovvio è disegnare bit casuali e verificare se tutti sono uguali a (o ). Tuttavia, dice la teoria dell'informazioneN101

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

Quindi il numero minimo di bit casuali richiesti diminuisce effettivamente quando diventa grande. Com'è possibile?N

Per favore, supponiamo che stiamo correndo su un computer in cui i bit sono la tua unica fonte di casualità, quindi non puoi semplicemente mettere una moneta distorta.


Questo è strettamente correlato alla teoria dei codici e alla complessità di Kolmogorov, se stai cercando parole chiave per approfondire. La tecnica del conteggio delle ripetizioni dello stesso bit che DW menziona di seguito emerge molto: queste note di lezione la toccano ad esempio people.cs.uchicago.edu/~fortnow/papers/kaikoura.pdf
Brian Gordon

Risposte:


28

Wow, ottima domanda! Vorrei provare a spiegare la risoluzione. Ci vorranno tre passaggi distinti.

La prima cosa da notare è che l'entropia è focalizzata maggiormente sul numero medio di bit necessari per disegno, non sul numero massimo di bit necessari.

Con la procedura di campionamento, il numero massimo di bit casuali necessari per estrazione è N bit, ma il numero medio di bit necessari è 2 bit (la media di una distribuzione geometrica con p=1/2 ) - questo è perché c'è un 1/2 probabilità che è necessario solo 1 bit (se il primo bit risulta essere 1), un 1/4 probabilità che è necessario solo 2 bit (se i primi due bit risultano essere 01), un 1/8 probabilità che siano necessari solo 3 bit (se i primi tre bit risultano 001) e così via.

La seconda cosa da notare è che l'entropia non cattura realmente il numero medio di bit necessari per un singolo sorteggio. Invece, le catture entropia il ammortizzato numero di bit necessari per campione m IID trae da questa distribuzione. Supponiamo di aver bisogno di bit f(m) per campionare m disegni; allora l'entropia è il limite di f(m)/m come m .

La terza cosa da notare è che, con questa distribuzione, è possibile assaggiare m IID disegna con meno bit del necessario per una più volte campione pareggio. Supponiamo che ingenuamente ha deciso di elaborare un campione (prende 2 bit casuali in media), quindi disegnare un altro campione (utilizzando 2 bit più casuali in media), e così via, fino a quando hai ripetuto questa m volte. Ciò richiederebbe in media circa 2m bit casuali.

Ma si scopre che esiste un modo per campionare da m draw usando meno di 2m bit. È difficile da credere, ma è vero!

Lascia che ti dia l'intuizione. Supponiamo annotato il risultato di campionamento m disegna, dove m è davvero grande. Quindi il risultato potrebbe essere specificato come stringa m -bit. Questo m stringa bit sarà principalmente 0., con qualche 1 è in esso: in particolare, in media, avrà circa m/2N 1 del (potrebbero essere più o meno, ma se m è sufficientemente grande, di solito il numero sarà vicino a quello). La lunghezza degli spazi tra gli 1 è casuale, ma sarà tipicamente da qualche parte vagamente nelle vicinanze di 2N(potrebbe facilmente essere la metà o il doppio o anche di più, ma di quell'ordine di grandezza). Naturalmente, invece di scrivere l'intera stringa m -bit, potremmo scriverla in modo più succinto scrivendo un elenco delle lunghezze degli spazi vuoti - che trasporta tutte le stesse informazioni, in un formato più compresso. Quanto più succinto? Bene, di solito avremo bisogno di circa N bit per rappresentare la lunghezza di ogni gap; e ci saranno circa m/2N gap; quindi avremo bisogno di circa mN/2N bit (potrebbe essere un po 'di più, potrebbe essere un po' meno, ma se m è sufficientemente grande, di solito sarà vicino a quello). È molto più breve di unmstringa m -bit.

E se c'è un modo per scrivere la stringa in modo succinto, forse non sarà troppo sorprendente se ciò significa che c'è un modo per generare la stringa con un numero di bit casuali paragonabili alla lunghezza della stringa. In particolare, generi casualmente la lunghezza di ogni spazio vuoto; questo è campionamento da una distribuzione geometrica con p=1/2N , e che può essere fatto con circa N bit casuali in media (non 2N ). Avrai bisogno di circa m/2N traendo da questa distribuzione geometrica, quindi avrai bisogno di circa Nm/2Nbit casuali. (Potrebbe essere un piccolo fattore costante più grande, ma non troppo grande.) E, si noti che questo è molto più piccolo di 2m bit.

Quindi, siamo in grado di campionare m IID trae dalla vostra distribuzione, utilizzando solo f(m)Nm/2N bit casuali (circa). Ricordiamo che l'entropia è limmf(m)/m . Quindi questo significa che si dovrebbe aspettare l'entropia di essere (approssimativamente) N/2N . Questo è un po 'fuori, perché il calcolo di cui sopra era approssimativo e rozzo - ma speriamo che ti dia qualche intuizione sul perché l'entropia è quello che è e perché tutto è coerente e ragionevole.


Caspita, ottima risposta! Ma potresti approfondire il motivo per cui il campionamento da una distribuzione geometrica con prendeNbit in media? So che una tale variabile casuale avrebbe una media di2N, quindi ci vogliono in mediaNbit da memorizzare, ma suppongo che ciò non significhi che puoi generarne uno conNbit. p=12NN2NNN
nalzok,

@nalzok, una domanda giusta! Potresti forse porlo come una domanda separata? Posso vedere come farlo, ma è un po 'disordinato scrivere in questo momento. Se chiedi, forse qualcuno riuscirà a rispondere più velocemente di me. L'approccio a cui sto pensando è simile alla codifica aritmetica. Definisci (dove X è il rv geometrico), quindi genera un numero casuale r nell'intervallo [ 0 , 1 ) e trova i tale che q ir < q i + 1qi=Pr[Xi]Xr[0,1)iqir<qi+1. Se si annota i bit del binario expension uno alla volta, di solito dopo scrivendo N + O ( 1 ) pezzi di r , i saranno pienamente determinati. rN+O(1)ri
DW

1
Quindi stai fondamentalmente usando il metodo inverso CDF per convertire una variabile casuale distribuita uniformemente in una distribuzione arbitraria, combinata con un'idea simile alla ricerca binaria? Avrò bisogno di analizzare la funzione quantile di una distribuzione geometrica per essere sicuro, ma questo suggerimento è sufficiente. Grazie!
nalzok,

1
@nalzok, ahh, sì, è un modo migliore di pensarci - adorabile. Grazie per avermelo suggerito. Sì, è quello che avevo in mente.
DW

2

Puoi pensarlo all'indietro: considera il problema della codifica binaria anziché della generazione. Si supponga di avere una sorgente che emette simboli X{A,B} con p(A)=2N , p(B)=12N . Ad esempio, se N=3 , otteniamo H(X)0.54356 . Quindi (ci dice Shannon) esiste una codifica binaria univocamente decodificabile XY, Dove Y{0,1} (bit di dati), tale che dobbiamo, in media, circa 0.54356 bit di dati per ogni simbolo originale X .

(Nel caso ti stia chiedendo come possa esistere tale codifica, dato che abbiamo solo due simboli sorgente, e sembra che non possiamo fare meglio della banale codifica, A0 , B1 , con un bit per simbolo, è necessario per capire che per approssimare il limite di Shannon dobbiamo prendere "estensioni" della sorgente, cioè codificare sequenze di input nel loro insieme. Vedi in particolare la codifica aritmetica).

Una volta chiarito quanto sopra, se assumiamo che abbiamo una mappatura invertibile XnYn , e notando che, nel limite di Shannon Yn deve avere la massima entropia (1 bit di informazione per bit di dati), ovvero Yn ha le statistiche di una moneta giusta, quindi abbiamo uno schema di generazione a portata di mano: disegna n bit casuali (qui n non ha alcuna relazione con N ) con una moneta giusta, interpretalo come l'uscita Yn dell'encoder e decodifica Xn da esso. In questo modo, Xnavrà la distribuzione di probabilità desiderata, e abbiamo bisogno (in media) H(X)<1 monete per generare ogni valore di X .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.