Mensimulasikan probabilitas 1 dari 2 ^ N dengan bit acak kurang dari N

31

Katakanlah saya perlu mensimulasikan distribusi diskrit berikut:

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

Cara yang paling jelas adalah menggambar bit acak N dan memeriksa apakah semuanya sama dengan 0 (atau 1 ). Namun, kata teori informasi

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

Jadi jumlah minimum bit acak yang dibutuhkan benar-benar berkurang karena N menjadi besar. Bagaimana ini mungkin?

Harap asumsikan bahwa kami menjalankan pada komputer di mana bit adalah satu-satunya sumber keacakan Anda, jadi Anda tidak bisa hanya melemparkan koin bias.

nalzok
sumber
Ini terkait erat dengan teori pengkodean dan kompleksitas Kolmogorov, jika Anda mencari kata kunci untuk menggali lebih dalam. Teknik penghitungan berjalan berulang dengan bit yang sama yang disebutkan oleh DW di bawah ini banyak muncul - catatan kuliah ini menyentuh contohnya people.cs.uchicago.edu/~fortnow/papers/kaikoura.pdf
Brian Gordon

Jawaban:

28

Wow, pertanyaan bagus! Biarkan saya mencoba menjelaskan resolusi. Itu akan mengambil tiga langkah berbeda.

Hal pertama yang perlu diperhatikan adalah bahwa entropi lebih difokuskan pada jumlah rata - rata bit yang dibutuhkan per undian, bukan jumlah maksimum bit yang dibutuhkan.

Dengan prosedur pengambilan sampel Anda, jumlah maksimum bit acak yang dibutuhkan per imbang adalah N bit, tetapi rata-rata jumlah bit yang diperlukan adalah 2 bit (rata-rata dari distribusi geometris dengan p=1/2 ) - ini karena ada 1/2 probabilitas bahwa Anda hanya perlu 1 bit (jika bit pertama ternyata 1), a 1/4 probabilitas bahwa Anda hanya perlu 2 bit (jika dua bit pertama berubah menjadi 01), seorang 1/8 probabilitas bahwa Anda hanya membutuhkan 3 bit (jika tiga bit pertama berubah menjadi 001), dan seterusnya.

Hal kedua yang perlu diperhatikan adalah bahwa entropi tidak benar-benar menangkap jumlah rata-rata bit yang diperlukan untuk undian tunggal. Sebaliknya, entropi menangkap jumlah bit diamortisasi yang diperlukan untuk sampel m iid menarik dari distribusi ini. Misalkan kita membutuhkan f(m) bit untuk mengambil sampel m ; maka entropi adalah batas f(m)/m sebagai m .

Hal ketiga untuk dicatat adalah bahwa, dengan distribusi ini, Anda dapat mencicipi m iid menarik dengan bit yang lebih sedikit dari yang dibutuhkan untuk berulang kali sampel satu hasil imbang. Misalkan Anda secara naif memutuskan untuk menggambar satu sampel (rata-rata mengambil 2 bit acak), lalu menggambar sampel lain (menggunakan rata-rata 2 bit acak lebih banyak), dan seterusnya, hingga Anda mengulangi ini sebanyak m kali. Itu akan membutuhkan sekitar 2m bit acak rata-rata.

Tapi ternyata ada cara untuk mengambil sampel dari m draw menggunakan kurang dari 2m bit. Sulit dipercaya, tapi itu benar!

Biarkan saya memberi Anda intuisi. Misalkan Anda menuliskan hasil penarikan sampel m , di mana m sangat besar. Maka hasilnya dapat ditentukan sebagai string m -bit. Ini m tali-bit akan kebanyakan 0, dengan beberapa 1 di dalamnya: khususnya, rata-rata akan memiliki sekitar m/2N 1 ini (bisa lebih atau kurang dari itu, tetapi jika m cukup besar, biasanya jumlah akan dekat dengan itu). Panjang celah antara 1 adalah acak, tetapi biasanya akan berada di suatu tempat di sekitar 2N(Bisa dengan mudah setengah atau dua kali atau bahkan lebih, tetapi dari urutan besarnya). Tentu saja, alih-alih menuliskan seluruh string m -bit, kita dapat menuliskannya lebih ringkas dengan menuliskan daftar panjang kesenjangan - yang membawa semua informasi yang sama, dalam format yang lebih terkompresi. Seberapa ringkas? Yah, kita biasanya membutuhkan sekitar N bit untuk mewakili panjang setiap celah; dan akan ada sekitar m/2N kesenjangan; jadi kita akan membutuhkan total tentang mN/2N bit (bisa sedikit lebih banyak, bisa sedikit lebih sedikit, tetapi jika m cukup besar, biasanya akan mendekati itu). Itu jauh lebih pendek daripada am -bit string.

