Las matemáticas del Machine Learning: Números aleatorios y dónde encontrarlos (Parte I)

Fran Ramírez    26 enero, 2021
Máquinas tragaperras

¿Cuántas veces a la hora de repartir algo con los amigos/as hemos dicho: “piensa en un número del 1 al 10”? ¿La respuesta es realmente aleatoria? Si utilizamos una calculadora o un ordenador, ¿sería más aleatoria? O por el contrario ¿existe un algoritmo que genere dicho número aleatorio? ¿Los patrones en los juegos son predecibles, o no lo son? En caso de serlos, ¿podríamos encontrar un algoritmo y resolverlo siguiendo los pasos?.

Nuestra compañera Paloma Recuero ya nos ha hablado en algunos artículos sobre los números aleatorios ofreciendo siempre un enfoque práctico hacia la Inteligencia Artificial y el Machine Learning utilizando Python:

Python para todos: ¿Por qué usamos números aleatorios ?

Python para todos: 5 formas de generar datos aleatorios

Por nuestra parte, en Ideas Locas CDCO también hemos trabajado con ellos como en este proyecto de una baliza generadora de números aleatorios con una Raspberry Pi. Por lo tanto, como habéis podido comprobar, los números aleatorios están en todas las facetas de la tecnología y sí, también en los videojuegos como veremos más adelante.

Figura 1. Funcionamiento de la baliza de números aleatorios donde se puede comprobar la utilización de los diferentes sensores para generarlos.
Figura 1. Funcionamiento de la baliza de números aleatorios donde se puede comprobar la utilización de los diferentes sensores para generarlos.

Significado de “aleatoriedad”

Pero vayamos por pasos. Antes de ver si podemos predecir o no estos números, tengamos en cuenta lo que significa aleatoriedad. Podemos definir la aleatoriedad como un proceso en el cual el resultado es imprevisible, un proceso en el cual solo influye el azar.

Por ejemplo la extracción de una bola de una urna que contiene 5 bolas numeradas del 1 al 5, es un proceso aleatorio. Sin embargo, si hablamos de extraer un número par o impar de una urna de bolas numeradas del 1 al 5 no se trataría de un proceso aleatorio. ¿Cuál es la diferencia entre el primer y segundo caso? La probabilidad de los sucesos, en el primer caso todos tenían la misma probabilidad, eran equiprobables, pero en el segundo caso la probabilidad de obtener un número par es menor que la de obtener un número impar.

Si nosotros pensamos ahora mismo un número al azar, ¿es realmente aleatorio? O por el contrario tenemos algún favorito o algún número que se repite más en nuestra mente. Nosotros podemos estar sugestionados por algún número en particular, pero las máquinas no (excepto Terminator que demuestra que tiene sentimientos). Entonces, ¿cómo conseguimos un generador de números aleatorios realmente eficaz?

Generadores aleatorios

El concepto de aleatoriedad se conoce desde tiempos antiguos y diferentes culturas. Por ejemplo, según la mitología griega, Zeus, Poseidón y Hades, una vez derrotaron a Cronos, se repartieron a suertes quién reinaba en el cielo, tierra y el inframundo.

Los números aleatorios han sido utilizados tradicionalmente en una gran variedad de aplicaciones (juegos, aplicaciones, criptografía, experimentos científicos, etc.). Desde el principio de la historia,  “la calidad” o “pureza” de estos números aleatorios determinará el éxito en la resolución de los problemas en diferentes áreas. Por lo tanto, ¿cómo podemos encontrar o generar una sucesión de números aleatorios?

igura 2. A la izquierda, presentación gráfica de un número aleatorio y a la derecha otra representación de uno menos eficiente al incluir patrones de repetición. Fuente.
Figura 2. A la izquierda, presentación gráfica de un número aleatorio y a la derecha otra representación de uno menos eficiente al incluir patrones de repetición. Fuente.

Un generador de números aleatorios es un dispositivo informático o físico diseñado para producir secuencias de números sin aparentemente orden alguno.

Conviene resaltar que los números aleatorios no deben ser generados con métodos escogidos al azar. Las sucesiones de números aleatorios reales se fundamentan en fenómenos físicos como la radioactividad, erupciones solares, sonidos atmosféricos,…

Random.org

Por ejemplo en RANDOM.ORG podemos encontrar verdaderos números aleatorios en un determinado rango elegido por el usuario. La aleatoriedad proviene del sonido atmosférico, que para muchos propósitos es mejor que los algoritmos de números pseudo-aleatorios, de los cuales hablaremos a continuación. RANDOM.ORG se usa fundamentalmente para realizar sorteos, loterías, para impulsar juegos en línea, para aplicaciones científicas y para arte y música. El servicio existe desde 1998 y fue creado por el Dr. Mads Haahr de la Escuela de Ciencias de la Computación y Estadística del Trinity College de Dublín en Irlanda.

