Чому Mersenne Twister вважається хорошим?


38

Мерсенн Твістер вважається хорошим. Хек, джерело CPython каже, що це "один з найбільш широко перевірених генераторів, що існують". Але що це означає? На запитання перерахувати властивості цього генератора, більшість із того, що я можу запропонувати, є поганим:

  • Він масивний і негнучкий (наприклад, немає шукаючих чи декількох потоків),
  • Він не дає стандартних статистичних випробувань, незважаючи на великі розміри штату,
  • У нього є серйозні проблеми близько 0, що дозволяє припустити, що він рандомізує себе досить погано,
  • Це навряд чи швидко

і так далі. Порівняно з простими RNG, такими як XorShift *, це також безнадійно складне.

Тому я шукав деяку інформацію про те, чому це колись вважалося гарним. Оригінальний документ містить багато коментарів щодо "суперастрономічного" періоду та 623-мірного рівнорозподілу, кажучи

Серед багатьох відомих заходів випробування, засновані на більш вимірній рівномірності, такі як спектральний тест (cf, Knuth [1981]) і k-тест на розподіл, описаний нижче, вважаються найбільш сильними.

Але, для цієї властивості генератор б'ється лічильником достатньої довжини! Це не дає коментарів щодо локальних дистрибутивів, про що ви насправді дбаєте в генераторі (хоча "локальний" може означати різні речі). І навіть CSPRNG не піклуються про такі великі періоди, оскільки це просто не віддалено важливо.

У статті багато математики, але, наскільки я можу сказати мало, це насправді про якість випадковості. Практично кожна згадка про це швидко переходить до цих оригінальних, багато в чому марних претензій.

Схоже, люди стрибнули на цю смугу за рахунок старих, надійніших технологій. Наприклад, якщо ви просто збільшите кількість слів у LCG до 3 (набагато менше, ніж "лише 624" Mersenne Twister) і виводите верхнє слово кожного проходу, воно передає BigCrush ( важча частина тестового набору TestU01 ), незважаючи на те, що Twister цього не вийшов ( папір PCG, мал. 2 ). З огляду на це, а слабкі докази того, мені вдалося знайти в підтримку Вихор Мерсенна, то , що було причиною уваги на користь його на інші варіанти?

Це теж не суто історично. Мені попутно сказали, що Mersenne Twister принаймні більше доведений на практиці, ніж, скажімо, PCG випадковий . Але чи такі випадки використання настільки вибагливі, що вони можуть зробити краще, ніж наші батареї тестів? Деякі з Googling припускають, що їх, мабуть, немає.

Коротше кажучи, мені цікаво, як Мерсенн Твістер здобув свою широку позитивну репутацію, як в історичному контексті, так і в іншому випадку. З одного боку я очевидно скептично ставлюсь до його якостей, але з іншого важко уявити, що це було цілком випадковим явищем.


2
Я думаю, ти маєш рацію. Mersenne Twister - нічого особливого. Це просто добре відомо (а багатьом з інших відомих PRNG це гірше). Є й інші PRNG, які теж непогані. Для ще кращого PRNG можна використовувати криптографічний PRNG. Я не впевнений, яку відповідь можна дати, окрім "у ваших міркуваннях нічого поганого".
DW

1
Я думаю, що питання, яке вам слід задати, не в тому, чи є MT хорошим (оскільки він є за багатьма показниками), а чому він використовується частіше, ніж такі альтернативи, як PCG або XorShift. Відповідь, ймовірно, що це було просто довше, і це був найкращий розумний дефолт протягом тривалого часу (в Інтернеті).
Псевдонім

