Simulando una probabilidad de 1 de 2 ^ N con menos de N bits aleatorios


31

Digamos que necesito simular la siguiente distribución discreta:

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

La forma más obvia es dibujar bits aleatorios y verificar si todos equivalen a (o ). Sin embargo, la teoría de la información diceN01

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

Por lo tanto, el número mínimo de bits aleatorios requeridos en realidad disminuye a medida que aumenta . ¿Cómo es esto posible?N

Suponga que estamos ejecutando en una computadora donde los bits son su única fuente de aleatoriedad, por lo que no puede simplemente elegir una moneda sesgada.


Esto está estrechamente relacionado con la teoría de codificación y la complejidad de Kolmogorov, si está buscando palabras clave para profundizar. La técnica de contar repeticiones repetidas del mismo bit que DW menciona a continuación es muy útil
Brian Gordon,

Respuestas:


28

Wow, gran pregunta! Déjame intentar explicar la resolución. Tomará tres pasos distintos.

Lo primero a tener en cuenta es que la entropía se centra más en el número promedio de bits necesarios por sorteo, no en el número máximo de bits necesarios.

Con su procedimiento de muestreo, el número máximo de bits aleatorios necesarios por sorteo es bits, pero el número promedio de bits necesarios es 2 bits (el promedio de una distribución geométrica con ), esto se debe a que hay un probabilidad de que solo necesite 1 bit (si el primer bit resulta ser 1), probabilidad de que solo necesite 2 bits (si los primeros dos bits resultan ser 01), un probabilidad de que solo necesite 3 bits (si los primeros tres bits resultan ser 001), y así sucesivamente.Np=1/21/21/41/8

La segunda cosa a tener en cuenta es que la entropía realmente no captura el número promedio de bits necesarios para un solo sorteo. En cambio, la entropía captura el número amortizado de bits necesarios para muestrear iid extracciones de esta distribución. Supongamos que necesitamos bits para muestrear dibujos; entonces la entropía es el límite de como .mf(m)mf(m)/mm

La tercera cosa a tener en cuenta es que, con esta distribución, puede muestrear iid draws con menos bits de los necesarios para muestrear repetidamente un dibujo. Suponga que ingenuamente decidió dibujar una muestra (toma 2 bits aleatorios en promedio), luego extraiga otra muestra (usando 2 bits aleatorios más en promedio), y así sucesivamente, hasta que haya repetido esto veces. Eso requeriría alrededor de bits aleatorios en promedio.mm2m

Pero resulta que hay una manera de muestrear dibujos usando menos de bits. ¡Es difícil de creer, pero es verdad!m2m

Déjame darte la intuición. Suponga que anota el resultado del muestreo de sorteos, donde es realmente grande. Entonces el resultado podría especificarse como una cadena de bits. Esta cadena de bits será principalmente 0, con unos pocos 1: en particular, en promedio tendrá aproximadamente 1 (podría ser más o menos que eso, pero si es lo suficientemente grande, generalmente el número estará cerca de eso). La longitud de los espacios entre los 1 es aleatoria, pero típicamente estará en algún lugar vagamente cerca de (podría ser fácilmente la mitad o el doble o incluso más, pero de ese orden de magnitud). Por supuesto, en lugar de escribir todo elmmmmm/2Nm2Nmcadena de bits, podríamos escribirlo de manera más sucinta escribiendo una lista de las longitudes de los huecos, que contiene la misma información, en un formato más comprimido. ¿Cuánto más sucinto? Bueno, generalmente necesitaremos unos bits para representar la longitud de cada espacio; y habrá aproximadamente espacios; así que necesitaremos en total aproximadamente bits (podría ser un poco más, podría ser un poco menos, pero si es lo suficientemente grande, por lo general estará cerca de eso). Eso es mucho más corto que una cadena de bits.Nm/2NmN/2Nmm

