Backpropagation: Solución a los problemas del perceptrón multicapa

Contenido del Bootcamp Dirigido por: | Última modificación: 16 de julio de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabías que el backpropagation acabó con el primer invierno de la inteligencia artificial? El invierno de la inteligencia artificial fue una época en la que se recrudeció el clima de esta ciencia y ocurrieron los problemas. A continuación, profundizamos en el backpropagation y la solución a los problemas del perceptrón multicapa.

El problema del perceptrón

Todo comenzó con la imposibilidad que presentó el perceptrón creado por Rosenblatt de solucionar problemas como el XOR y algoritmos de corte no lineal. Rosenblatt planteó este algoritmo en los años 50, pero la dicha no duró mucho, porque en 1969 llegaron Minsky y Papert con su libro Perceptrons a plantear el problema de los perceptrones de Rosenblatt: los perceptrones solo podían ser entrenados para resolver problemas de regresiones lineales.

Esto se resolvió con la creación de perceptrones multicapa, cuyo funcionamiento consistía en que la salida de un perceptrón era la entrada del otro. Así, se nivelaban las cargas y no ocurrían errores.

La solución: el backpropagation

La solución llegó en 1986. El algoritmo de backpropagation es capaz de calcular la derivada parcial de la función y los pesos de una red neuronal de varias capas, mirando como se propagan los errores.

Se empiezan a usar dos nuevas funciones de activación:

backpropagation

El backpropagation básicamente lo que hace es ir propagando los errores hacia atrás y, mediante el método de los gradientes, va resolviendo cuáles son los pesos que tienen errores.

Los datos, por tanto, entran de y hacia atrás y los errores van de delante hacia atrás. Aquí lo que tenemos son distintas capas: una de entrada, donde se ven bien los datos, y una de salida. Entre medias está lo que se conoce como la capa oculta, que es donde el algoritmo de backpropagation hace su magia y es capaz de calcular los pesos utilizando la regla de la cadena de las derivadas.

x <- seq (-10, 10, length.out = 100)
plot (tanh (x), ylab ='y', xlab = 'x', t = 'l', col = 'red')
lines (1 / (1 + exp (-x)), ylab = 'y', xlab = 'x', t = '1', col = 'blue')

Ahora te explicamos la estructura de una red neuronal prealimentada (feed-fordward neural network). En estas redes se define una función error objetivo que hay que minimizar. Una común puede ser el error cuadrático medio que ya hemos visto en regresiones lineales, pero hay muchas otras en función del tipo de problema que se quiera atacar.

El algoritmo de backpropagation se basa en la regla de la cadena a la hora de ir diferenciando cómo varía el error y propaga el error desde la salida hacia atrás hasta llegar a la entrada pasando por todas las capas ocultas. Este algoritmo se basa en la regla de la cadena:

dz dz dy

——- = —— ——

dx dy dz

#library ("dslabs")
#mnist_data <- read_mnist () str (mnist _data)
df_train <- cbind (data.frame (digit0 =mnist_data$train$_labels == 0), as.data.frame (mnist_data$train$images)
head (df_train)

Esta es una red neuronal muy sencilla. Le hemos dicho que nos ponga 4 elementos en la capa oculta y una función de activación logística. De ese modo, él solo está entrenando.

Si queremos entrenar redes neuronales en R, podemos usar la librería neuralnet.

#Backpropagation
library (neuralnet)
set.seed (1)
nn = neuralnet (digit0 ~., data = df_train, hidden = 4, act.fct = "logistic", linear.output = FALSE)

Podremos ver la predicción, que no va a salir mucho mejor que con el perceptrón.

pred = compute (nn, as.data.frame (mnist_data$test$images))
df_result <- data.frame (pred = pred$net.result, real = mnist_data$test$label == 0)
library (caret)
caret :: confusionMatrix (table (df_resultspred > 0.4, df_result$real))

Las redes neuronales se convierten en la segunda mejor forma de afrontar este tipo de problemas.

Este fue el estado de las redes neuronales desde 1986 hasta, más o menos, 2006. Las redes neuronales funcionaban mejor que antes, y aunque no era la mejor forma de enfrentar los problemas relacionados con el machine learning, funcionaba bastante bien.

¿Qué te pareció este post?

Las redes neuronales y el tema del backpropagation van mucho más allá de lo que te hemos expuesto en este artículo. Por eso, si quieres seguir aprendiendo, no olvides revisar nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, una formación intensiva en la que adquirirás todas las herramientas teóricas y prácticas, así como los conocimientos necesarios para incursionar en el mundo del Big Data. ¡Anímate a cambiar tu vida y destacar en el sector IT y solicita ahora mismo más información!

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado