Como funcionan las redes neuronales

Buenas! ¿como andan? Acá estamos una vez más, semana 30 de este año 2019 y episodio número 30 de este podcast! Parece poco, pero ningún algoritmo pudo predecir que íbamos a llegar hasta acá, así que ahora que estamos con inercia hay que seguir pedaleando y ver hasta dónde podemos llegar! 

Gracias a todos por sumarse a este viaje!

Y bien, dada la altura de este viaje por donde andamos, creo que es un buen momento para hablar de redes neuronales artificiales, ya que es un campo muy importante hoy en día en lo que es la inteligencia artificial y está dando muy buenos resultados.

De hecho en un montón de episodios las noticias de las que fuimos hablando estaban relacionadas con redes neuronales, o más precisamente con el deep learning o aprendizaje profundo, que se logra con redes neuronales con varias capas de profundidad, de ahí lo de profundo. Pero bueno, esto de las capas y de la profundidad ya lo vamos a hablar dentro de un rato.

Los que ya vienen escuchando el podcast desde hace un tiempo, saben que yo trato de explicar los conceptos de una manera fácil para que la mayoría de las personas lo puedan entender, así que hoy trataré de hacer lo mismo, y para eso vamos a tener que saltearnos varios detalles que tal vez más adelante podamos ir sumando de a poco.

Y si es tu primera vez escuchando espero que te guste la explicación y si es así que sepas que me podes encontrar en twitter como @pochocosta y que te podes suscribir al podcast en Ivoox, Spotify, o la aplicación de podcast que más te guste, para enterarte cada vez que sale un nuevo episodio.

Aprovecho ya que estamos para agradecer a todos los que me escribieron en estos días, Joaquín, Juana, Diego… yo tomo nota de todas las sugerencias y a medida que los temas que me proponen van sumando interés los vamos a ir hablando. Así que gracias porque todo el feedback me sirve para ir mejorando!

Ahora si empecemos con el tema.

Redes neuronales artificiales

Las redes neuronales son un modelo de machine learning que está basado en como se cree que funciona nuestro cerebro. 

¿y como se cree que funciona nuestro cerebro? 

Según lo que pude averiguar, nuestro cerebro recibe estímulos, estos estímulos son entradas que se envían a neuronas y esas neuronas están conectadas con otras neuronas y esas con otras, y así se forma una red de neuronas.

Y bueno, hasta acá llegamos con el programa de hoy, espero que les haya gustado… naaa mentira, chiste, chiste…

La cosa es que la información va pasando por algunas neuronas, siguiendo un camino y al terminar se produce un impulso de salida que puede ser, cerrar los ojos, mover un brazo o decir una frase…

Bien, ahora pasamos a las redes neuronales artificiales. Acá al principio se puede poner un poco difícil, pero no se preocupen porque después estos conceptos los vamos a relacionar haciendo una analogía y se va a terminar entendiendo todo.

Al igual que las redes neuronales biológicas, que serían las de un cerebro digamos, las artificiales se forman por neuronas interconectadas que reciben datos de entrada y producen una salida.

Como trabaja cada neurona

La neurona en sí, es como una cajita a la cual le llegan datos. Eso sería la entrada, y junto a cada uno de estos datos de entrada le llega también otro dato que se llama “peso”, que esto sería una ponderación de cada uno de esos datos de entrada.

La capa donde están las neuronas que reciben los datos de entrada se llama, adivinen…

SI!!! Acertaste! Capa de entrada. 

Más adelante vamos a ver como se llama la capa donde están las neuronas que nos dan la salida de la red que seguro que también la adivinas.

Pero bueno, estos datos la neurona los va a usar para hacer un cálculo matemático junto a otro valor que es el sesgo. 

El resultado de ese cálculo es lo que se va a usar como la salida de la neurona. O sea podemos ver una neurona como una función que recibe unos parámetros de entrada, los procesa y devuelve una salida.

Esta salida puede ser que se pase a otra neurona (en otra capa), junto con la salida de otra neurona, y esta neurona que recibe esta combinación de salidas de las otras neuronas, las procesa junto con los “pesos” para generar una nueva salida.

Redes neuronales profundas

Estas capas intermedias se llaman capas ocultas.

esquema de una red neuronal artificial

Y bueno, esto se puede llegar a repetir así, hasta que lleguemos a la salida de la red, que nos va a dar el resultado final. Esta sería la capa de salida.

El tema ahora es, ¿cómo sabemos si ese resultado final es bueno o no? OK, para saber eso lo que tenemos que hacer es compararlo contra el resultado esperado. 