Y si hay una manera de escribir la cadena de manera sucinta, tal vez no sea demasiado sorprendente si eso significa que hay una manera de generar la cadena con un número de bits aleatorios comparables a la longitud de la cadena. En particular, genera aleatoriamente la longitud de cada espacio; esto es un muestreo de una distribución geométrica con , y eso se puede hacer con aproximadamente bits aleatorios en promedio (no ). Necesitará aproximadamente iid a partir de esta distribución geométrica, por lo que necesitará en total aproximadamente bits aleatorios. (Podría ser un factor constante pequeño más grande, pero no demasiado grande). Y tenga en cuenta que esto es mucho más pequeño que bits.p=1/2NN2Nm/2NNm/2N2m

Por lo tanto, podemos muestrear iid extrae de su distribución, utilizando solo bits aleatorios (aproximadamente). Recuerde que la entropía es . Así que esto significa que usted debe esperar que la entropía sea (más o menos) . Eso se apaga un poco, porque el cálculo anterior fue incompleto y crudo, pero espero que te dé una idea de por qué la entropía es lo que es y por qué todo es consistente y razonable.mf(m)Nm/2Nlimmf(m)/mN/2N


Wow, gran respuesta! Pero, ¿podría explicar por qué el muestreo de una distribución geométrica con toma bits en promedio? Sé que una variable tan aleatoria tendría una media de , por lo que se necesitan en promedio bits para almacenar, pero supongo que esto no significa que pueda generar uno con bits. p=12NN2NNN
nalzok

@nalzok, una pregunta justa! ¿Tal vez podrías hacer eso como una pregunta separada? Puedo ver cómo hacerlo, pero es un poco complicado escribir en este momento. Si preguntas, tal vez alguien pueda responder más rápido que yo. El enfoque en el que estoy pensando es similar a la codificación aritmética. Defina (donde es el rv geométrico), luego genere un número aleatorio en el intervalo , y encuentre tal que . Si anota los bits de la expension binaria uno a la vez, por lo general después de anotar bits de , serán determinados por completo.qi=Pr[Xi]Xr[0,1)iqir<qi+1rN+O(1)ri
DW

1
Entonces, ¿básicamente está utilizando el método inverso CDF para convertir una variable aleatoria distribuida uniformemente en una distribución arbitraria, combinada con una idea similar a la búsqueda binaria? Necesitaré analizar la función cuantil de una distribución geométrica para estar seguro, pero esta pista es suficiente. ¡Gracias!
nalzok

1
@nalzok, ahh, sí, esa es una mejor manera de pensarlo, encantador. Gracias por sugerir eso. Sí, eso es lo que tenía en mente.
DW

2

Puedes pensar esto al revés: considera el problema de la codificación binaria en lugar de la generación. Suponga que tiene una fuente que emite símbolos con , . Por ejemplo, si , obtenemos . Entonces (Shannon nos dice) hay una codificación binaria decodificable de forma exclusiva , donde (bits de datos), de modo que necesitamos, en promedio, aproximadamente bits de datos para cada símbolo original .X{A,B}p(A)=2Np(B)=12NN=3H(X)0.54356XYY{0,1}0.54356X

(En caso de que se pregunte cómo puede existir tal codificación, dado que solo tenemos dos símbolos de origen, y parece que no podemos hacerlo mejor que la codificación trivial, , , con un bit por símbolo, necesita comprender que para aproximar el límite de Shannon necesitamos tomar "extensiones" de la fuente, es decir, para codificar secuencias de entradas como un todo. Ver en particular la codificación aritmética).A0B1

Una vez que lo anterior está claro, si suponemos que tenemos un mapeo invertible , y notando que, en el límite de Shannon, debe tener una entropía máxima (1 bit de información por bit de datos), es decir , tiene las estadísticas de una moneda justa, entonces tenemos a mano un esquema de generación: dibuje bits aleatorios (aquí no tiene relación con ) con una moneda justa, interprete como la salida del codificador , y decodificar de él. De esta manera, tendrá el distribución de probabilidad deseada, y tenemos que (en promedio) monedas para generar cada valor de .XnYnYnYnnnNYnXnXnH(X)<1X

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.