Mô phỏng xác suất 1 trên 2 ^ N với ít hơn N bit ngẫu nhiên


31

Nói rằng tôi cần mô phỏng phân phối rời rạc sau đây:

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

Cách rõ ràng nhất là vẽ bit ngẫu nhiên và kiểm tra xem tất cả chúng có bằng (hoặc ) không. Tuy nhiên, lý thuyết thông tin nóiN01

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

Vì vậy, số lượng bit ngẫu nhiên tối thiểu cần thiết thực sự giảm khi N đi lớn. Sao có thể như thế được?

Vui lòng giả sử rằng chúng tôi đang chạy trên máy tính trong đó bit là nguồn ngẫu nhiên duy nhất của bạn, vì vậy bạn không thể chỉ sử dụng một đồng xu thiên vị.


Điều này liên quan chặt chẽ đến lý thuyết mã hóa và độ phức tạp Kolmogorov, nếu bạn đang tìm kiếm từ khóa để đào sâu hơn. Kỹ thuật đếm chạy lặp đi lặp lại của các bit cùng mà DW đề cập bên dưới đi lên rất nhiều - những bài giảng chạm vào nó ví dụ people.cs.uchicago.edu/~fortnow/papers/kaikoura.pdf
Brian Gordon

Câu trả lời:


28

Wow, câu hỏi tuyệt vời! Hãy để tôi cố gắng giải thích độ phân giải. Nó sẽ thực hiện ba bước riêng biệt.

Điều đầu tiên cần lưu ý là entropy được tập trung nhiều hơn vào số bit trung bình cần thiết cho mỗi lần rút, chứ không phải số bit tối đa cần thiết.

Với quy trình lấy mẫu của bạn, số bit ngẫu nhiên tối đa cần thiết cho mỗi lần rút là bit, nhưng số bit trung bình cần là 2 bit (trung bình của phân phối hình học với ) - điều này là do có một Xác suất mà bạn chỉ cần 1 bit (nếu bit đầu tiên biến thành 1), xác suất bạn chỉ cần 2 bit (nếu hai bit đầu tiên biến thành 01), xác suất bạn chỉ cần 3 bit (nếu ba bit đầu tiên hóa ra là 001), v.v.Np=1/21/21/41/8

Điều thứ hai cần lưu ý là entropy không thực sự nắm bắt được số bit trung bình cần thiết cho một lần rút. Thay vào đó, entropy thu được số bit được khấu hao cần thiết để lấy mẫu iid rút ra từ phân phối này. Giả sử chúng ta cần bit để lấy mẫu rút ra; thì entropy là giới hạn của là .mf(m)mf(m)/mm

Điều thứ ba cần lưu ý là, với bản phân phối này, bạn có thể lấy mẫu iid rút ra với ít bit hơn mức cần thiết để lặp lại mẫu một lần rút. Giả sử bạn đã ngây thơ quyết định vẽ một mẫu (lấy trung bình 2 bit ngẫu nhiên), sau đó vẽ một mẫu khác (trung bình sử dụng thêm 2 bit ngẫu nhiên), v.v., cho đến khi bạn lặp lại lần này. Điều đó sẽ yêu cầu trung bình khoảng bit ngẫu nhiên.mm2m

Nhưng hóa ra có một cách để lấy mẫu từ rút ra bằng cách sử dụng ít hơn bit. Thật khó tin, nhưng đó là sự thật!m2m

Hãy để tôi cung cấp cho bạn trực giác. Giả sử bạn đã viết ra kết quả lấy mẫu rút ra, trong đó thực sự lớn. Sau đó, kết quả có thể được chỉ định là một chuỗi -bit. Đây chuỗi bit sẽ chủ yếu là 0, với một vài 1 trong nó: đặc biệt, trung bình nó sẽ có khoảng 1 của (có thể nhiều hơn hoặc ít hơn thế, nhưng nếu là đủ lớn, thường là số sẽ gần với số đó). Độ dài của các khoảng trống giữa 1 là ngẫu nhiên, nhưng thường sẽ ở đâu đó một cách mơ hồ trong vùng lân cận (có thể dễ dàng bằng một nửa hoặc gấp đôi hoặc thậm chí nhiều hơn, nhưng theo thứ tự cường độ đó). Tất nhiên, thay vì viết ra toàn bộmmmmm/2Nm2NmN m / 2 N m N / 2 N m mchuỗi -bit, chúng ta có thể viết nó ngắn gọn hơn bằng cách viết ra một danh sách các độ dài của các khoảng trống - mang tất cả thông tin giống nhau, ở định dạng nén hơn. Bao nhiêu gọn gàng hơn? Chà, chúng ta thường sẽ cần khoảng bit để biểu thị độ dài của mỗi khoảng trống; và sẽ có khoảng khoảng trống; vì vậy chúng ta sẽ cần tổng cộng khoảng bit (có thể nhiều hơn một chút, có thể ít hơn một chút, nhưng nếu đủ lớn, nó thường sẽ gần với điều đó). Nó ngắn hơn rất nhiều so với chuỗi -bit.Nm/2NmN/2Nmm