Dan jika ada cara untuk menuliskan string ini secara ringkas, mungkin tidak akan terlalu mengejutkan jika itu berarti ada cara untuk menghasilkan string dengan jumlah bit acak yang sebanding dengan panjang string. Terutama, Anda secara acak menghasilkan panjang setiap celah; ini sampel dari distribusi geometris dengan p=1/2N , dan yang dapat dilakukan dengan kasar N bit acak rata-rata (tidak2N ). Anda akan membutuhkan sekitarm/2N iid menarik dari distribusi geometrik ini, jadi Anda akan membutuhkan total sekitarNm/2Nbit acak. (Ini bisa menjadi faktor konstan kecil yang lebih besar, tetapi tidak terlalu besar.) Dan, perhatikan bahwa ini jauh lebih kecil dari 2m bit.

Jadi, kita dapat mencicipi m iid menarik dari distribusi Anda, hanya menggunakan f(m)Nm/2N bit acak (kira-kira). Ingat bahwa entropi adalah limmf(m)/m . Jadi ini berarti bahwa Anda harus mengharapkan entropi untuk menjadi (kira-kira)N/2N . Itu sedikit keluar, karena perhitungan di atas tidak jelas dan kasar - tetapi mudah-mudahan itu memberi Anda beberapa intuisi mengapa entropi itu seperti apa adanya, dan mengapa semuanya konsisten dan masuk akal.

DW
sumber
Wow, jawaban yang bagus! Tetapi dapatkah Anda menguraikan mengapa pengambilan sampel dari distribusi geometrik dengan membutuhkanNbit rata-rata? Saya tahu variabel acak seperti itu akan memiliki rata-rata2N, jadi dibutuhkan rata-rataNbit untuk menyimpan, tapi saya kira ini tidak berarti Anda dapat menghasilkan satu denganNbit. p=12NN2NNN
nalzok
@nalzok, Pertanyaan yang wajar! Bisakah Anda menanyakan hal itu sebagai pertanyaan terpisah? Saya bisa melihat bagaimana melakukannya, tetapi agak berantakan untuk mengetik sekarang. Jika Anda bertanya, mungkin seseorang akan menjawab lebih cepat daripada saya. Pendekatan yang saya pikirkan mirip dengan pengkodean aritmatika. Tentukan (di mana X adalah rv geometrik), kemudian hasilkan bilangan acak r dalam interval [ 0 , 1 ) , dan temukan i sedemikian rupa sehingga q ir < q i + 1qi=Pr[Xi]Xr[0,1)iqir<qi+1. Jika Anda menuliskan bit-bit dari binary expension satu per satu, biasanya setelah menuliskan N akan sepenuhnya ditentukan. r bit r , iN+O(1)ri
DW
1
Jadi pada dasarnya Anda menggunakan metode invers CDF untuk mengubah variabel acak berdistribusi seragam menjadi distribusi sewenang-wenang, dikombinasikan dengan ide yang mirip dengan pencarian biner? Saya perlu menganalisis fungsi kuantil dari suatu distribusi geometris untuk memastikan, tetapi petunjuk ini cukup. Terima kasih!
nalzok
1
@nalzok, ahh, ya, itu cara yang lebih baik untuk memikirkannya - bagus. Terima kasih telah menyarankan itu. Yup, itulah yang ada dalam pikiran saya.
DW
2

Anda dapat memikirkan ini secara terbalik: pertimbangkan masalah pengkodean biner alih-alih pembuatan. Misalkan Anda memiliki sumber yang memancarkan simbol X{A,B} dengan p(A)=2N , p(B)=12N . Misalnya, jika N=3 , kita mendapatkan H(X)0.54356 . Jadi (Shannon memberi tahu kami) ada pengkodean biner yang dapat didekodekan secara unik X Y , di mana Y { 0 , 1 }XYY{0,1} (bit data), sehingga kita perlu, rata-rata, tentang 0.54356 bit data untuk setiap original simbolX .

(Jika Anda bertanya-tanya bagaimana pengkodean seperti itu bisa ada, mengingat bahwa kami hanya memiliki dua simbol sumber, dan tampaknya kami tidak dapat melakukan yang lebih baik daripada pengkodean sepele, A0 , B1 , dengan satu bit per simbol, Anda perlu untuk memahami bahwa untuk memperkirakan batas Shannon, kita perlu mengambil "ekstensi" dari sumber, yaitu, untuk mengurutkan urutan input secara keseluruhan. Lihat dalam pengkodean aritmatika tertentu).

XnYnYnYnnnNYnXnXnH(X)<1X

leonbloy
sumber