メルセンヌツイスターはなぜ良いと見なされているのですか?


38

メルセンヌツイスターは広く良いとみなされています。ちなみに、CPythonのソースによると、「現存する最も広範囲にテストされたジェネレーターの1つです」しかし、これはどういう意味ですか?このジェネレーターのプロパティをリストするように求められたとき、私が提供できるもののほとんどは悪いです:

  • それは大規模で柔軟性がありません(例:シークなしまたは複数のストリーム)。
  • 巨大な状態サイズにもかかわらず、標準的な統計テストに失敗し、
  • 0付近に重大な問題があり、ランダム化がかなり不十分であることを示唆しています。
  • 速くない

等々。XorShift *のような単純なRNGと比較すると、それは絶望的にも複雑です。

それで、なぜこれが良いと考えられたのかについての情報を探しました。オリジナルの論文は、「超天文学」期間と623次元の均等分布について多くのコメントを述べています。

多くの既知の尺度の中で、スペクトルテスト(Knuth [1981]を参照)や以下に説明するk分布テストなど、より高い次元の均一性に基づくテストが最も強いと考えられています。

ただし、このプロパティの場合、ジェネレーターは十分な長さのカウンターで叩かれます!これは、ジェネレーターで実際に気にしているローカル分布の解説を行いません(ただし、「ローカル」はさまざまなことを意味します)。そして、CSPRNGでさえ、それほど重要ではないので、このような長い期間は気にしません。

論文には多くの数学がありますが、私が知る限り、実際にはランダム性の品質に関するものはほとんどありません。そのほとんどすべての言及は、これらの元々の、ほとんど役に立たない主張にすぐに戻ります。

古い、より信頼性の高い技術を犠牲にして、人々はこの時流に飛び乗ったようです。たとえば、LCGの単語数を3(Mersenne Twisterの「たった624」よりもはるかに少ない)に増やし、各パスで上位の単語を出力すると、BigCrush(TestU01テストスイートのより難しい部分)を通過します)、ツイスターが失敗したにもかかわらず(PCG論文、図2)。これと、メルセンヌツイスターを支持して見つけることができた弱い証拠を考えると、他の選択肢よりも注目を集めたの何ですか?

これも純粋に歴史的なものではありません。メルセンヌツイスターは、実際には、少なくともPCGランダムよりも実際に証明されていると言われています。しかし、ユースケースは私たちの一連のテストよりも優れているほど識別力がありますか?一部のグーグルは、おそらくそうではないと示唆しています。

要するに、メルセンヌツイスターは、その歴史的背景とその他の両方において、どのようにして広く肯定的な評判を得たのだろうかと思っています。一方で私は明らかにその性質に懐疑的ですが、他方では、それが完全にランダムに発生したことを想像するのは困難です。


2
あなたは正しいと思います。メルセンヌ・ツイスターは特に特別なものではありません。よく知られているだけです(そして、他の有名なPRNGの多くはたまたま悪化しています)。他にも非常に優れたPRNGがあります。さらに優れたPRNGには、暗号化PRNGを使用できます。しかし、「あなたの推論には何も悪いことはない」を超えて、どのような答えを出すことができるのか分かりません。
DW

1
あなたが尋ねるべき質問は、MTが良いかどうかではなく(多くのメトリックで)、PCGやXorShiftなどの選択肢よりも一般的に使用される理由です。答えはおそらく、それがより長い間存在しているだけであり、長い間(インターネットの年で)最も適切なデフォルトであったということです。
仮名

1
@vzn「もう1つの考慮事項は生成時間です。PRNGの「品質」は実行時間を犠牲にします」→メルセンヌツイスターは、かなり大きなLCGよりも遅く悪いことを除いて。PCG論文の図16を参照してください。(私は紙読んだかどうかについて:。。私はディテールやPCGランダム紙の全てにメルセンヌツイスター紙の非数学の部品のほとんどを読んで、私は主にかかわらず、第三脱脂)
Veedrac

1
XorShiftまたはKISSアルゴリズムについて話しているのですか?
gnasher729

1
@ gnasher729 XorShift *に言及しますが、特定の選択肢に特化したものではありません。KISS、FWIWについては知りませんでした。
Veedrac

回答:


15

MTは、より高度なTestU01 BigCrushテストと優れたPRNGでかなり悪いことが判明するまで、数年間は良いと見なされていました。

たとえば、pcg-random.orgの表は、最も使用されているPRNGのいくつかの機能の概要を示しています。MersenneTwisterの唯一の「良い」機能は、巨大な期間と、シードを使用する可能性です(再現可能結果)、シンプルで高速なTestU01 SmallCrushテストに合格しましたが、特に新しい統計的品質テストのいくつかに失敗しています。TestU01のLinearCompテストとTestU01のCrushおよびBigCrushバッテリー。2219937

このページには、Mersenne-Twisterの機能の詳細がリストされています。

肯定的な品質

  • 32ビットまたは64ビットの数値を生成します(したがって、ランダムビットのソースとして使用可能)
  • ほとんどの統計的テストに合格

ニュートラルな品質

  • 2 2199371という非常に大きな期間22199371
  • 623次元で均等に分散
  • 期間を分割して複数のストリームをエミュレートできます

負の品質

  • わずか45,000の数字で、一部の統計テストに失敗します。
  • 予測可能— 624出力後、その出力を完全に予測できます。
  • ジェネレーターの状態は2504バイトのRAMを占有します。これとは対照的に、誰でも使用できる期間が非常に長い非常に使いやすいジェネレーターは、8バイトのRAMに収まります。
  • 特に高速ではありません。
  • 2219937
  • 出力が不均一。ジェネレータは、回復が遅い「悪い状態」になる可能性があります。
  • わずかに異なる種まきは、互いに発散するのに長い時間がかかります。悪い状態を避けるために、播種は慎重に行わなければなりません。
  • 先読みは可能ですが、そのためのアルゴリズムは計算が遅く(つまり、数秒かかります)、実装によってほとんど提供されません。

概要:メルセンヌツイスターはもう十分ではありませんが、ほとんどのアプリケーションとライブラリはまだありません。


7
素敵な要約をありがとう!しかし、あなたの投稿の唯一の明らかなソースは、まだピアレビューされていない乱数ジェネレータの別のファミリーの広告であるWebサイトであることに懸念があります。ウェブサイト自体はエントリの参照を提供していませんが、提案された記事には多くが含まれているようです。したがって、個々のポイントへの参照を提供することで、ここでのコンテキスト(MTの批判)に対する答えを改善できると思います。
ラファエル

10
彼らは、期間があると真剣に口論している2219937295×22199372219945

1
「予測可能」-MTは暗号化PRNGとして意図されていないため、回答を編集してください。
ジェイソンS

8

私は1998年にACM TOMSでMT論文を受け入れた編集者であり、TestU01のデザイナーでもあります。MTは使用しませんが、ほとんどはMRG32k3a、MRG31k3p、およびLRSR113です。これらについて、MTについて、そして他に何があるかについてもっと知るために、あなたは以下の論文を見ることができます:

F.Panneneton、P.L'Ecuyer、M.Matsumoto、「Improved Long-Period Generator Based on Linear Recurrences Modulo 2」、ACM Transactions on Mathematical Software、32、1(2006)、1-16。

P. L'Ecuyer、「ランダム数生成」、計算統計ハンドブックの第3章、JEジェントル、W。ハードル、およびY.モリ編、第2版、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、およびR. Simard、「Random Numbers for Parallel Computers:Requirements and Methods」、Mathematics and Computers in Simulation、135、(2017)、3-17。 http://www.sciencedirect.com/science/article/pii/S0378475416300829?via%3Dihub

P. L'Ecuyer、「シーケンシャルおよびパラレルコンピューター用の複数のストリームを使用したランダムな番号の生成」、高度なチュートリアル、Proceedings of the 2015 Winter Simulation Conference、IEEE Press、2015、31-44。


3
ご回答有難うございます!質問に何か追加してくれませんか?1)なぜあなたはMTが良かった(または少なくとも公開する価値がある)と思ったのですか?2)使用に十分だと思わないのはなぜですか?
ラファエル

その貴重な歴史的背景を追加していただきありがとうございます。また、論文を受理したときのラファエルの質問とあなたの個人的な考えにも興味があります。
Veedrac

5

この点でアルゴリズムのソートに多少似ていますが、「1つのサイズですべてに適合する」PRNGはありません。さまざまな目的のためにさまざまなものが使用され、さまざまな設計基準と用途があります。設計されていない暗号化にPRNGを使用するなど、PRNGを誤って適用する可能性があります。メルセンヌツイスターに関するウィキペディアのエントリは、「独立した乱数ジェネレーターを必要とするモンテカルロシミュレーション」用に設計されていないことにも言及しています。

ウィキペディアで述べたように、このPRNGは実際には、デフォルトのPRNGとしても多くのプログラミング言語とアプリケーションで使用されています。1つのPRNGが好まれる理由を説明するには、社会学的に近い分析が必要です。このPRNGに寄与している可能性のあるいくつかの要因:

  • 著者は、その分野で優れた/強力な科学的資格を有しており、PRNGで何十年も働いています。

  • 当時の他の方法よりも優れているように特別に設計されました。

  • 著者は実装とそれらの追跡に従事しており、それらにも貢献しています。いくつかのPRNGはより理論的であり、著者は実際の実装に常に関心があるとは限りません。

  • システムはWebページで十分にサポート/更新されています。

  • 弱点に対処するために、PRNGの新しいバージョンが開発されました。単一のMersenne Twisterアルゴリズムはありません。異なるバージョンに似ており、さまざまなニーズに対応できるバリアントのファミリーです。

  • これは、標準のランダム性分析ソフトウェアによって広範囲に分析/テストされ、独立した当局によって合格しました。

  • Webサイトや、測定可能な「優先添付ファイル」と呼ばれる科学的引用のような他の多くのコンテキストで測定される既知の効果があります。基本的には、長く確立された歴史的な情報源がさらに使用される場所です。そのような効果は、PRNGの選択を時間とともに説明することができます。

言い換えれば、人間の選択に関連付けられ、相互に関連し、特定の品質に厳密に結び付けられていないが、さまざまなアルゴリズム、ユーザー、環境間の相互作用/複雑な特性である「人気」の現象について尋ねている/ usageコンテキスト。

以下は、Mersenne Twisterアルゴリズムのこのような独立した分析の1つです。Jagannatamによる疑似乱数ジェネレータとそのバリアント(15p)です。結論の段落は、基本的にあなたの質問に対する答えです。唯一の1つの引用STいくつかの文章を:

メルセンヌツイスターは、理論的には、長期間と高い均等配分で、優れたPRNGであることが証明されています。シミュレーションと変調の分野で広く使用されています。ユーザーが発見した欠陥は、発明者によって修正されました。MTはアップグレードされ、そのバージョンのSFMTのSIMDや並列パイプラインなどのCPUの新たに出現した技術を使用し、互換性を持つようになりました。


2
ありがとう。ただし、「当時の他の方法よりも優れているように特別に設計されていた」など、あなたが言っていることはかなり曖昧に聞こえます。「標準のランダム性分析ソフトウェアによって広範囲に分析/テストされ、独立した当局によって合格しました。」これはまさに私が疑っている主張です。ただし、この記事を少し詳しく見て、問題が解決するかどうかを確認します。
Veedrac

考慮すべきもう1つのことは、科学的な再現性です。モンテカルロシミュレーション領域で働いている多くの科学者は、スレッドの数に関係なく、プログラム全体が同じシードを与えられたときに同じ出力を生成することを確認するために多くの手間をかけます。それらの多くは、PRNGのリファレンス実装とのバグごとの互換性を必要とします。
仮名

2
また、「弱点に対処するためにPRNGの新しいバージョンが開発されました。」と言いますが、ほとんどの実装が沼地標準の最初のバージョンであるため、これは私にとって批判のようです。また、「このシステムはWebページで十分にサポート/更新されています」と表示されて少し驚いています。-LCGには実際にどのくらいのサポートが必要ですか?
Veedrac

@Pseudonym私は本当にフォローしていません。別のジェネレーターを使用できないのはなぜですか?明らかに、テストを再実行するときに同じジェネレーターを使用する必要がありますが、新しいテストの場合はなぜですか?
Veedrac

元の論文とその後の論文のすべての科学的分析についてはあまりあいまいではないようで、元の質問はこのようにいくらか「ロード」されています(分析/サポートが少ない多くのPRNGが使用されています)。Pseudonyms に関しては、すべての PRNGは同じ開始シードを使用して再現可能であり、ハードウェアベースのジェネレーターのみが再現可能ではありません(そして実際のPRNGではなく、「実際の物理的なノイズ/ランダム性」)。複数のスレッドでこれをどのように保証するのが難しいかわからない(別々のスレッドが異なるシードで同一のアルゴリズムを使用できない理由がわからない)
vzn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.