Mersenne Twister neden iyi sayılıyor?


38

Mersenne Twister yaygın olarak iyi olarak kabul edilir. Heck, CPython kaynağı , "var olan en kapsamlı test üreticilerinden biri" olduğunu söylüyor. Ama bu ne anlama geliyor? Bu jeneratörün özelliklerini listelemem istendiğinde, önerebileceğimlerin çoğu kötü:

  • Çok büyük ve esnek (örn. Arama ya da çoklu akış yok),
  • Büyük ebatlarına rağmen standart istatistik testlerinde başarısız oluyor,
  • 0 civarında ciddi sorunları var ve kendisini oldukça zayıf bir şekilde rastgelelediğini gösteriyor.
  • Çok hızlı

ve bunun gibi. XorShift * gibi basit RNG'ler ile karşılaştırıldığında, aynı zamanda umutsuzca karmaşık.

Bu yüzden neden bu kadar iyi olduğunu düşündüğüm hakkında bilgi aradım. Orijinal makale , "süper astronomik" dönem ve 623 boyutlu eşitlik dağıtımı hakkında birçok yorumda bulunuyor.

Bilinen birçok önlem arasında, spektral test (cf, Knuth [1981]) ve aşağıda açıklanan k-dağılım testi gibi daha yüksek boyutsal düzgünlüğe dayalı testlerin en güçlü olduğu düşünülmektedir.

Ancak, bu özellik için, jeneratör yeterli uzunlukta bir sayaçla dövülür ! Bu, yerel dağıtımların yorumunu yapmaz; bu, bir jeneratörde gerçekte neye önem verdiğinizdir ("yerel", çeşitli anlamlara gelebilir). Ve CSPRNG'ler bile bu kadar büyük sürelere aldırış etmiyorlar çünkü uzaktan bile önemli değil.

Gazetede çok fazla matematik var, ancak söyleyebileceğim kadarıyla aslında rastgelelik kalitesi ile ilgili değil. Bundan hemen hemen her söz hemen hemen bu orijinal, büyük ölçüde yararsız iddialara atlar.

İnsanlar daha eski, daha güvenilir teknolojiler pahasına bu çoğunluğa atladılar. Örneğin, bir LCG’deki kelimelerin sayısını 3’e (bir Mersenne Twister’in “sadece 624” ’sünden çok az) ve her seferinde en üstteki kelimeyi çıkarırsanız, BigCrush’tan ( TestU01 test paketinin daha sert kısmı) geçer. ), Twister'in başarısız olmasına rağmen ( PCG kağıdı, şek. 2 ). Bu göz önüne alındığında, ben Mersenne Twister desteklemek bulabildim zayıf kanıtlar ne yaptığını neden dikkati başka seçenekler üzerine lehine?

Bu da tamamen tarihsel değil. Mersenne Twister’in PCG’de rastgele olandan daha az pratikte kanıtlanmış olduğunu söylemem bana söylendi . Ancak kullanım örnekleri, test bataryalarımızdan daha iyi yapabilecekleri kadar net mi? Bazı Google çalışanları muhtemelen olmadıklarını söylüyor.

Kısacası, Mersenne Twister'in hem tarihsel bağlamında hem de başka bir şekilde nasıl olumlu bir üne sahip olduğunu merak ediyorum. Bir yandan açıkça niteliklerinden şüpheliyim, ancak diğer yandan tamamen rastgele bir oluşum olduğunu hayal etmek zor.


