El generar números aleatorios es un problema técnico que el cómputo tiene desde su inicio. A lo más, podemos crear software que genere números pseudo-aleatorios usando una semilla específica (un número inicial, pues), con el cual el sistema nos puede dar una secuencia que parece al azar. Pero siempre que se usa esa misma semilla se obtiene la misma secuencia de números.
Y hay hardware específico para generar números verdaderamente aleatorios, usando propiedades físicas de los materiales, pero esto tiene también su costo y por ser hardware extra, en ocasiones no es tan funcional. De hecho, hay quien ha intentado métodos alternativos, como el usar una cámara y poner una lámpara de plasma, la cual hace que una serie de bolas de algún material muy flexible, tomen diferentes formas. Eventualmente se toma una foto a la disposición de las bolas de plasma y se calcula su área. Quien ha hecho esto indica que se puede así generar números verdaderamente al azar, pero esto tiene el inconveniente de conseguir una de estas lámparas y además, las mismas usan mucha energía pues lo que hacen es calentar en donde se encuentran las bolas de plasma para que se muevan por convección.
Pues bien, el problema ahora está siendo atacado usando redes neuronales en donde se busca hacer que el sistema aprenda a generar números al azar, lo cual parece complicado, porque en esencia las redes neuronales buscan patrones en los datos y en consecuencia, queremos que aprendan a hacer lo contrario, a no detectar patrón alguno.
El intento más interesante en ese sentido es el uso de una GAN, una red generativa adversarial (Generative Adversarial Network – GAN por sus siglas en inglés), que se convierte en un generador/que predicen un par de redes neuronales. En este tipo de redes GAN, se tiene una porción de la red que es generadora, una red retroalimentada hacia adelante, que genera una secuencia de n bits y que la parte que predice se le dan n-1 bits y trata de predecir cuál será el último bit. El generador trata de maximizar la probabilidad de manera que la parte que predice se equivoque mientras que esta parte trata de llegar a la solución correcta. Así pues, la idea es que el generador intenta vencer a la parte predictiva en la medida que esta parte acierta al último bit cada vez más veces. Por ello, son como dos adversarios en donde cada uno hace lo contrario de lo que el otro quiere hacer.
De acuerdo a los experimentos hechos, “se demostró que una GAN puede efectivamente ser entrenada para producir números pseudo-aleatorios con buenas propiedades estadísticas. Las pruebas estándares al respecto muestran que el generador entrenado pasa la prueba el 99% de las veces y el 98% de las pruebas en promedio, haciendo ver mal a otros métodos de generación de números aleatorios”.
Pero tal vez lo que importa es que este tipo de redes neuronales puede enseñar el concepto de azaroso. Y esto es algo que aparentemente es novedoso en el tema de las redes neuronales cuyos grandes éxitos han sido el poder encontrar patrones escondidos en grandes volúmenes de datos.