Skip to content

Redes Neuronales y Deep Learning. Capítulo 4: Backpropagation

Share on twitter
Share on linkedin
Share on email
Share on whatsapp
Redes Neuronales y Deep Learning. Capítulo 4: Backpropagation

Tal y como vimos en el capítulo anterior, Redes Neuronales y Deep Learning. Capítulo 3: Descenso por gradiente, nos permitía optimizar la función de coste en función a los parámetros de la neurona. De esta forma somos capaces de encontrar una combinación de dichos parámetros que minimice el error en las predicciones de nuestra red. Llegados a este punto, nuestro objetivo principal es que la red sea la que cobre autonomía a la hora de aprender y que no tengamos que ser nosotros los que vayamos reajustando estos parámetros. Aquí es donde entra en juego el algoritmo de Backpropagation, un algoritmo descrito en 1986 en “Learning representations by back-propagating errors”, un artículo que haría revivir a las redes neuronales.

Motivación del algoritmo de Backpropagation

Si volvemos a los dos primeros capítulos recordaremos que las neuronas se combinan entre sí para dar lugar a una estructura compleja que denominamos red neuronal. 

Motivación del algoritmo de Backpropagation
Motivación del algoritmo de Backpropagation

De esta forma, y atendiendo a la notación de la imagen, un parámetro de entrada de alguna de las n neuronas de la primera capa puede afectar a la salida de alguna de las neuronas de la m-ésima capa oculta, y consecuentemente al resultado final. Además, recordemos que el cálculo del gradiente se hacía complicado cuando el número de parámetros es alto debido a la computación de tantas derivadas parciales.

He aquí el kit de la cuestión. En una red neuronal el error de las capas anteriores depende directamente del error de las capas posteriores, es por ello que podemos ir analizando y optimizando la propagación (propagation) del error hacia atrás (back) en la red. De esta forma podemos asumir también que si tenemos el error controlado para una neurona N de la m-ésima capa, entonces la configuración de parámetros para cada una de las neuronas de las m-1 capas anteriores que tienen influencia en los parámetros de entrada de nuestra neurona N ,también es poco influyente para nuestro error final. Veremos esto más claro con un ejemplo a continuación.

Ejemplo de Backpropagation

Supongamos que una empresa, ha tenido malos resultados en el primer trimestre del año. Nos interesará saber qué ha ocasionado dichos resultados. Como es normal, existen diferentes departamentos con sus diferentes trabajadores en cada uno de ellos. Todos estos empleados tienen más o menos problemas familiares, sociales o de salud, lo que inevitablemente repercute en su buen o mal rendimiento. A su vez esto termina teniendo más o menos relevancia en los resultados de la empresa tal y como vemos en el esquema a continuación.

Ejemplo de Backpropagation
Ejemplo de Backpropagation

La lógica detrás del algoritmo Backpropagation nos viene a decir que si, por ejemplo, un departamento no ha tenido demasiada influencia en este resultado trimestral negativo entonces podemos asumir que los trabajadores del mismo, y sus problemas de la vida cotidiana, tampoco han sido relevantes en este sentido. Esto se traduce que a la hora de computar el descenso por gradiente podemos ahorrarnos todas las derivadas parciales que involucran la rama de este departamento. Por contra, si detectamos el departamento que sí que ha tenido influencia en los malos resultados, sí que merecería la pena seguir ahondando para llegar a la raíz del problema. En este caso podríamos descubrir un ‘problema’ en cualquiera de las etapas, quizá el departamento completo no ha sabido trabajar en equipo, o quizá un trabajador fundamental tuvo un mal día por una discusión con sus amigos. 

Matemáticas del algoritmo de Backpropagation

A priori, las matemáticas que involucra este algoritmo pueden parecer muy engorrosas debido a la notación y al costo computacional que involucran. Nada más lejos de la realidad solo necesitamos tener claros los siguientes conceptos:

Composición de funciones:

De manera sencilla, diremos que dadas dos funciones reales f y g. Denominamos función compuesta de f y g a la nueva función definida por  g o f(x) = g(f(x)).

Ejemplo:

Si f(x) = 5x  y g(x)=x2,  entonces  g o f(x) = g(f(x)) = (5x)2 = 25x2.

Regla de la cadena:

Se trata de una fórmula muy común en cálculo para obtener la derivada de funciones compuestas como la que acabamos de ver. Matemáticamente esta regla dice que (g o f)’=(g’ o f) f’.

Ejemplo:

Siguiendo el ejemplo anterior: f’(x) = 5 y, llamando f(x) = y, g(f(x))’=g(y)’=2y, puesto que y = 5x, g(f(x))’=2(5x). Luego atendiendo a la regla de la cadena resulta (g o f)’(x) = 50x.

Podríamos entrar en notación, pero solo tenemos que asumir que cada camino de la red neuronal es una composición de funciones. Luego, aplicando los dos conceptos anteriores podemos medir la influencia de cualquier parámetro de nuestra red sobre el error en la predicción (la derivada parcial de la función de costo con respecto al parámetro).

Hasta aquí la parte técnica y las matemáticas de las redes neuronales. En lo que sigue veremos conceptos como las redes neuronales convolucionales y sus aplicaciones. ¡No te lo pierdas!

Comparte el artículo

Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on email
Email
Share on whatsapp
WhatsApp

Una nueva generación de servicios tecnológicos y productos para nuestros clientes