2
Bence haklısın. Mersenne Twister, özellikle özel bir şey değil. Sadece iyi bilinen (ve diğer iyi bilinen PRNG'lerin çoğu daha kötü hale geliyor). Oldukça iyi olan başka PRNG'ler de var. Daha iyi bir PRNG için, kriptografik bir PRNG kullanılabilir. Ne var ki, "mantığınızla ilgili bir sorun yok" ötesinde ne tür bir cevap verebilir emin değilim.
DW

1
Bence sormanız gereken soru MT'nin iyi olup olmadığı değil (çünkü birçok ölçümle), ama neden PCG veya XorShift gibi alternatiflerden daha yaygın olarak kullanılıyor? Bunun cevabı muhtemelen daha uzun zamandır etrafta olduğu ve uzun bir süre için (İnternet yıllarında) en makul olan varsayılandı.
Sahte

1
@vzn "başka bir husus üretim zamanıdır; PRNG'ler" kalitesi "çalışma zamanı pahasına gelir" → Mersenne Twister'in resonently büyük bir LCG'den daha yavaş ve daha kötü olması dışında. PCG kağıdında Şekil 16'ya bakınız. (Gazeteyi okuyup okumadığım hakkında: Mersenne Twister kağıdının matematikle ilgili olmayan bölümlerinin çoğunu ve
PCG'nin rastgele yayınladığı tüm makaleleri ayrıntılı olarak okudum

1
XorShift veya KISS algoritmalarından mı bahsediyorsunuz?
gnasher729

1
@ gnasher729 XorShift * 'ten söz ediyorum, ancak gerçekten belirli bir alternatife özgü değilim. KISS'i bilmiyordum FWIW.
Veedrac

Yanıtlar:


15

MT, daha gelişmiş TestU01 BigCrush testleri ve daha iyi PRNG'ler ile oldukça kötü olduğu ortaya çıkana kadar, birkaç yıl boyunca iyi olarak kabul edildi.

2219937

Bu sayfa Mersenne-Twister özelliklerini ayrıntılı olarak listeler:

Pozitif nitelikler

  • 32 bit veya 64 bit sayılar üretir (bu nedenle rastgele bitlerin kaynağı olarak kullanılabilir)
  • Çoğu istatistiksel testi geçiyor

Tarafsız Nitelikler

  • 22199371
  • 623-boyutlu eşit dağılmış
  • Çoklu akışlara öykünmek için dönem bölümlendirilebilir

Olumsuz Nitelikler

  • 45.000 sayıdan az olan bazı istatistiksel testler başarısız olur.
  • Tahmin edilebilir - 624 çıktının ardından, çıktısını tamamen tahmin edebiliriz.
  • Jeneratör durumu 2504 bayt RAM kaplar - aksine, herkesin kullanabileceği bir süreye sahip sarılmaya sahip son derece kullanışlı bir jeneratör, 8 bayt RAM'e sığabilir.
  • Çok hızlı değil.
  • 2219937
  • Çıktısında düzensiz; jeneratör, kurtarılması yavaş olan “kötü durumlara” girebilir.
  • Sadece biraz farklılık gösteren tohumların birbirinden sapması uzun zaman alır; kötü durumları önlemek için tohumlama dikkatli yapılmalıdır.
  • Önceden atlama mümkün olsa da, bunu yapmak için algoritmalar hesaplamak için yavaş (yani, birkaç saniye gerektirir) ve nadiren uygulamalar tarafından sağlanır.

Özet : Mersenne Twister artık yeterince iyi değil, ancak çoğu uygulama ve kütüphaneler henüz orada değil.


6
Güzel özet için teşekkürler! Bununla birlikte, gönderiniz için tek görünen kaynağın, henüz eşler arası incelenmemiş başka bir rasgele sayı üreticisi ailesinin reklamı olan bir web sitesi olduğu konusunda endişeliyim. Web sitesi girişler için herhangi bir referans sunmuyor, ancak önerilen makale pek çok içeriyor gibi görünüyor. Dolayısıyla, buradaki bağlamla ilgili cevabınızı (MT'nin eleştirisini) bireysel noktalara referans vererek geliştirebileceğinizi düşünüyorum.
Raphael

9
2219937295×22199372219945

1
"Öngörülebilir" - MT, kriptografik bir PRNG olarak tasarlanmamıştır, bu nedenle lütfen cevabınızı düzenleyin.
Jason S

8

1998 yılında ACM TOMS'ta MT belgesini kabul eden Editör ve TestU01'in de tasarımcısıyım. MT kullanmıyorum, ancak çoğunlukla MRG32k3a, MRG31k3p ve LRSR113 kullanıyorum. Bunlar hakkında, MT hakkında ve başka ne olduğu hakkında daha fazla bilgi için, aşağıdaki makalelere bakabilirsiniz:

F. Panneton, P. L'Ecuyer ve M. Matsumoto, `` Lineer Nükslere Dayalı Geliştirilmiş Uzun Süreli Jeneratörler Modulo 2 '', Matematiksel Yazılım Üzerine ACM İşlemleri, 32, 1 (2006), 1-16.

P. L'Ecuyer, “Rastgele Sayı Üretimi”, Hesaplamalı İstatistik El Kitabı'nın 3. Bölümü, JE Gentle, W. Haerdle ve Y. Mori, ed., İkinci Baskı, Springer-Verlag, 2012, 35-71 . https://link.springer.com/chapter/10.1007/978-3-642-21551-3_3

P. L'Ecuyer, D. Munger, B. Oreshkin ve R. Simard, `` Paralel Bilgisayarlar için Rasgele Sayılar: Gereksinimler ve Metotlar, '' Simülasyonda Matematik ve Bilgisayarlar, 135, (2017), 3-17. http://www.sciencedirect.com/science/article/pii/S0378475416300829?via%3Dihub

P. L'Ecuyer, `` Sıralı ve Paralel Bilgisayarlar İçin Çoklu Akışlı Rastgele Sayı Üretimi, '' gelişmiş öğreticiyi davet etti, 2015 Kış Simülasyon Konferansı Bildirileri, IEEE Press, 2015, 31-44.


3
Cevabınız için teşekkürler! Soruya bir şey ekler misiniz? 1) MT'nin neden iyi olduğunu (veya en azından yayınlanmaya değer olduğunu) düşündünüz? 2) Neden kullanmak için yeterince iyi olduğunu düşünmüyorsunuz?
Raphael

Bu değerli tarihsel bağlamı eklediğiniz için teşekkür ederiz. Gazeteyi kabul ettiğinizde Raphael'in sorularını ve kişisel düşüncelerini de merak ediyorum.
Veedrac

5

Bu konuda sıralama algoritmalarına benzer şekilde, "herkese uyan tek beden" PRNG yoktur. Farklı olanlar farklı amaçlar için kullanılır ve çok çeşitli tasarım kriterleri ve kullanımları vardır. PRNG'lerin yanlış bir şekilde tasarlanması, örneğin kriptografi için tasarlanmadığı gibi kullanılması mümkündür. Vikipedi'nin Mersenne Twister'a girişi ayrıca, "bağımsız rasgele sayı üreteçleri gerektiren Monte-Carlo simülasyonları" için tasarlanmadığını da belirtiyor.

Wikipedia'da belirtildiği gibi, bu PRNG gerçekten de varsayılan PRNG olarak bile çok sayıda programlama dilinde ve uygulamasında kullanılmaktadır. PRNG'nin neden tercih edildiğini açıklamak sosyolojik bir analiz gerektirecektir. Bu PRNG'ye katkıda bulunabilecek bazı olası faktörler:

  • Yazar, alanda iyi / güçlü bilimsel referanslara sahiptir ve yıllardır PRNG'lerde çalışmaktadır.

  • O sırada diğer yöntemlerden üstün olacak şekilde özel olarak tasarlanmıştır.

  • Yazar, uygulamalara katılıyor ve onları takip ediyor, bunlara katkıda bulunuyor. Bazı PRNG'ler daha teoriktir ve yazarlar her zaman gerçek uygulamalar ile ilgilenmezler.

  • Sistem bir web sayfasında iyi destekleniyor / güncelleniyor.

  • PRNG'nin yeni versiyonları, zayıf yönleriyle başa çıkmak için geliştirilmiştir. Tek bir Mersenne Twister algoritması yok, daha farklı versiyonları ve farklı ihtiyaçları karşılayabilecek bir değişkenler ailesi gibi.

  • Standart rastgelelik analiz yazılımı ile kapsamlı bir şekilde analiz edilmiş / test edilmiş ve bağımsız yetkililer tarafından onaylanmıştır.

  • Web siteleri için ölçüldüğü bilinen bir etkisi vardır ve “tercihli bağlanma” adı verilen bilimsel alıntılar gibi ölçülebilen diğer birçok bağlam vardır . Temelde, köklü tarihi kaynakların daha fazla kullanım sağladığı yerdir. Böyle bir etki PRNG seçeneklerini zaman içinde açıklayabilir.

Başka bir deyişle, insan seçimleriyle ilişkili ve birbiriyle ilişkili olan ve belirli niteliklere kesin olarak bağlı olmayan, ancak farklı algoritmalar, kullanıcılar ve çevre arasındaki bir tür karmaşık / acil özellik ve etkileşim olan "popülerlik" fenomenini soruyorsunuz. / kullanım bağlamları.

İşte Mersenne Twister - Bir Sözde Rastgele Sayı Üreticisi ve Varyantlarının Jagannatam (15p) tarafından yapılan algoritmasının bağımsız bir analizi . Sonuç paragrafı esasen sorunuza bir cevaptır. Sadece 1 alıntı st birkaç cümleyi:

Mersenne Twister'in teorik olarak uzun bir süre ve yüksek bir eşitleme ile iyi bir PRNG olduğu kanıtlanmıştır. Simülasyon ve modülasyon alanlarında yaygın olarak kullanılmaktadır. Kullanıcılar tarafından bulunan kusurlar mucitler tarafından düzeltildi. MT, SFMT versiyonunda SIMD ve paralel boru hatları gibi yeni ortaya çıkan CPU teknolojilerini kullanmak ve kullanmak için yükseltildi.


2
Teşekkürler. Söylediklerinizden bazıları, "O zamanlar diğer yöntemlerden üstün olmak için özel olarak tasarlanmıştı" gibi oldukça belirsiz geliyor. ve "Tam olarak şüphelendiğim iddialar olan standart rastgelelik analiz yazılımı tarafından kapsamlı bir şekilde analiz edildi / test edildi ve bağımsız makamlar tarafından onaylandı." Bununla birlikte, bir şeyleri temizleyip temizlemediğini görmek için kağıda biraz dalacağım.
Veedrac

Dikkate alınması gereken bir diğer şey bilimsel tekrarlanabilirlik. Monte Carlo simülasyon alanında çalışan birçok bilim insanı, programın bir bütün olarak, iplik sayısından bağımsız olarak aynı tohumla aynı çıktıyı üretmesini sağlamak için büyük sıkıntı yaşamaktadır. Birçoğu, PRNG'nin referans uygulamasıyla hata için hata uyumluluğu gerektiriyor.
Sahte

2
Ayrıca, "PRNG'nin yeni sürümleri zayıflıklarla başa çıkmak için geliştirildi." Diyorsunuz. Ayrıca, "Sistem bir web sayfasında iyi destekleniyor / güncelleniyor." - Bir LCG'nin gerçekten ne kadar desteğe ihtiyacı var !?
Veedrac

@Pseudonym Gerçekten takip etmiyorum. Bu neden farklı bir jeneratör kullanılmasını engelliyor? Açıkçası, testleri yeniden çalıştırırken aynı jeneratörü kullanmanız gerekiyor, ama neden yeni testler için?
Veedrac

Orijinal ve sonraki makalelerde tüm bilimsel analizler konusunda pek belirsiz görünmüyor ve orijinal soru bu şekilde “yüklü” (daha az analiz / desteğe sahip birçok PRNG kullanıldığında). afaik yeniden Bu isimler noktası, bütün PRNGs olan tekrarlanabilir aynı başlangıç tohum kullanılarak, ( "gerçek fiziksel gürültü / rasgelelik" ve onlar artık gerçekten PRNGs olmayıp) sadece donanım tabanlı jeneratörler değildir. Bunun birden fazla
iplikle
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.