Si se acuerdan, hace un par de episodios hablamos de machine learning supervisado y no supervisado. Y dijimos que en el aprendizaje supervisado teníamos los datos etiquetados, o sea que, para cada conjunto de datos de entrenamiento, sabemos cual es el resultado que debería tener.

Función de perdida, coste o loss

Esa comparación es lo que se conoce como función de pérdida. O sea, la diferencia entre el resultado calculado por la red y el resultado esperado.

Bueno, todo este proceso que acabo de mencionar, sería lo que nuestro modelo tiene que hacer para procesar los ejemplos del dataset de entrenamiento.

Este proceso se va a repetir una y otra vez con las features de cada uno de los ejemplos de nuestro dataset de entrenamiento y en cada una de las pasadas se van a ir ajustando los pesos para lograr que la pérdida calculada por la función de pérdida sea lo menor posible.

A ese proceso de ir ajustando los pesos para reducir la pérdida es a lo que se le dice “aprender”.

Propagación hacia atrás

Y este proceso se hace este vez, desde atras hacia adelante y por eso se llama propagación hacia atras o back propagation.

Aprendizaje profundo, deep learning

Bueno, ahora vamos a tratar de reforzar los conceptos, y les voy a contar una analogía que está basada en una parecida que alguna vez leí por ahí, pero como no me la acuerdo está adaptado a mi estilo y pero que sirve para relacionar los temas bastante bien:

Supongamos que fuiste con tu pareja a un restaurante de lujo, donde se dedican a la cocina de vanguardia. 

Los platos terminados tienen una combinación de colores que son muy llamativos a la vista, y la experiencia de comerlos hacen entrar en juego el olfato y sensaciones en boca con distintas texturas.

Al otro día, después de haber vivido esa experiencia maravillosa, te proponés practicar una determinada cantidad de veces hasta que puedas replicar ese plato lo mejor posible.

El plato es ultra complejo y para hacerlo, sabes que tenes que contar con una muy buena materia prima. Esto llevado a redes neuronales, lo podemos relacionar con la calidad de los datos de entrada. Si el dataset es de calidad podemos tener buenos resultados pero si no es de calidad los resultados no van a ser buenos.

Sigamos.

Para tener el plato terminado, hay que ir haciendo muchos pasos y armando pequeñas elaboraciones. Entonces cada paso de cada pequeña elaboración podríamos verlo como una neurona que hace una función.

Por ejemplo podríamos pensar que cortar zanahoria es una función que hace una neurona. 

Esa neurona recibe como entrada las zanahorias y lo otro que recibe es una indicación, esa indicación podría ser por ejemplo los gramos de zanahoria que tiene que cortar y el tamaño que tienen que tener los cortes.

Esto sería lo que antes mencionamos como los “pesos”.

La zanahoria cortada sería la salida de la neurona que se la vamos a mandar a la neurona que se encarga de sofreír, y se la vamos a mandar junto con la salida de la neurona que se encarga de pre calentar el aceite a 200º.

Los pasos de la receta serían el equivalente a las capas de la red neuronal.

Y así van a ir pasando todos los ingredientes por las neuronas, por todas las capas de la red, hasta que tengamos la salida, o sea el plato terminado.

Ahi vos le vas a dar el plato a tu pareja para que lo pruebe y lo compare con el que habían comido en el restaurante. Esto sería la función de pérdida.

En base a la función de pérdida y al feedback que te dé tu pareja, irás ajustando los pesos y el sesgo sobre las elaboraciones para terminar teniendo un resultado mejor. Esto sería la propagación hacia atrás o backpropagation.

Y lo hacemos de atrás hacia adelante porque si el plato sale quemado es porque lo cocinaste mucho, no por como cortaste las zanahorias.

Y bueno, asi vas a seguir haciendo la receta un montón de veces más, y eso va a ser el entrenamiento, nuevamente lo probará tu pareja y te dará su feedback y harás ajustes en las elaboraciones hasta que el plato vaya mejorando y se parezca cada vez más al plato original del restaurante.

Espero que se haya entendido.

En realidad faltaron mencionar temas como función de activación, optimizadores, epocs, y más detalles, que los podemos hablar otro día, pero espero que como una primera introducción haya estado bien.

Hasta aquí el programa de hoy, gracias a todos por estar ahí. Y si quieres que enterarse cada vez que salga un nuevo episodio de este podcast suscribiste en Itunes, iVoox, google podcast o Spotify. Les agradezco enormemente las reseñas de 5 estrellas en iTunes y los me gusta y comentarios en iVoox que nos ayudan a que nos conozca mas gente. Y si te gustó compartirlo en redes sociales. 

Dejar recomendación en iTunes