1
@vzn "Інший розгляд - це час генерації; PRNG" якість "надходить за рахунок часу виконання" → За винятком того, що Mersenne Twister повільніше і гірше, ніж резонно великий LCG. Див. Рис. 16 у документі PCG. (Про те, чи я читав статтю: я детально прочитав більшість не математичних частин паперу Mersenne Twister, а також усі випадкові папери PCG. Хоча я здебільшого
прокинув

1
Ви говорите про алгоритми XorShift або KISS?
gnasher729

1
@ gnasher729 Я згадую XorShift *, але я не дуже конкретний для певної альтернативи. Я не знав про KISS, FWIW.
Ведрак

Відповіді:


15

Протягом декількох років MT вважався гарним, поки з більш досконалими тестами TestU01 BigCrush та кращими PRNG не виявилося досить поганим.

2219937 та можливість використовувати насіння (відтворюється Результати), він проходить прості та швидкі тести TestU01 SmallCrush, але він не дає деяких новіших тестів зі статистичної якості, особливо. Тест LinearComp TestU01 та батареї розчавлення та BigCrush TestU01.

Ця сторінка детально перераховані функції Mersenne-Twister:

Позитивні якості

  • Випускає 32-бітні або 64-бітні числа (таким чином, їх можна використовувати як джерело випадкових бітів)
  • Проходить більшість статистичних тестів

Нейтральні якості

  • 22199371
  • 623-розмірно рівнорозподілений
  • Період можна розділити, щоб імітувати кілька потоків

Негативні якості

  • Не вдалося здійснити статистичні тести, на яких налічується всього 45 000 цифр.
  • Передбачувано - після 624 виходів ми можемо повністю передбачити його вихід.
  • Стан генератора займає 2504 байт оперативної пам’яті - навпаки, надзвичайно корисний генератор з періодом більшого, ніж хто-небудь зможе використовувати, може вмістити в 8 байт оперативної пам’яті.
  • Не особливо швидко.
  • 2219937 , що на 263 (або 295) менше, ніж ідеальний генератор такого ж розміру.
  • Нерівномірність у його випуску; генератор може потрапити в «погані стани», які повільно відновлюються після.
  • Насіннєві речовини, які лише незначно відрізняються, потребують тривалого часу, щоб розходитись одна від одної; висівання потрібно проводити обережно, щоб уникнути поганих станів.
  • Хоча можливий стрибок вперед, алгоритми для цього повільно обчислюються (тобто вимагають декількох секунд) і рідко забезпечуються реалізаціями.

Короткий зміст : Mersenne Twister вже недостатньо хороший, але більшості програм та бібліотек ще немає.


7
Дякуємо за приємне резюме! Однак я стурбований тим, що єдиним очевидним джерелом для вашої публікації є веб-сайт, який фактично є рекламою для іншої родини генераторів випадкових чисел, яка ще не була перевірена. Сам веб-сайт не містить жодних посилань на записи, але, як видається, запропонована стаття містить багато. Отже, я думаю, що ви можете покращити свою відповідь щодо контексту (критика MT), надавши посилання на окремі моменти.
Рафаель

10
Вони серйозно хизуються, що період лише2219937 а не 295×22199372219945, і що після того, що сказав, що тривалий період є "нейтральною" властивістю PRG?
Девід Річербі

1
"Передбачуваний" - MT не розглядається як криптографічний PRNG, тому будь ласка, відредагуйте свою відповідь.
Jason S

8

Я редактор, який прийняв папір MT в ACM TOMS ще в 1998 році, і я також є дизайнером TestU01. Я не використовую MT, але в основному MRG32k3a, MRG31k3p та LRSR113. Щоб дізнатись більше про них, про MT та про те, що ще є, ви можете переглянути наступні статті:

F. Panneton, P. L'Ecuyer, M. Matsumoto, `` Вдосконалені генератори довгого періоду на основі лінійних повторень модуля 2 '', транзакції ACM на математичне програмне забезпечення, 32, 1 (2006), 1-16.

P. L'Ecuyer, `` Генерація випадкових чисел '', глава 3 Посібника з обчислювальної статистики, Дж. Джентлі, У. Хаердл і Ю. Морі, ред., Друге видання, Спрингер-Верлаг, 2012, 35-71 . https://link.springer.com/chapter/10.1007/978-3-642-21551-3_3

П. Л'Екуйер, Д. Мангер, Б. Орешкін та Р. Сімар, `` Довільні числа для паралельних комп'ютерів: вимоги та методи '', "Математика та комп'ютери в симуляції, 135, (2017), 3-17. http://www.sciencedirect.com/science/article/pii/S0378475416300829?via%3Dihub

P. L'Ecuyer, `` Генерація випадкових чисел з декількома потоками для послідовних і паралельних комп'ютерів '', запросив розширений підручник, Праці Зимової конференції з імітації 2015 року, IEEE Press, 2015, 31-44.


3
Дякую за вашу відповідь! Ви не хочете додати щось до питання? 1) Чому ви вважали, що тоді МТ був хорошим (або, принаймні, варто опублікувати)? 2) Чому ви не вважаєте, що це досить добре для використання?
Рафаель

Дякуємо, що додали цей цінний історичний контекст. Мені також цікаво запитань Рафаеля та ваших особистих думок, коли ви прийняли папір.
Ведрак

5

Приблизно як алгоритми сортування в цьому плані, немає PRNG "один розмір, який підходить усім". Різні використовуються для різних цілей, і існує велика різноманітність критеріїв дизайну та використання. Можливо неправильне застосування PRNG, наприклад, використання одного для криптографії, для якого воно не призначене. Запис Вікіпедії на Mersenne Twister також згадує, що він не був розроблений для "моделювання Монте-Карло, для якого потрібні незалежні генератори випадкових чисел".

Як зазначається у Вікіпедії, цей PRNG дійсно використовується у великій кількості мов програмування та програм, навіть як PRNG за замовчуванням. Потрібно було б майже соціологічний аналіз, щоб пояснити, чому один PRNG надає перевагу. Деякі можливі фактори, які можуть сприяти цьому PRNG:

  • Автор має хороші / сильні наукові дані в цій галузі та працює в PRNG протягом десятиліть.

  • Він був спеціально розроблений, щоб перевершити інші методи на той час.

  • Автор займається реалізаціями та відстеженням їх, також сприяючи їх. Деякі PRNG є більш теоретичними, і автори не завжди стосуються себе реальних реалізацій.

  • Система добре підтримується / оновлюється на веб-сторінці.

  • Нові версії ПРНГ були розроблені для усунення слабких місць. Не існує жодного єдиного алгоритму Mersenne Twister, його більше схожих на різні версії та сімейство варіантів, які можуть відповідати різним потребам.

  • Він був широко проаналізований / протестований за допомогою стандартного програмного забезпечення для аналізу випадковості та переданий незалежними органами.

  • Існує відомий ефект, виміряний для веб-сайтів та багатьох інших контекстів, таких як наукові цитати, які називаються "переважна прихильність", яку можна виміряти. Це в основному там, де давно створені історичні джерела накопичують подальше використання. Такий ефект може пояснити вибір PRNG з часом.

Іншими словами, ви запитуєте про явище "популярності", яке пов'язане і взаємопов'язане з вибором людини і не суворо пов'язане з певними якостями, але є своєрідною складною / виникаючою властивістю та взаємозв'язком між різними алгоритмами, користувачами та оточенням / використання контекстів.

Ось один такий незалежний аналіз алгоритму Мерсена Твістера - Псевдогенератора випадкових чисел та його варіантів Джаганнатама (15р). Абзац, що закінчується, по суті є відповіддю на ваше запитання. цитуючи лише перше кілька речень:

Теоретично Мерсен Твістер є хорошим PRNG, з тривалим періодом та високим рівнем розподілу. Він широко використовується у сферах моделювання та модуляції. Виявлені користувачами дефекти виправлені винахідниками. У своїй версії SFMT MT було вдосконалено, щоб використовувати та бути сумісним з новомовними технологіями процесора, такими як SIMD та паралельні трубопроводи.


2
Спасибі. Дещо з того, що ви говорите, звучить досить невиразно, на кшталт "Це було розроблено спеціально для того, щоб перевершити інші методи на той час". і "Він був широко проаналізований / протестований за допомогою стандартного програмного забезпечення для аналізу випадковості та переданий незалежними органами влади", - саме такі твердження, щодо яких я підозріло. Я хоч трохи занурююся в газету, щоб побачити, чи це все вичистить.
Ведрак

Ще одне, що слід враховувати, - це наукова відтворюваність. Багато вчених, які працюють в області імітації Монте-Карло, стикаються з великими труднощами, щоб переконатися, що програма в цілому дає однаковий вихід із даним насінням, незалежно від кількості ниток. Багато з них потребують сумісності помилок із посиланням на реалізацію PRNG.
Псевдонім

2
Ви також говорите: "Нові версії PRNG були розроблені для подолання слабких сторін", але, враховуючи, що більшість реалізацій - це стандартна перша версія, це для мене звучить як критика. Я також трохи здивований, побачивши, що "Система добре підтримується / оновлюється на веб-сторінці". - скільки підтримки реально потрібен LCG !?
Ведрак

@ Псевдонім я насправді не дотримуюся. Чому це виключає використання іншого генератора? Очевидно, що ви повинні використовувати той самий генератор при повторному запуску тестів, але чому для нових тестів?
Ведрак

у всіх наукових аналізах в оригіналі та наступних роботах не здається великою розпливчастістю, і оригінальне запитання дещо «завантажене» таким чином (афаік використовується багато PRNG з меншим аналізом / підтримкою). Зрештою, псевдоніми вказують на те, що всі PRNG повторюються за допомогою одних і тих же початкових насінин, лише апаратні генератори не є (і вони вже насправді не PRNG, а "справжній фізичний шум / випадковість"). не впевнений, як це, мабуть, важко забезпечити декількома потоками (не знаю, чому окремі потоки не можуть використовувати однаковий алгоритм із різними насінням)
vzn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.