Song song Mersenne Twister cho Monte Carlo


10

Gần đây, tôi bắt gặp một bình luận tuyên bố rằng hầu hết tất cả các nhà nghiên cứu thực hiện phương pháp Monte Carlo đều làm sai. Người ta đã giải thích rằng việc chỉ chọn các hạt giống khác nhau cho các trường hợp PRNG khác nhau như Mersenne Twister là không đủ để đảm bảo kết quả không thiên vị vì có thể xảy ra va chạm xấu . Các bài viết trên Wikipedia về Mersenne Twister dường như để chứng thực:

Nhiều trường hợp Mersenne Twister chỉ khác nhau về giá trị hạt giống (chứ không phải các tham số khác) thường không phù hợp với mô phỏng Monte-Carlo yêu cầu trình tạo số ngẫu nhiên độc lập, mặc dù vẫn tồn tại phương pháp chọn nhiều bộ giá trị tham số.

Tôi phải thừa nhận, tôi có tội như bị buộc tội. Nhưng tất cả các triển khai khác của các thư viện Monte Carlo song song mà tôi đã thấy cho đến nay, đặc biệt là ALPS .

Bài viết Wikipedia cũng tham khảo hai bài báo cung cấp biện pháp khắc phục:

  • Các động Creation (DC) chương trình (1998) chọn bộ tham số cho MTS dựa trên giả thuyết rằng họ là độc lập nếu các đa thức đặc trưng tương ứng là nguyên tố cùng nhau.
  • Các Jump Ahead -linear RNGsF2 (2008). Tôi cho rằng nó tương tự như phương pháp nhảy cóc cho LCG.

Cả hai phương pháp đã được tự động bởi Matsumoto và Nishimura, tác giả ban đầu của thuật toán Mersenne Twister.

Tôi e rằng tôi không rành về lý thuyết số hoặc đại số và không hoàn toàn nắm bắt được các sơ đồ trên hoặc các phép toán đằng sau Mersenne Twister. Câu hỏi của tôi chủ yếu có tính chất thực tế:

  • Tôi thực sự cần phải lo lắng bao nhiêu về việc giới thiệu thành kiến ​​cho các mô phỏng của mình khi không sử dụng sơ đồ như vậy nếu bên cạnh không ai quan tâm đến nó trong thực tế (ít nhất là trong cộng đồng của tôi)?
  • Nếu tôi thực hiện một trong những biện pháp đối phó này, tôi có đúng không khi cho rằng Jump-Ahead phù hợp hơn vì nó dựa trên một lý thuyết vững chắc và là phương pháp hiện đại hơn?

1
Đây không phải là câu hỏi cụ thể cho MT? Các PRNG khác có những cách đơn giản hơn để tạo ra các luồng độc lập, như được mô tả trong công việc khác của Pierre Bencuyer (xem các khảo sát của anh ấy, như iro.umontreal.ca/~lecuyer/myftp/ con / met-rng-imacs.pdf ).
Kirill

Vâng, nó là một phần cụ thể cho MT. Tôi mới chỉ sử dụng MT trong các mô phỏng MC và nó được coi là lựa chọn đắt hơn một chút nhưng an toàn nhất bởi các đồng nghiệp của tôi. Không chắc chắn nếu điều này nói chung là đúng nhưng đó là những gì tôi đã hiểu.
Jonas Greitemann

Câu trả lời:


8

Giống như bạn nói, việc sử dụng Mersenne Twister cho các tính toán song song hầu như luôn được thực hiện không chính xác, vì phương pháp đúng là khó thực hiện.

Cho đến nay, câu trả lời dễ nhất và tốt nhất sẽ là tránh xa Mersenne Twister hoàn toàn và sử dụng một cái gì đó giống như gia đình PCG , nơi cung cấp nhiều luồng ra khỏi hộp.

Mersenne Twister được biết là đã thất bại trong một số thử nghiệm thống kê , trong khi cũng chậm hơn các RNG mới hơn như các gia đình PCG và XorShift +.