Los números generados a partir de la teoría matemática y con ayuda de computadoras que logran pasar las pruebas estadísticas con respecto a su carácter aleatorio, reciben el nombre de números pseudoaleatorios. Un generador de números pseudoaleatorios, también conocidos por sus siglas en inglés GPAN, es un algoritmo que produce una sucesión numérica aproximada de un conjunto aleatorio de números.

Desde un punto de vista más matemático/teórico definimos un generador pseudoaleatorio como una estructura:

Figura 3. Estructura de un generador pseudoaleatorio
Figura 3. Estructura de un generador pseudoaleatorio

Donde X es un conjunto finito, x0 es un valor inicial, T es una función de transición:

Figura 4. Función de transición
Figura 4. Función de transición

U es un conjunto finito de “observación” y g es la función de salida:

Figura 5. Función de salida
Figura 5. Función de salida

Básicamente, a partir de un valor x0, se genera una sucesión xn mediante una función de recurrencia:

Figura 6. Función de recurrencia
Figura 6. Función de recurrencia

Cada uno de estos números genera a su vez un número pseudoaleatorio:

Figura 7. Número pseudoaleatorio
Figura 7. Número pseudoaleatorio

La sucesión de estos números es periódica dado que X es un conjunto finito. Podemos decir que un buen generador de números pseudoaleatorios tiene que tener una sucesión no repetitiva tan larga como sea posible. Es decir, que cuanto más tarde en volver a generar un número pseudoaleatorio repetido, mejor.

Modelos más conocidos

A finales de los años 30, Maurice Kendall y Bernard Babington-Smith obtuvieron 100.000 dígitos aleatorios, gracias a uno de los primeros dispositivos mecánicos que producían números aleatorios. Dicho dispositivo recopilaba dígitos aleatorios obtenidos mediante la iluminación de una lámpara relámpago sobre un disco giratorio iluminado. Dichos dígitos fueron ampliamente usados hasta la publicación por parte de la RAND Corporation de un millón de dígitos aleatorios en 1955.

Podemos decir que los modelos de generadores aleatorios nacieron en la década de los cuarenta gracias a Von Neumann, Nicholas Metropolis ( ¿o quizás deberíamos decir Arianna Rosenbluth?), Ulam y Lehmer, que influyeron notablemente en los procesos estocásticos. Sobre todo, el punto de inflexión fue el Método de Montecarlo. Aunque originalmente Neumann y Ulam utilizaron ruletas y dados en los problemas de difusión de neutrones, hoy en día este es uno de los métodos para generar números más usado en el mundo.

A continuación destacamos algunos de los generadores más conocidos o que más han influido a lo largo de los años:

  • Midsquare method.
  • Método congruencial lineal de Lehmer.
  • Método Mixto de congruencias
  • Método multiplicativo de congruencias
  • Generador Shift-Register
  • Generador Lagged-Fibonnaci
  • Mersenne Twister

Aplicaciones de generadores

Los generadores de números pseudo aleatorios son ampliamente utilizados hoy en día, sobretodo en aplicaciones tanto de seguridad como de uso particular.

Método de Montecarlo

La simulación de Montecarlo, también conocida como el Método de Montecarlo debe su nombre al gran famoso casino de la ciudad de Montecarlo. La ruleta es uno de los juegos más populares de azar y apuestas, y también uno claro ejemplo de generador de números aleatorios.

El objetivo principal del Método de Montecarlo no es otro que imitar el comportamiento de variables reales para predecir resultados y/o evoluciones. Este método es utilizado sobretodo en el campo de la economía, en concreto en finanzas, para crear, valorar y analizar carteas de inversión, creación de modelos de gestión de riesgo…

Criptografía

Hoy en día la seguridad en la información es una de las cosas más importantes que posee una empresa. Por ello la criptografía influye notablemente en la seguridad de las empresas, a su vez los números aleatorios son la fuente de esta disciplina. Algunos de los ejemplos más claros donde influyen son:

  • Claves o firmas digitales.
  • Mecanismos de autentificación.
  • Llaves secretas.

Videojuegos

Comportamientos aleatorios o secuencias no deterministas en los juegos, por ejemplo en los juegos de azar de cartas, o algún comportamiento/movimiento de jugadores (Pacman fue uno de los primeros y prácticamente cualquier videojuego que imagines lleva números aleatorios de una forma u otra) , las piezas que salen en el Tetris, etc.

Como hemos podido observar, las aplicaciones de los números aleatorios son prácticamente ilimitadas y muy importantes en el mundo de la tecnología. Por este motivo no te pierdas las siguientes publicaciones sobre este apasionante tema de los números aleatorios.

Recuerda que esta serie tiene los siguientes artículos ya publicados:

Escrito para LUCA por Fran Fenoll (@ffenoll16) y Fran Ramírez (@cyberhadesblog y @cybercaronte) del equipo de Ideas Locas CDCO de Telefónica).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *