Recientemente, me encontré con un comentario afirmando que casi todos los investigadores que hacen los métodos de Monte Carlo lo están haciendo mal. Continuó explicando que simplemente elegir diferentes semillas para diferentes instancias de un PRNG, como el Mersenne Twister, no es suficiente para garantizar resultados imparciales ya que pueden ocurrir colisiones malas . El artículo de Wikipedia sobre el Mersenne Twister parece corroborar:
Múltiples instancias de Mersenne Twister que difieren solo en el valor de semilla (pero no en otros parámetros) generalmente no son apropiadas para las simulaciones de Monte-Carlo que requieren generadores de números aleatorios independientes, aunque existe un método para elegir múltiples conjuntos de valores de parámetros.
Tengo que admitir que soy culpable de los cargos. Pero también lo son todas las otras implementaciones de bibliotecas paralelas de Monte Carlo que he visto hasta ahora, en particular ALPS .
El artículo de Wikipedia también hace referencia a dos documentos que ofrecen remedio:
- El esquema de Creación dinámica (DC) (1998) selecciona conjuntos de parámetros para los MT en base a la hipótesis de que son independientes si los polinomios característicos correspondientes son coprimos.
- The Jump Ahead para Linear RNGs (2008). Creo que es similar al método de salto de rana para LCG.
Ambos métodos han sido creados por Matsumoto y Nishimura, los autores originales del algoritmo Mersenne Twister.
Me temo que no tengo mucho conocimiento de teoría de números o álgebra y no entiendo completamente los esquemas anteriores o las matemáticas detrás del Mersenne Twister. Mis preguntas son principalmente de naturaleza práctica:
- ¿Cuánto realmente debo preocuparme por introducir sesgo en mis simulaciones cuando no empleo un esquema de este tipo si a casi nadie le importa en la práctica (al menos en mi comunidad)?
- Si tuviera que implementar una de estas contramedidas, ¿estoy en lo cierto al suponer que la Jump-Ahead es más adecuada ya que se basa en una teoría firme y es el método más moderno?
fuente
Respuestas:
Como usted dice, el uso del Mersenne Twister para cálculos paralelos casi siempre se hace incorrectamente, ya que el método correcto es difícil de implementar.
Con mucho, la mejor y más fácil respuesta sería alejarse por completo del Mersenne Twister y usar algo como la familia PCG , que proporciona múltiples transmisiones fuera de la caja.
Se sabe que el Mersenne Twister falla varias pruebas estadísticas , a la vez que es más lento que los RNG más nuevos, como las familias PCG y XorShift +.
La razón por la que el Mersenne Twister se usa tanto hoy en día es principalmente el resultado de los RNG antes de que sea mucho peor, tanto en rendimiento como en calidad. También ayudó a que los autores originales abrieran una implementación de alto rendimiento.
fuente
xorshift+
que era aproximadamente el doble de rápido que un generador PCG "equivalente", así que pruebe ambos si la velocidad es importante. El código PCG principal tiene muchas características incorporadas en comparación con elxorshift+
código muy liviano .Si desea usar MT, puede usar SFMT como su salto PRNG y SFMT para generar múltiples transmisiones.
fuente
Realmente solo usted puede responder la pregunta sobre el sesgo de simulación y si es aceptable en su aplicación. El procedimiento estándar que uso:
Establezca una secuencia pseudoaleatoria como punto de referencia (Monte Carlo estándar) utilizando una gran cantidad de simulaciones (en la gestión de riesgos se utilizan a menudo 10,000, en otros campos se pueden usar 100,000 a 1M).
Ejecute su RNG sobre los mismos datos de entrada para un subconjunto de datos (usamos 1 año, pero a menudo es excesivo).
Compare los resultados usando estadísticas que describen características de los datos que realmente usa para tomar conclusiones / decisiones. Utilizamos percentiles (1,5,25,50,75,95,99), error absoluto, desviación estándar del error. Todo esto es relativo a su punto de referencia.
Ahora que tiene el análisis, puede usar su propio criterio para determinar si el sesgo de RNG es aceptable.
fuente