Và nếu có cách viết chuỗi này ngắn gọn, có lẽ sẽ không quá ngạc nhiên nếu điều đó có nghĩa là có cách tạo chuỗi với một số bit ngẫu nhiên có thể so sánh với độ dài của chuỗi. Cụ thể, bạn ngẫu nhiên tạo độ dài của mỗi khoảng cách; đây là lấy mẫu từ một phân phối hình học với và có thể được thực hiện với trung bình khoảng bit ngẫu nhiên (không phải ). Bạn sẽ cần khoảng iid rút ra từ phân phối hình học này, vì vậy bạn sẽ cần tổng cộng khoảng bit ngẫu nhiên. (Nó có thể là một hệ số không đổi nhỏ lớn hơn, nhưng không lớn hơn nhiều.) Và, lưu ý rằng đây là nhỏ hơn nhiều so với bit.p=1/2NN2Nm/2NNm/2N2m

Vì vậy, chúng tôi có thể lấy mẫu iid rút ra từ bản phân phối của bạn, chỉ sử dụng các bit ngẫu nhiên (khoảng). Hãy nhớ lại rằng entropy là . Vì vậy, phương tiện này mà bạn nên mong đợi các entropy là (khoảng) . Điều đó hơi khác một chút, bởi vì tính toán trên còn sơ sài và thô thiển - nhưng hy vọng nó mang đến cho bạn một số trực giác về lý do tại sao entropy là gì và tại sao mọi thứ đều phù hợp và hợp lý.mf(m)Nm/2Nlimmf(m)/mN/2N


Wow, câu trả lời tuyệt vời! Nhưng bạn có thể giải thích lý do tại sao lấy mẫu từ một phân phối hình học với lấy bit trung bình không? Tôi biết một biến ngẫu nhiên như vậy sẽ có giá trị trung bình là , vì vậy phải mất trung bình bit để lưu trữ, nhưng tôi cho rằng điều này không có nghĩa là bạn có thể tạo một bit có bit. p=12NN2NNN
nalzok

@nalzok, Một câu hỏi công bằng! Có lẽ bạn có thể hỏi đó là một câu hỏi riêng biệt? Tôi có thể thấy làm thế nào để làm điều đó, nhưng nó hơi lộn xộn để gõ ngay bây giờ. Nếu bạn hỏi có lẽ ai đó sẽ trả lời nhanh hơn tôi có thể. Cách tiếp cận tôi nghĩ là tương tự như mã hóa số học. Xác định (trong đó là rv hình học), sau đó tạo một số ngẫu nhiên trong khoảng và tìm sao cho . Nếu bạn ghi lại các bit của mức tăng nhị phân một lần, thông thường sau khi ghi các bit của , sẽ được xác định đầy đủ.qi=Pr[Xi]Xr[0,1)iqir<qi+1rN+O(1)ri
DW

1
Vì vậy, về cơ bản, bạn đang sử dụng phương pháp CDF nghịch đảo để chuyển đổi một biến ngẫu nhiên được phân phối đồng đều thành một phân phối tùy ý, kết hợp với một ý tưởng tương tự như tìm kiếm nhị phân? Tôi sẽ cần phải phân tích hàm lượng tử của phân phối hình học để chắc chắn, nhưng gợi ý này là đủ. Cảm ơn!
nalzok

1
@nalzok, ahh, vâng, đó là một cách tốt hơn để suy nghĩ về nó - đáng yêu. Cảm ơn bạn đã gợi ý rằng. Yup, đó là những gì tôi đã nghĩ trong đầu.
DW

2

Bạn có thể nghĩ điều này ngược: xem xét vấn đề mã hóa nhị phân thay vì tạo. Giả sử rằng bạn có một nguồn phát ra các ký hiệu với , . Ví dụ: nếu , chúng ta nhận được . Vì vậy (Shannon nói với chúng tôi) có một mã hóa nhị phân có thể giải mã duy nhất , trong đó (bit dữ liệu), trung bình chúng ta cần khoảng bit dữ liệu cho mỗi ký hiệu gốc .X{A,B}p(A)=2Np(B)=12NN=3H(X)0.54356XYY{0,1}0.54356X

(Trong trường hợp bạn đang tự hỏi làm thế nào mã hóa như vậy có thể tồn tại, với điều kiện là chúng ta chỉ có hai ký hiệu nguồn và dường như chúng ta không thể làm tốt hơn việc mã hóa tầm thường, , , với một bit cho mỗi ký hiệu, bạn cần hiểu rằng để tính gần đúng ràng buộc Shannon, chúng ta cần lấy "phần mở rộng" của nguồn, nghĩa là, để mã toàn bộ chuỗi các đầu vào nói chung. Xem mã hóa số học cụ thể).A0B1

Khi đã rõ ở trên, nếu chúng ta giả sử rằng chúng ta có ánh xạ khả nghịch , và lưu ý rằng, trong giới hạn Shannon phải có entropy tối đa (1 bit thông tin cho mỗi bit dữ liệu), nghĩa là , có số liệu thống kê về một đồng tiền công bằng, sau đó chúng ta có sẵn sơ đồ thế hệ: rút ra bit ngẫu nhiên (ở đây không có quan hệ với ) với một đồng tiền công bằng, diễn giải nó là đầu ra của bộ mã hóa và giải mã từ nó. Bằng cách này, sẽ có phân bố xác suất mong muốn, và chúng ta cần (trung bình) đồng tiền để tạo ra mỗi giá trị của .XnYnYnYnnnNYnXnXnH(X)<1X

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.