Lý do Mersenne Twister được sử dụng rộng rãi ngày nay chủ yếu là kết quả của RNG trước khi nó trở nên tồi tệ hơn nhiều, cả về hiệu suất và chất lượng. Nó cũng giúp các tác giả ban đầu mở ra một triển khai thực hiện cao.


2
Điều đáng chú ý là trong bài báo mà bạn liên kết đến, MT chỉ thất bại hai bài kiểm tra độ phức tạp tuyến tính của luồng bit của nó, vì vậy, sự thất bại đó không nhất thiết không đủ điều kiện sử dụng và tôi tưởng tượng có nhiều ứng dụng không nhạy cảm với đó là loại thất bại đặc biệt
Kirill

Chắc chắn rồi. Nó hoàn toàn phù hợp cho nhiều ứng dụng. Đối với các ứng dụng cũ hơn, việc thay đổi khỏi MT thường sẽ là một nỗ lực lãng phí. Tuy nhiên, đối với những ứng dụng mới hoặc các ứng dụng cần nhiều luồng số ngẫu nhiên thì không có lý do gì để sử dụng nó.
LKlevin

1
Các máy phát PCG âm thanh tuyệt vời. Gần như không thể tin nổi. Có thể nó chỉ là một sự quá liều của sự hoài nghi khoa học hoặc có thể đó là doanh số bán hàng nặng nề của trang web. Dù bằng cách nào, nó khá mới. Có bất kỳ cuộc điều tra độc lập nào chứng thực tuyên bố của mình?
Jonas Greitemann

1
Họ có doanh số rất cao cho PCG, nhưng đó cũng là thứ được thừa hưởng từ Mersenne Twister. Nhìn vào trang chủ xorshift + để thấy một nhóm khác cũng làm như vậy. Đối với các bên thứ ba, tôi đoán tôi tính, vì tôi không có liên kết gì với nhóm PCG và tôi đã xác minh rộng rãi yêu cầu của họ (cố gắng chứng minh cấp trên RNG của riêng tôi). Bạn cũng có thể tự chạy TestU01 trên PCG để kiểm tra các khiếu nại.
LKlevin

Đối với ứng dụng / phần cứng của tôi, tôi thấy xorshift+tốc độ nhanh gấp đôi so với trình tạo PCG "tương đương", vì vậy hãy thử cả hai nếu tốc độ là quan trọng. Mã PCG chính có rất nhiều tính năng tích hợp so với xorshift+mã rất nhẹ .
horchler

2

Nếu bạn muốn sử dụng MT, bạn có thể sử dụng SFMT làm bước nhảy PRNG và SFMT của bạn để tạo nhiều luồng.

110602106031060


1

Thực sự chỉ có bạn mới có thể trả lời câu hỏi về xu hướng mô phỏng và nếu nó được chấp nhận trong ứng dụng của bạn. Quy trình chuẩn tôi sử dụng:

Đặt chuỗi giả ngẫu nhiên làm điểm chuẩn (Monte Carlo tiêu chuẩn) bằng cách sử dụng số mô phỏng cao (trong quản lý rủi ro 10.000 thường được sử dụng, trong các trường khác có thể sử dụng 100.000 đến 1M).

Chạy RNG của bạn trên cùng một dữ liệu đầu vào cho một tập hợp con dữ liệu (chúng tôi sử dụng 1 năm nhưng thường là quá mức cần thiết).

So sánh kết quả bằng cách sử dụng số liệu thống kê mô tả các tính năng của dữ liệu bạn thực sự sử dụng để đưa ra kết luận / quyết định. Chúng tôi sử dụng phân vị phần trăm (1,5,25,50,75,95,99), lỗi tuyệt đối, độ lệch chuẩn của lỗi. Tất cả điều này là liên quan đến điểm chuẩn của bạn.

Bây giờ bạn đã có phân tích, bạn có thể sử dụng phán đoán của riêng mình để xem liệu độ lệch RNG có được chấp nhận hay không.

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.