메르 센 트위스터는 왜 좋은 것으로 간주됩니까?


38

메르 센 트위스터는 좋은 것으로 널리 알려져 있습니다. 지옥, CPython의 소스 는 "현존하는 가장 광범위하게 테스트 발전기 중 하나입니다."라고 말한다 그러나 이것이 무엇을 의미합니까? 이 생성기의 속성을 나열하라는 메시지가 표시되면 제공 할 수있는 대부분이 나쁩니다.

  • 방대하고 융통성이 없습니다 (예 : 탐색 또는 여러 스트림이 없음).
  • 대규모 상태에도 불구하고 표준 통계 테스트에 실패합니다.
  • 0 주위에 심각한 문제가 있습니다.
  • 거의 빠르지 않습니다

등등. XorShift *와 같은 간단한 RNG에 비해 절망적으로 복잡합니다.

그래서 왜 이것이 좋은 것으로 생각되는지에 대한 정보를 찾았습니다. 이 논문 은 "슈퍼 천문학적"기간과 623 차원 등분 포에 대해 많은 언급을하고있다.

많은 공지 된 측정들 중에서, 스펙트럼 테스트 (cf, Knuth [1981]) 및 k- 분포 테스트와 같은 더 높은 치수 균일성에 기초한 테스트가 가장 강한 것으로 간주된다.

그러나이 속성의 경우 발전기는 충분한 길이 의 카운터 로 맞습니다 ! 이것은 로컬 배포판에 대한 주석을 만들지 않으며 , 이는 실제로 발전기에서 신경 쓰는 것입니다 ( "로컬"은 다양한 것을 의미 할 수 있음). CSPRNG조차도 원격으로 중요하지 않기 때문에 그러한 큰 기간 동안 신경 쓰지 않습니다.

논문에는 많은 수학이 있지만, 거의 말할 수없는 한 실제로는 임의성에 관한 것입니다. 그에 대한 거의 모든 언급은 빠르게 쓸모없는 원래의 주장으로 빠르게 되돌아갑니다.

사람들이 더 오래되고 더 안정적인 기술을 희생하면서이 악 대차에 뛰어 들었던 것처럼 보입니다. 예를 들어 LCG의 단어 수를 3으로 늘리고 (Mersenne Twister의 "624"보다 훨씬 적음) 각 패스마다 최상위 단어를 출력하면 BigCrush ( TestU01 테스트 스위트의 더 어려운 부분)를 전달합니다 ), Twister가 실패 했음에도 불구하고 ( PCG 논문, 그림 2 ). 이것은 감안할 때, 나는이 메르 센 트위스터의 지원에서 찾을 수 있었다 약한 증거는, 어떤 원인의 관심을 다른 선택에 그것을 선호하는?

이것은 순전히 역사적이 아닙니다. Mersenne Twister는 PCG random 보다 실제적으로 적어도 더 입증되었다는 말을 들었습니다 . 그러나 유스 케이스는 우리의 테스트 배터리보다 더 잘 할 수 있도록 안목이 있습니까? 일부 인터넷 검색은 아마도 그렇지 않을 것이라고 제안합니다.

요컨대, 메르 센 트위스터가 역사적 맥락과 그 밖의 측면에서 어떻게 광범위한 긍정적 인 평판을 얻었는지 궁금합니다. 한편으로는 분명히 그 특성에 회의적이지만 다른 한편으로는 그것이 완전히 무작위로 발생했다고 상상하기 어렵습니다.


2
내 생각 엔 당신이 맞다. 메르 센 트위스터는 특별한 것이 아닙니다. 그것은 잘 알려져 있습니다 (그리고 다른 많은 알려진 PRNG는 더 나빠집니다). 꽤 좋은 다른 PRNG도 있습니다. 더 나은 PRNG를 위해 암호화 PRNG를 사용할 수 있습니다. 그래도 "당신의 추론에는 아무런 문제가 없습니다."
DW

1
당신이 물어봐야 할 질문은 MT가 좋은지 아닌지 (많은 메트릭으로 인해) 아니라 PCG 나 XorShift와 같은 대안보다 더 일반적으로 사용되는 이유라고 생각합니다. 그 대답은 아마도 오래 전부터 있었으며 오랫동안 (인터넷 연도) 가장 합리적인 기본값이었습니다.
가명

