¡Hola!
Soy Javier Fuentes, de Akoios, bienvenido a una nueva edición de The Independent Sentinel, la newsletter dedicada al mundo de la Ciencia de Datos.
Si quieres recibir cada edición directamente en tu bandeja de entrada, puedes suscribirte aquí:
En esta ocasión hablaremos sobre modelos ensemble, el uso de las GPUs y uno de los juegos más sencillos e interesantes jamás creado: El Juego de la Vida.
Fuente de la fotografía: Kelvin Brodie/the Sun
Here we go!
🎼 ¿Quieres banda sonora? ¡Dale al Play!
1. Inteligencia Artificial
Conceptos 👨🏫
El el mundo del Machine Learning, se conoce como método ensemble a la combinación de diversos modelos (que manejen una misma fuente de datos o fuentes diferentes) para obtener una mejor predicción global.
El principal objetivo de los modelos ensemble es reducir el error de generalización. En el día a día de los científicos de datos ocurre muchas veces que se encuentran modelos que funcionan muy bien para generalizar algunos aspectos de los datos de entrenamiento pero funcionan peor para otros. De ahí que, para aprovechar lo mejor de cada modelo y suplir sus carencias, se use la combinación de varios modelos.
Estructura básica de un modelo
Ensemble
De manera muy general y simplificada, se podría decir que, para conseguir que los modelos ensemble funcionen bien debemos:
Disponer de buenos modelos de partida (Si tenemos malos modelos, dará igual cómo los combinemos)
Intentar que los modelos a combinar estén lo menos correlados que sea posible
Escoger un buen método para agregar/combinar los resultados de los distintos modelos
Como seguro estarás pensando, esta potencial mejora en los resultados no es gratis (there's no such thing as a free lunch!) ya que:
Se incrementan (puede que muy significativamente) los tiempos de entrenamiento y el coste computacional asociado al mismo.
Aumenta la complejidad del sistema al tener que manejar, mantener y ajustar varios modelos en vez de sólo uno.
En ocasiones, pueden hacer aún más complicada (dependiendo del modo de agregación) la explicabilidad del modelo.
La parte más interesante de la técnica ensemble, es en mi opinión el método que se escoja para hacer la agregación de resultados. Los métodos para combinar resultados son de lo más variados y van desde algunos muy sencillos (una “votación”) a otros muy sofisticados y complejos.
🤓Si deseas profundizar e implementar modelos ensemble, existen bibliotecas de Python (como esta o esta) con la implementación de las técnicas arriba mencionadas y otras aún más complejas.
Tendencias 📈
El término GPU (Graphics Processing Unit) fue acuñado por Sony en 1994 para referirse al novedoso chip diseñado por Toshiba que integraba su último lanzamiento: La consola PlayStation.
Aún así, el concepto de GPU no se popularizó hasta que Nvidia comenzó a usarlo como reclamo comercial en 1999 de su tarjeta gráfica GeForce 256: "The world's first GPU".
La GeForce 256 original: El objeto de deseo para todos los gamers de la época
En su comienzo, las GPUs estaban dedicadas en exclusiva a la ejecución de juegos, específicamente para el procesado de cargas de trabajo (workloads) relacionadas con gráficos.
La creciente demanda de potencia (FLOPS y ancho de banda de memoria -memory bandwith-) por parte de la industria del videojuego impulsó la evolución de las GPUs, convirtiéndolas en dispositivos multiprocesador y multihilo específicamente preparados para procesar cargas computacionales en paralelo.
Como era de esperar, debido a su potencia de cálculo, las GPUs comenzaron a ser utilizadas para tareas que nada tenían que ver con los gráficos como la creación de supercomputadores, el minado de bitcoin o, como en el ámbito que nos ocupa, el entrenamiento y ejecución de modelos AI/ML.
En nuestro mundo de la Inteligencia Artificial y el Machine Learning, es habitual encontrarnos con workloads que requieran mucha potencia computacional y paralelismo.
A día de hoy, es muy habitual utilizar GPUs para Machine Learning ya sea a nivel local (en nuestros propios equipos) usando bibliotecas específicas como las proporcionadas por el proyecto RAPIDS, o en servicios Cloud que nos permitan utilizar GPUs para nuestros cálculos.
👉 ¡En breve estarán disponibles las GPUs para tus despliegues en Titan! Si quieres conocer más sobre nuestro producto, solicita un acceso gratuito aquí: https://lnkd.in/gPz-2mJ
Lo más interesante de todo, es que las GPUs han abierto el camino para el diseño y fabricación de procesadores especialmente dedicados al Machine Learning, como es el caso de las TPUs (Tensor Processing Units) diseñadas por Google. Las TPUs son circuitos creados a medida para ejecutar modelos de Machine Learning, especialmente aquellos que hacen uso de la biblioteca TensorFlow.
Las TPUs de Google
A día de hoy las GPUs y las TPUs están reduciendo el tiempo de entrenamiento de los modelos por su potencia y capacidad para manejar grandes matrices. Para disponer de un orden de magnitud, tareas que pudieran llevar una semana ejecutar usando CPUs, se podrían reducir a un día usando GPUs y a unas pocas horas usando TPUs.
2. Historias 📔
El Juego de la Vida
En Octubre de 2003, Eric S. Raymond (leyenda viva del Open Source y autor del celebérrimo ensayo “La Catedral y el Bazar”) propuso un símbolo para la “Comunidad Hacker” que adolecía aún por aquel entonces de un emblema que les representara.
Un verdadero hacker, según el propio Raymond, es aquella persona que resuelve de forma creativa problemas, que aporta a la comunidad y que defiende ideales como la libertad, la comunicación eficiente y el sentido de comunidad. Como él explica, hay muchos tipos de hackers y éstos se pueden encontrar en ámbitos tan distintos como la música, las matemáticas e incluso el arte.
En su momento, me intrigó especialmente este símbolo que, según Eric S. Raymond no era otra cosa que un patrón extraído de un extraño juego llamado el Juego de la Vida.
“The Glider” El emblema de los hackers
El juego de la vida no es el típico juego. Es un autómata celular inventado por el matemático británico John Conway que, lamentablemente, falleció hace apenas unas semanas a las 82 años a causa del maldito coronavirus.
Conway realizó significativas aportaciones a la teoría de números, a la teoría de la probabilidad y trabajó también en los campos de la topología y el álgebra. Pese a ello, será seguramente recordado por este juego (aunque diseñó también muchos otros).
El Juego
El autómata celular diseñado por Conway ganó popularidad cuando se habló de él en la revista Scientific American en 1970. El juego consiste en un conjunto de “células” en una cuadrícula infinita que, dependiendo de una reglas muy simples, pueden vivir, morir o multiplicarse.
Las reglas
Por cada espacio poblado (que contiene una célula):
Si una célula tiene un vecino (célula adyacente) o ninguno, muere.
Si una célula tiene cuatro o más vecinos adyacentes, muere por superpoblación.
Si una célula tiene dos o tres vecinos, sobrevive.
Para cada espació vacío:
Se crea una célula en este espacio si tiene exactamente tres vecinos.
Como en tantas otras cosas, la mejor forma de entender el juego es jugando, cosa que puedes (y te recomiendo) hacer aquí: https://playgameoflife.com/.
Cuando juegas, es imposible no sentirse atraído por cómo cualquier pequeña variación en la configuración de inicio, hace que los patrones que se generan y su evolución sea radicalmente distinta.
Hay patrones que “mágicamente” se perpetúan y otros que, al cabo de unas cuantas generaciones desaparecen por completo dejando el tablero sin rastro alguno de vida.
Algunos de los más reconocidos patrones del juego
Algo que en su momento también me impactó, es que el juego es una máquina Turing completa. Esto implica que, cualquier cosa que sea algorítmicamente computable, podría hacerse dentro del juego.
Cualquier programa que puedas imaginar, podría ser escrito y computado dentro del juego. Llevando esto al extremo, podríamos ejecutar el Juego de la Vida dentro del Juego de la Vida 🤯
Conocer este juego te lleva a un concepto tremendamente interesante: La “Complejidad Emergente”. Como el juego demuestra, unas reglas muy sencillas pueden dar lugar a estructuras emergentes de gran complejidad, con redes de realimentación e interacciones cruzadas a varias escalas.
En definitiva, el juego muestra como la complejidad puede emerger de la sencillez, idea que, aparte del interés científico, puede llevarnos a reflexiones existenciales sobre la creación del universo.
Como ocurre a menudo en esta newsletter y a excepción del humilde homenaje a John Conway, no es exactamente de todo lo anterior de lo que quería hablaros hoy.
He recordado el Juego de la Vida porque recientemente me he vuelto a topar con el concepto de Complejidad Emergente, aplicado esta vez a la resolución de la más ambiciosa de las teorías humanas: La Teoría del Todo.
En Abril de este año, Stephen Wolfram, el famoso científico británico creador de Mathematica y Wolfram Alpha publicaba un paper (rodeado de polémica, todo hay que decirlo) de 448 páginas en el que anunciaba un “nuevo camino a la teoría fundamental de la física”.
En esta publicación Wolfram describe sus avances en este área en la que ha estado trabajando gran parte de su carrera y que había empezado a adelantar en su libro A New Kind of Science. En el libro, desarrollaba su idea de que la naturaleza y el universo están basados en un conjunto sencillo de reglas computacionales (¡justo la idea del Juego de la Vida!).
El acercamiento de Wolfram es una visión computacional del cosmos en la que las reglas fundamentales se parecen a líneas de código operando sobre grafos (lo que el considera el elemento principal del universo) iteración a iteración.
Según explica, partiendo de un humilde grafo (recordad que ya hablamos de ellos en TIS #7) y unas pocas reglas, pueden aparecer estructuras fabulosamente complejas rápidamente.
Representación visual del ambicioso proyecto de Wolfram
En el fondo, Wolfram no ha parado nunca de preguntarse si efectivamente nuestro Universo y su complejidad emergen de un conjunto de reglas simples. Si esto fuese así, conociendo estas reglas podríamos entender todo lo que nos rodea, ya que todo sería un resultado emergente de estas reglas básicas.
No sé si Wolfram estará en lo cierto o de si finalmente logrará “decodificar” el universo, de lo que si estoy seguro es de que me encanta la idea de un Universo basado en grafos y reglas simples, un universo que podría haber sido diseñado por un Dios con espíritu de programador.
¡Gracias como siempre por leer hasta aquí!
¿Te gusta The Independent Sentinel? Ayúdanos a llegar a más gente. ¡Basta con que compartas nuestra URL!
¿Te has perdido alguna edición? Puedes leer todas aquí:
👉 Si quieres conocer mejor cómo funciona nuestro producto Titan, no te pierdas nuestra serie de tutoriales publicados en Medium.
👉 Si quieres, puedes solicitar un acceso gratuito para probar nuestro producto aquí https://lnkd.in/gPz-2mJ