Una lección de redes neuronales (y sánguches peruanos)
Entendamos como funciona una red neuronal y como podemos usarla para separar los buenos sánguches de los malos. 🙀
Redes neuronales + sánguches… WTF?
Puede parecer una combinación rara, sin sentido, pero te prometo que si sigues leyendo todo va a cuadrar (eso espero).
Esta semana estuve leyendo el libro "You Look Like a Thing and I Love You: How Artificial Intelligence Works and Why It's Making the World a Weirder Place" por Janelle Shane y ahí encontré un ejemplo genial que describe las redes neuronales usando, adivinaste, sandwiches.
Voy a usar ese ejemplo para explorar cómo funcionan las redes neuronales con ejemplos un poquito más cercanos a la comida peruana. No voy a usar sandwiches sino sánguches. Prometo que este ejemplo no solo es divertido, sino que también permite comprender conceptos complejos de inteligencia artificial.
El Problema
Supongamos que hemos descubierto un agujero mágico en el suelo que produce un sánguche cada pocos segundos. El problema es que estos sánguches son extremadamente aleatorios. Ingredientes como chicharrón, helado de lúcuma, medias sucias o rocoto pueden aparecer juntos. Si queremos encontrar los buenos, tendríamos que sentarnos frente al agujero todo el día y clasificarlos. Eso se volvería tedioso rápidamente, considerando que solo uno de cada mil sánguches es delicioso. ¿La solución? Construir una red neuronal que haga el trabajo por nosotros.
Asumamos que la red neuronal sabe qué ingredientes tiene cada sánguche y que puede decidir si guardarlo para compartirlo con sus amigos humanos o botarlo a la basura. Nuestra tarea se reduce a algo simple y específico: usar los nombres de los ingredientes como entradas a una red neuronal y construir un algoritmo que decida si el sánguche es bueno.
Construyendo de la red Neuronal
Como hemos visto en un articulo anterior, las redes neuronales tienen una capa de entrada de información, en este caso ingredientes del sánguche, una capa de salida que debería decir si es rico o no, la llamaremos “deliciosidad”. En el medio varias capas ocultas que hacen la magia.
Simplemente conectamos todas las entradas (ingredientes) a nuestra única salida: la "deliciosidad", que va a depender de la combinación de ingredientes de cada sánguche. Por ejemplo, uno de Chicharrón con cebolla debe ser delicioso, pero un sánguche de helado de lúcuma con medias sucias, puaj!
Hasta ahora entendemos que de alguna manera misteriosa la red neuronal toma la combinación de ingredientes y nos da la “deliciosidad”, ¿pero cómo?
Para empezar la explicación, digamos que cada ingrediente contribuye a la deliciosidad de un sánguche.
Cada ingrediente tiene un peso diferente: los buenos ingredientes obtienen un peso de uno, mientras que los malos obtienen un peso de cero.
Así, la combinación de chicharrón con rocoto tendría una deliciosidad de 1+1=2 y la combinación de medias sucias con helado de lúcuma una deliciosidad de 0+0=0.
Esta configuración básica nos ayuda a evitar sánguches con ingredientes no deseados. Pero no es lo suficientemente sofisticada para reconocer combinaciones de ingredientes. Calificaría un sánguche de chicharrón con helado de lúcuma como medianamente delicioso (1+0=1), lo que no es ideal ¿cierto?. Necesitamos una red neuronal más compleja.
Añadiendo Complejidad: Capas Ocultas
Para evitar sánguches de helado de lúcuma con rocoto y similares vamos a agregar una capa oculta entre los ingredientes y la salida.
Los ingredientes estarán conectados a esa capa y cada conexión tendrá su propio peso, lo que nos permite ser más sofisticados en el análisis de las combinaciones de ingredientes.
Con esta capa oculta, podemos empezar a evitar malas combinaciones de ingredientes conectándolos a una neurona que llamaremos "Mal sanguchero". Le damos a esta neurona un peso negativo grande y conectamos todos los ingredientes malos a ella con un peso de, por ejemplo, 10. Así:
Nota como el peso de los ingredientes buenos que se conectan a esa neurona es 0, mientras que los ingredientes indeseables tiene un peso de 10. Ahora, esa neurona contribuye a la deliciosidad multiplicando el valor de cada ingrediente por el número negativo -100. Veámoslo con un ejemplo. Imaginemos un sánguche de helado de lúcuma con medias sucias:
Como ves, esta neurona contribuye a la deliciosidad en menos dos mil (-2000), esto evita que la red neuronal seleccione este tipo de sánguches.
No importa lo que pase en otras neuronas (porque hay más de una), un sánguche con helado de lúcuma o medias sucias muy probablemente no será seleccionado. Así, podemos crear células especializadas que reconozcan combinaciones específicas. Por ejemplo, una neurona que premie los sánguches de chicharrón con cebolla (ufffff), o una neurona que castigue combinaciones indeseadas, como un sánguche sólo de cebolla con rocoto.
Así, con suficientes neuronas, esta red sería capaz de seleccionar sin problema los sánguches más deliciosos provenientes del agujero mágico. Si Gastón Acurio estuviera a cargo, seguramente aparecerían un sánguches de tacu-tacu con una capa de ají de gallina y un toque de helado de pisco sour. Me imagino que con su toque maestro, incluso los sánguches más locos serían un éxito, pero no todos somos Gastón, ¿verdad?
Para terminar
En este post he tratado de utilizar el gran ejemplo de Janelle, adaptado a ingredientes peruanos, hemos visto cómo las redes neuronales pueden tomar decisiones complejas, como clasificar sánguches buenos y malos.
Como a través de capas ocultas podemos crear un sistema que maneje combinaciones de ingredientes, evitando los malos y premiando los buenos. Este enfoque no solo es aplicable a sánguches, sino a una variedad de problemas del mundo real donde necesitamos tomar decisiones basadas en múltiples factores y combinaciones.
Con todo esto me ha dado un poco de hambre, creo que voy por uno de chicharrón. Nos vemos pronto!
Germán
Crédito: Este artículo está inspirado en un ejemplo del libro "You Look Like a Thing and I Love You: How Artificial Intelligence Works and Why It's Making the World a Weirder Place" de Janelle Shane, adaptado a la cultura peruana para ilustrar conceptos de redes neuronales. No puedo recomendar con suficiente énfasis que lean el libro, es una mirada divertida y relevante del mundo de la IA.
También puedes seguir a Janelle en su blog AI Weirdness.