1
@vzn "또 다른 고려 사항은 생성 시간입니다 PRNG는"품질은 메르 센 트위스터가 느린 것을 제외 → "실행시의 비용에 온다" resonably 큰 LCG보다 더. PCG 용지의 그림 16을 참조하십시오. (논문을 읽었는지 여부에 관하여 : Mersenne Twister 논문의 대부분의 비 수학 부분과 모든 PCG 무작위 논문을
읽었습니다

1
XorShift 또는 KISS 알고리즘에 대해 이야기하고 있습니까?
gnasher729

1
@ gnasher729 XorShift *에 대해 언급했지만 특정 대안에 대해서는 구체적이지 않습니다. 나는 KISS, FWIW에 대해 몰랐다.
Veedrac

답변:


15

MT는 고급 Advanced TestU01 BigCrush 테스트와 더 나은 PRNGs로 인해 꽤 나빠질 때까지 몇 년 동안 좋은 것으로 간주되었습니다.

2219937

이 페이지 에는 Mersenne-Twister 기능이 자세히 나열되어 있습니다.

긍정적 인 자질

  • 32 비트 또는 64 비트 숫자를 생성합니다 (따라서 임의 비트의 소스로 사용 가능)
  • 대부분의 통계 테스트를 통과

중립적 특성

  • 22199371
  • 623 차원으로 등분 포
  • 여러 스트림을 에뮬레이션하기 위해 기간을 분할 할 수 있음

부정적인 자질

  • 45,000 개의 숫자로 일부 통계 테스트에 실패합니다.
  • 예측 가능-624 개의 출력 후 출력을 완전히 예측할 수 있습니다.
  • 생성기 상태는 2504 바이트의 RAM을 차지합니다. 반면에, 사용 가능한 기간보다 훨씬 큰 사용 가능한 생성기는 8 바이트의 RAM에 맞을 수 있습니다.
  • 특별히 빠르지는 않습니다.
  • 2219937
  • 출력이 고르지 않다. 발전기는 복구가 느린 "나쁜 상태"에 빠질 수 있습니다.
  • 약간만 다른 파종은 서로 분기하는 데 시간이 오래 걸립니다. 시딩은 나쁜 상태를 피하기 위해 신중하게 이루어져야합니다.
  • 앞서 나가는 것이 가능하지만, 그렇게하는 알고리즘은 계산 속도가 느리고 (즉, 몇 초 필요) 구현에 의해 거의 제공되지 않습니다.

요약 : Mersenne Twister는 더 이상 충분하지 않지만 대부분의 응용 프로그램과 라이브러리는 아직 없습니다.


6
좋은 요약 감사합니다! 그러나 귀하의 게시물에 대한 유일한 명백한 출처는 아직 동료 검토를 거치지 않은 다른 난수 생성기 제품군에 대한 광고 인 웹 사이트입니다. 웹 사이트 자체는 항목에 대한 참조를 제공하지 않지만 제안 된 기사에는 많은 내용이 포함되어 있습니다. 따라서 개별 요점에 대한 참조를 제공함으로써 여기 문맥 (MT의 비판)에 대한 답변을 향상시킬 수 있다고 생각합니다.
Raphael

9
2219937295×22199372219945

1
"예측 가능"-MT는 암호화 PRNG 용이 아니므로 답변을 편집하십시오.
Jason S

8

1998 년 ACM TOMS에서 MT 용지를 수락 한 편집자이며 TestU01의 디자이너이기도합니다. MT는 사용하지 않지만 주로 MRG32k3a, MRG31k3p 및 LRSR113을 사용합니다. 이것들, MT 및 그 밖의 것들에 대해 더 알고 싶다면 다음과 같은 논문을 볼 수 있습니다.

F. Panneton, P. L' Ecuyer 및 M. Matsumoto,``선형 반복 모듈로 2를 기반으로 한 개선 된 장기 생성기 '', 수학 소프트웨어에 대한 ACM 트랜잭션, 32, 1 (2006), 1-16.

P. L' Ecuyer,``임의 숫자 생성 '', 계산 통계 핸드북 3 장, JE Gentle, W. Haerdle 및 Y. Mori, 에디션, 제 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,``병렬 컴퓨터의 난수 : 요구 사항 및 방법 '', 시뮬레이션의 수학 및 컴퓨터, 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) 왜 MT가 좋았거나 (적어도 출판 가치가 있다고) 생각 했습니까? 2) 왜 사용하기에 충분하다고 생각하지 않습니까?
라파엘

소중한 역사적 맥락을 추가해 주셔서 감사합니다. 논문을 수락했을 때 라파엘의 질문과 개인적인 생각에 대해서도 궁금합니다.
Veedrac

5

이와 관련하여 정렬 알고리즘과는 달리 "한 크기에 모두 맞는"PRNG는 없습니다. 다른 것들은 다른 목적으로 사용되며 다양한 디자인 기준과 용도가 있습니다. 암호화되지 않은 암호화를 위해 PRNG를 사용하는 등 PRNG를 잘못 적용 할 수 있습니다. Mersenne Twister 에 대한 Wikipedia의 항목은 또한 "독립 난수 생성기를 필요로하는 Monte Carlo 시뮬레이션"을 위해 설계된 것이 아니라고 언급합니다.

Wikipedia에서 언급했듯이이 PRNG는 기본 PRNG로도 수많은 프로그래밍 언어 및 응용 프로그램에서 실제로 사용됩니다. 하나의 PRNG가 선호되는 이유를 설명하려면 거의 사회 학적 분석이 필요합니다. 이 PRNG에 기여할 수있는 몇 가지 가능한 요인 :

  • 저자는 해당 분야에서 우수하고 강력한 과학 자격증을 보유하고 있으며 수십 년 동안 PRNG에서 일해 왔습니다.

  • 그것은 당시에 다른 방법보다 우수하도록 특별히 설계되었습니다.

  • 저자는 구현에 참여하고이를 추적하고 기여합니다. 일부 PRNG는 더 이론적이며 저자는 항상 실제 구현에 관심이있는 것은 아닙니다.

  • 시스템은 웹 페이지에서 잘 지원 / 업데이트됩니다.

  • 약점을 처리하기 위해 새로운 버전의 PRNG가 개발되었습니다. Mersenne Twister 알고리즘은 하나도 없으며 다른 버전과 비슷하며 다른 요구를 처리 할 수있는 변형 계열이 있습니다.

  • 그것은 표준 무작위성 분석 소프트웨어에 의해 광범위하게 분석 / 테스트되었으며 독립 기관에 의해 통과되었습니다.

  • 웹 사이트 및 "선호 첨부" 라고하는 과학 인용과 같은 많은 다른 상황에서 측정 할 수있는 알려진 효과 가 있습니다. 기본적으로 오랜 역사를 가진 소스가 더 많이 사용되는 곳입니다. 이러한 효과는 시간이 지남에 따라 PRNG 선택을 설명 할 수 있습니다.

다시 말해서, 당신은 인간의 선택과 관련되고 서로 연관되어 있고 특정 자질과 엄격하게 관련되어 있지는 않지만, 다른 알고리즘, 사용자 및 환경 사이의 일종의 복잡하고 긴급한 속성 및 상호 작용 인 "인기"현상에 대해 묻고 있습니다. / 사용 컨텍스트.

다음은 알고리즘 Mersenne Twister – 의사 난수 생성기 및 Jagannatam (15p) 의 변형대한 독립적 인 분석 중 하나 입니다. 결론은 본질적으로 귀하의 질문에 대한 답변입니다. 첫 번째 몇 문장 만 인용 :

Mersenne Twister는 이론적으로 오랜 기간 동안 높은 등분 포를 제공하는 우수한 PRNG로 입증되었습니다. 시뮬레이션 및 변조 분야에서 광범위하게 사용됩니다. 사용자에 의해 발견 된 결함은 본 발명자들에 의해 수정되었다. MT는 SFMT 버전의 SIMD 및 병렬 파이프 라인과 같이 새롭게 부상하는 CPU 기술과 함께 사용 및 호환되도록 업그레이드되었습니다.


2
감사. "당신이하는 말 중 일부는 그 당시 다른 방법보다 우월하도록 특별히 설계되었습니다." 그리고 "그것은 표준 무작위성 분석 소프트웨어에 의해 광범위하게 분석 / 테스트되었으며 독립적 인 당국에 의해 통과되었습니다."라고 정확하게 의심합니다. 그래도 문제가 해결되는지 확인하기 위해 종이에 약간 들어가겠습니다.
Veedrac

고려해야 할 또 다른 사항은 과학적 재현성입니다. Monte Carlo 시뮬레이션 영역에서 일하는 많은 과학자들은 스레드 수에 관계없이 프로그램이 동일한 시드에 대해 동일한 결과를 생성하도록 많은 문제를 겪습니다. 이들 중 다수는 PRNG의 참조 구현과 버그 간 호환성이 필요합니다.
가명

2
또한 "새로운 버전의 PRNG는 약점을 처리하기 위해 개발되었습니다."라고 말하지만, 대부분의 구현이 늪지 표준의 첫 번째 버전이기 때문에 이것은 나에게 더 비판적인 것처럼 들립니다. 또한 "시스템이 웹 페이지에서 잘 지원 / 업데이트되었습니다"라는 것에 약간 놀랐습니다. -LCG가 실제로 얼마나 많은 지원을 필요로합니까!?
Veedrac

@ 가명 나는 정말 따르지 않습니다. 왜 다른 발전기를 사용할 수 없습니까? 분명히 테스트를 다시 실행할 때 동일한 생성기를 사용해야하지만 새로운 테스트를해야하는 이유는 무엇입니까?
Veedrac

원고와 그 이후의 논문에서 모든 과학적 분석에 대해 모호하지 않은 것으로 보이며 원래의 질문은 이런 식으로 다소 "적재"됩니다 (분석 / 지원이 적은 많은 PRNG가 사용됨). 가명, 모든 PRNG는 동일한 시작 시드를 사용하여 반복 가능 하며 하드웨어 기반 생성기 만 사용할 수는 없습니다 (실제로는 실제 물리적 노이즈 / 임의 성인 PRNG가 아닙니다). 다중 스레드를 사용하여이를 확인하는 것이 어려울 지 확실하지 않음 (별도의 스레드가 다른 시드와 동일한 알고리즘을 사용할 수없는 이유를 알 수 없음)
vzn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.