Las ecuaciones que aprenden: las matemáticas de las redes neuronales
Escrito por Gustavo Plaza Roma para $``\textbf{pa-ciencia}''$.
Las redes neuronales han emergido como una fuerza revolucionaria hoy en día y están redefiniendo la forma en que interactuamos con la tecnología y han demostrado ser la clave para desbloquear nuevas dimensiones de la innovación y el progreso en nuestra sociedad cada vez más digitalizada.
Las redes neuronales son modelos
informáticos que imitan la arquitectura y el funcionamiento de las redes
neurales biológicas. Compuestas por capas de nodos interconectados, estas
estructuras son capaces de aprender y adaptarse a partir de datos, permitiendo
a las máquinas realizar tareas que antes solo parecían posibles para la mente
humana.
Esta tecnología es ampliamente usada
hoy en día, desde la clasificación de imágenes hasta la traducción de idiomas,
estas redes aprenden patrones complejos y se adaptan continuamente para mejorar
su rendimiento. En el ámbito de la salud, las redes neuronales están acelerando
los diagnósticos y tratamientos. Desde la interpretación de imágenes médicas
hasta la identificación de patrones genéticos, estas tecnologías están
impulsando avances significativos en la atención médica personalizada y la
investigación biomédica.
Matemáticas en las redes neuronales
El
uso de conceptos matemáticos es esencial para entender los fundamentos teóricos
y prácticos detrás del funcionamiento de las redes neuronales. La comprensión
de las ecuaciones matemáticas utilizadas en las redes neuronales, como la
función de activación, la función de coste y el algoritmo de retropropagación,
es crucial para diseñar e implementar estas redes de manera efectiva. Las redes
neuronales usan una arquitectura de aprendizaje que se inspira en el
funcionamiento del cerebro humano y están compuestas por miles o incluso
millones de "neuronas" artificiales interconectadas.
A
continuación, veremos los distintos componentes de una red neuronal y algún
ejemplo práctico. Empecemos con las neuronas.
Neuronas artificiales
Las neuronas son el principal elemento de la red neuronal y se basan en el modelo matemático de las células nerviosas biológicas. Cada neurona recive una serei de entradas y genera una salida. La operación que realiza cada neurona es la suma ponderada seguida de una función de activación. Esto se puede expresar matemáticamente de la siguiente manera:
$$y=f\left(\sum_{i}{\omega_ix_i}+b\right)$$
Donde:
$y$ es la salida de la neurona.
$f$ es la función de activación, que introduce no linealidad en la red.
$\omega_i$ son los
pesos de las conexiones entre la neurona y las neuronas de la capa anterior.
$x_i$ son las
salidas de las neuronas en la capa anterior.
$b$ es el sesgo de la neurona.
El
sesgo es un componente adicional de cada neurona cuya función principal es
desplazar el resultado obtenido a través de la función de activación, lo que
permite una mayor flexibilidad en la representación de los patrones de entrada.
Se puede considerar como un peso adicional que se agrega a la entrada de cada
neurona, que se puede ajustar durante el entrenamiento de la red neuronal.
La salida de cada neurona sirve de entrada para las neuronas de capa siguiente. Por último, la salida de la última capa de neuronas es considerada como la salida final de la red neuronal. El cálculo de los valores que toma la salida de cada neurona según los pesos de esta y la salida de la red se denomina “forward propagation”.
Las redes están compuestas por capas y cada una de esas capas está compuesta por neuronas.
Retropropagación
La
retropropagación es el algoritmo clave para recalcular los pesos de cada una de
las neuronas de la red. Se utiliza este algoritmo para ajustar los pesos y
minimizar la función de coste de la red con el objetivo de mejorar el rendimiento
de la red.
En
primer lugar, la red genera predicciones a partir de un conjunto de datos de
entrada, estas predicciones se comparan con los valores de salida esperados y
se calcula un error. La función de coste, que mide este error, se denota como
El objetivo es encontrar cómo pequeñas variaciones en los pesos y sesgo de las neuronas puede afectar a la función de coste para calcular se usan derivadas parciales.
La derivada $\frac{\partial C}{\partial\omega_i}$ mide cómo cambia la función de coste en función el peso $\omega_i$ de una neurona y de manera similar se puede calcular cómo cambia con respecto al sesgo usando $\frac{\partial C}{\partial b}$.
Estas derivadas se agrupan en lo que se conoce como vector gradiente $\nabla C$. Este vector contiene las derivadas parciles de la función de coste con respecto a los pesos de las neuronas y los sesgos.
Retropropagación
de los Errores
La retropropagación empieza desde la capa de salida y se mueve hacia atrás a través de la red. Para la capa de salida se calcula directamente $\frac{\partial C}{\partial\omega_i}$ y, $\frac{\partial C}{\partial b}$ a partir del error obtenido con respecto a la predicción y las derivadas de la función de activación de esa neurona. La retropropagación en un proceso muy importante para que las redes aprendan a partir de los datos. Según los errores se retropropagan, la red ajusta los pesos permitiendo que se adapte a los patrones de los datos de entrenamiento.
Actualización de pesos
Una vez se han calculado los gradientes, se usa un algoritmo de optimización como el descenso de gradiente para actualizar los pesos.
Los nuevos valores de los pesos y sesgos se calculan restando el gradiente multiplicado por una tasa de aprendizaje $\eta$ de los valores anteriores:
$$\omega_i\rightarrow\omega_i-\eta\frac{\partial C}{\partial\omega_i}$$ $$b\rightarrow b-\eta\frac{\partial C}{\partial b}$$Replicación
del proceso
Los pasos anteriores se repiten iterativamente durante los distintos ciclos de entrenamiento hasta que la función de coste alcance un valor aceptable o esta converja a un valor concreto.
Función
de activación
Las funciones de activación son un elemento muy importante de la neurona, estas funciones introducen la no linealidad al modelo haciendo que la red pueda aprender a partir de los datos. Algunas de las funciones de activaciones son: la función sigmoide que se ha ido usando cada vez menos ya que su derivada tiende a cero cuando los valores de entrada son muy pequeños o grandes. La función ReLU que es simple de calcular y es la función de activación más utilizada en la actualidad. Y la función tangente hiperbólica que es útil en redes que requieren salidas en un rango simétrico alrededor de cero, también ayuda a mitigar el problema de desvanecimiento de gradientes en comparación con la función sigmoide.
Ejemplo
numérico
En el siguiente ejemplo vamos a construir una red neuronal muy simple, se va a usar para predecir el precio de una casa basada en el número de habitaciones. La función de coste que se va a usar en el valor cuadrático medio, con esto podremos medir el rendimiento de la red.
Arquitectura
de la red
La red va a constar de una capa de entrada de una sola neurona, la entrada de esta neurona es el número de habitaciones. Para crear una red más compleja la red de entrada podría tener más neuronas con otras entradas cómo podría tamaño de la casa.
La capa oculta también cuenta con una neurona con la función de activación ReLU. Y la capa de salida también tiene una neurona cuya salida será la predicción del precio de la casa.
Primero, inicializamos los pesos de manera aleatoria. Supongamos que los pesos iniciales son:
Peso de la conexión entre la capa de entrada y la capa oculta: $\omega_1=0.5$
Peso de la conexión entre la capa oculta y la capa de salida: $\omega_1=-0.2$
Paso 1: Cálcalo de la salida
Calculamos las salidas en cada capa de la red mediante la suma ponderada y la función de activación ReLU.
Para una entrada $x=4$, que representa el número de habitaciones, el cálculo sería:
Capa de Oculta:
Suma Ponderada: $z_1=x\cdot\omega_1=4\cdot0.5=2.0$
Función de Activación ReLU: $a_1=\max\left(0,z_1\right)=\max\left(0,2.0\right)=2.0$
Capa de Salida:
Suma Ponderada: $z_2=a_1\cdot\omega_2=2.0\cdot\left(-0.2\right)=-0.4$
Calculamos el error utilizando la función de coste (mínimos cuadrados) y luego calculamos los gradientes en las capas de salida y oculta.
Supongamos que el valor real del precio de la casa es $$y_{real}=150,000$$
Error: $E=\frac{1}{2}\cdot\left(z_2-y_{real}\right)^2=\frac{1}{2}\cdot\left(-0.4-150,000\right)^2$
A continuación, calculamos los gradientes:
Gradiente en la Capa de Salida:
$$\frac{\partial E}{\partial z_2}=\frac{1}{2}\left(z_2-y_{real}\right)^2=\frac{1}{2}\cdot\left(-0.4-150,000\right)^2$$Gradiente en la Capa Oculta:
$$\frac{\partial E}{\partial z_1}=\frac{\partial E}{\partial a_1}\cdot\frac{\partial a_1}{\partial z_1}$$Dado que $a_1=2.0$ y la derivada de ReLU es 1 cuando $z_1>0$ y 0 en otros casos:
$$\frac{\partial a_1}{\partial z_1}=1\ \text{(debido a que }z_1>0)$$Entonces:
$$\frac{\partial E}{\partial z_1}=\frac{\partial E}{\partial a_1}\cdot\frac{\partial a_1}{\partial z_1}=\left(-0.4-150,000\right)\cdot1$$Paso 4: Actualización de pesos
$$\omega_1=\omega_1-\eta\frac{\partial E}{\partial z_1}=0.5-0.001\cdot(-0.4-150,000)$$
Interesante!!!
ResponderEliminar