¿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
AI of Things Alumbrado público inteligente: oportunidades de negocio y beneficios para municipios y ciudadanos El alumbrado público inteligente es uno de los pilares de las ciudades inteligentes. De hecho, es uno de los mejores ejemplos de lo que significa el término Smart City:...
Nacho Palou “Humanidad aumentada”, el concepto que popularizó un ex-CEO de Google y que está más vigente que nunca Hace algunos años el entonces CEO de Google, Eric Schmidt, popularizó el concepto “humanidad aumentada”. Este término se refiere a la capacidad que tiene la tecnología de “mejorar las...
Nacho Palou Empieza ya a programar Inteligencia Artificial: lenguajes, herramientas y recomendaciones Existe una relación muy estrecha en Big Data e Inteligencia Artificial (IA): Big Data consiste en capturar, procesar y analizar grandes cantidades de datos. Cuando estos datos se...
Alberto García García-Castro Incentivos en redes blockchain empresariales: un nuevo enfoque La importancia del uso de incentivos que premien la colaboración y las buenas prácticas de los participantes en una red blockchain siempre ha sido parte fundamental de la tecnología....
Nacho Palou Blockchain para incrementar la confianza en la compra y venta de vehículos Cada vez es más habitual encontrar en los vehículos tecnologías digitales como conectividad, Internet de las Cosas o Inteligencia Artificial. Por ejemplo, en forma de asistentes digitales, servicios de...
Santiago Morante Inteligencia Artificial en la ficción: The Bestiary Chronicles, de Steve Coulson En la era de la inteligencia artificial (IA), es común escuchar hablar de cómo esta tecnología puede revolucionar diferentes ámbitos de la vida humana, desde la medicina hasta la...