¿Cómo funciona el algoritmo Backpropagation en una Red Neuronal?Enrique Blanco 17 octubre, 2019 El algoritmo de backpropagation se introdujo originalmente en la década de 1970, pero su importancia no se apreció completamente hasta un famoso artículo de 1986 de David Rumelhart, Geoffrey Hinton y Ronald Williams. Este documento describe varias redes neuronales en las que la retropropagación funciona mucho más rápido que los enfoques de aprendizaje anteriores, lo que hace posible utilizar redes neuronales para resolver problemas que anteriormente habían sido insolubles. Hoy, el algoritmo de backpropagation es el caballo de batalla del aprendizaje en redes neuronales. En el corazón de backpropagation hay una expresión para la derivada parcial de la función de coste con respecto a cualquier peso (o sesgo) en la red. La expresión nos dice qué tan rápido cambia el coste cuando cambiamos los pesos y los sesgos. Y aunque la expresión es algo compleja, también tiene un cierto encanto, ya que cada elemento tiene una interpretación natural e intuitiva. Entonces, backpropagation no es solo un algoritmo rápido para el aprendizaje; en realidad, nos brinda información detallada sobre cómo cambiar los pesos y los sesgos cambia el comportamiento general de la red. Un enfoque rápido para calcular la salida de una Red Neuronal Antes de analizar en profundidad backpropagation, hagamos un calentamiento con un algoritmo rápido basado en matriz para calcular la salida de una red neuronal. De hecho, ya vimos brevemente este algoritmo cerca del final del anterior capítulo, pero se describió rápidamente, por lo que vale la pena revisarlo en detalle. En particular, esta es una buena manera de sentirse cómodo con la notación utilizada en backpropagation, en un contexto familiar. Comencemos con una notación que nos permite referirnos a los pesos en la red de una manera no ambigua. Usaremos para denotar el peso de la conexión de la neurona k-ésima en la capa a la neurona en la capa . Entonces, por ejemplo, el siguiente diagrama muestra el peso en una conexión desde la cuarta neurona en la segunda capa a la segunda neurona en la tercera capa de una red: Figura 1. Introducción a la notación de índices de los pesos de una red neuronal. Esta notación es engorrosa al principio, y requiere práctica para familiarizarse con ella. Una peculiaridad de la notación es el ordenamiento de los índices y . Puede pensar que tiene más sentido usar para referirse a la neurona de entrada, y a la neurona de salida, no viceversa, como se hace realmente. Explicaremos la razón de este «capricho» a continuación. Utilizamos una notación similar para los sesgos y activaciones de la red. Explícitamente, usamos para el sesgo de la neurona j-ésima en la capa l-ésima. Y usamos para la activación de la neurona j-ésima en la capa l-ésima. El siguiente diagrama muestra ejemplos de estas anotaciones en uso: Figura 2: Ejemplo de anotación Con estas notaciones, la activación de la neurona j-ésima en la capa l-ésima está relacionada con las activaciones en la capa (l-1)-ésima por la ecuación: donde el sumatorio está sobre todas las neuronas en la capa . Para reescribir esta expresión en forma de matriz, definimos una matriz de peso para cada capa . Las entradas de la matriz de peso son sólo los pesos que se conectan a la l-ésima capa de neuronas, es decir, la entrada en la fila y la columna es . Del mismo modo, para cada capa definimos un vector de bias, . Probablemente pueda adivinar cómo funciona esto: los componentes del vector de sesgo son solo los valores , un componente para cada neurona en la capa l-ésima. Y finalmente, definimos un vector de activación cuyos componentes son las activaciones . El último ingrediente que necesitamos para reescribir la fórmula anterior en forma de matriz es la idea de vectorizar una función como . Queremos aplicar una función como a cada elemento en un vector . Utilizamos la notación obvia para denotar este tipo de aplicación de elementos de una función. Es decir, los componentes de son solo . Como ejemplo, si tenemos la función , entonces la forma vectorizada de tiene el efecto: Podemos, con esta notación en mente, escribir la ecuación que nos interesa como: Esta expresión nos da una forma mucho más global de pensar acerca de cómo las activaciones en una capa se relacionan con las activaciones en la capa anterior: simplemente aplicamos la matriz de peso a las activaciones, luego agregamos el vector de polarización y finalmente aplicamos la función . Esa visión global a menudo es más fácil y más sucinta (¡e implica menos índices!) que la visión de neurona por neurona que hemos visto ahora. Piense en ello como una forma de escapar del infierno del índice, sin dejar de ser preciso sobre lo que está sucediendo. Las dos suposiciones que tenemos que realizar sobre la función de coste El objetivo de backpropagation es calcular las derivadas parciales y de la función de coste C con respecto a cualquier peso w o sesgo b en la red. Para que backpropagation funcione, debemos hacer dos suposiciones principales sobre la forma de la función de coste. Sin embargo, antes de exponer esas suposiciones, es útil tener en mente una función de coste de ejemplo. Utilizaremos la función de coste cuadrática: denota la colección de todos los pesos en la red, todos los sesgos, es el número total de entradas de entrenamiento, es el vector de salidas de la red cuando se ingresa , y la suma es sobre todas las entradas de entrenamiento, . es el número de capas que tiene nuestra red neuronal. Bien, entonces, ¿qué suposiciones debemos hacer sobre nuestra función de coste, para poder aplicar backpropagation? La primera suposición que necesitamos es que la función de coste puede escribirse como un promedio sobre las funciones de coste para un ejemplo de entrenamiento individual. Este es el caso de la función de coste cuadrático, donde el coste de un solo ejemplo de entrenamiento es . Este supuesto también será válido para todas las demás funciones de coste que encontraremos.La razón por la que necesitamos esta suposición es porque lo que backpropagation realmente nos permite hacer es calcular las derivadas parciales y para un solo ejemplo de entrenamiento. Luego recuperamos y promediando los ejemplos de entrenamiento. De hecho, con esta suposición en mente, supondremos que el ejemplo de entrenamiento ha sido arreglado, y eliminaremos el subíndice , escribiendo el coste como . Eventualmente volveremos a colocar la , pero por ahora es una notación molestia que es mejor dejar implícita. La segunda suposición que hacemos sobre el coste es que se puede escribir en función de los resultados de la red neuronal: Figura 3. Construcción de la función de coste como función del output de una red neuronal. Por ejemplo, la función de costo cuadrático cumple este requisito, ya que el coste cuadrático para un solo ejemplo de entrenamiento puede escribirse como: y por lo tanto es una función de las activaciones de salida. Por supuesto, esta función de costo también depende de la producción deseada , y puede que se pregunte por qué no consideramos el coste también en función de . Sin embargo, recuerde que el ejemplo de entrenamiento de entrada es fijo, por lo que la salida y también es un parámetro fijo. En particular, no es algo que podamos modificar cambiando los pesos y los sesgos de ninguna manera, es decir, no es algo que la red neuronal aprenda. Por lo tanto, tiene sentido considerar como una función de las activaciones de salida sólo, con y simplemente un parámetro que ayuda a definir esa función. En el siguiente post de esta serie proseguiremos con una breve explicación de las cuatro ecuaciones fundamentales detrás de backpropagation que nos permitirán una total comprensión del algoritmo. Para mantenerte al día con LUCA, visita nuestra página web, suscríbete a LUCA Data Speaks o síguenos en Twitter, LinkedIn o YouTube. El futuro de la computación cuántica y la Inteligencia Artificial, explicado de manera sencillaMovistar Living Apps, una nueva experiencia tecnológica en el hogar
Javier Coronado Blazquez Big Data en investigación básica: de las partículas elementales a los agujeros negros El paradigma Big Data ha tenido una profunda penetración en todos los estratos de nuestra sociedad, cambiando la manera en la que interactuamos entre nosotros y se llevan a...
Marina Salmerón Uribes AI of Things en el deporte Hace unas semanas, Carolina Marín, la joven deportista española se convirtió, por sexta vez consecutiva en campeona europea de bádminton. Título que suma a su grandísimo palmarés tras ser...
Víctor Vallejo Carballo AI of Things (V): Recomendación y optimización de contenido publicitario en pantallas inteligentes Conoce los beneficios que tecnologías como las pantallas inteligentes y el Big Data ofrecen al sector de la publicidad exterior
Santiago Morante La Inteligencia Artificial en las películas de ciencia ficción: un patrón recurrente de fascinación y terror Así retrata Hollywood los avances en Inteligencia Artificial: descubre qué es el "patrón R.U.R" y por qué lo aplican muchas películas de ciencia ficción
Paloma Recuero de los Santos Cómo interpretar la matriz de confusión: ejemplo práctico La matriz de confusión es una herramienta muy útil para valorar cómo de bueno es un modelo clasificación basado en aprendizaje automático. En particular, sirve para mostrar de forma...
Paloma Recuero de los Santos Tipos de aprendizaje en Machine Learning: supervisado y no supervisado El machine Learning o aprendizaje automático consiste básicamente en automatizar, mediante distintos algoritmos, la identificación de patrones o tendencias que se “esconden” en los datos. Por ello, resulta muy...