El uso de derivados en redes neuronales es para el proceso de entrenamiento llamado retropropagación . Esta técnica utiliza el descenso de gradiente para encontrar un conjunto óptimo de parámetros del modelo con el fin de minimizar una función de pérdida. En su ejemplo, debe usar la derivada de un sigmoide porque esa es la activación que están usando sus neuronas individuales.
La función de pérdida
La esencia del aprendizaje automático es optimizar una función de costo de manera que podamos minimizar o maximizar alguna función objetivo. Esto generalmente se llama la función de pérdida o costo. Por lo general, queremos minimizar esta función. La función de costo, , asocia una penalización basada en los errores resultantes al pasar datos a través de su modelo en función de los parámetros del modelo.C
Veamos el ejemplo en el que intentamos etiquetar si una imagen contiene un gato o un perro. Si tenemos un modelo perfecto, podemos darle una imagen al modelo y nos dirá si es un gato o un perro. Sin embargo, ningún modelo es perfecto y cometerá errores.
Cuando entrenamos nuestro modelo para poder inferir el significado de los datos de entrada, queremos minimizar la cantidad de errores que comete. Por lo tanto, utilizamos un conjunto de entrenamiento, estos datos contienen muchas imágenes de perros y gatos y tenemos la etiqueta de verdad básica asociada con esa imagen. Cada vez que ejecutamos una iteración de entrenamiento del modelo, calculamos el costo (la cantidad de errores) del modelo. Queremos minimizar este costo.
Existen muchas funciones de costo, cada una de las cuales cumple su propio propósito. Una función de costo común que se usa es el costo cuadrático que se define como
.C=1N∑Ni=0(y^−y)2
Este es el cuadrado de la diferencia entre la etiqueta predicha y la etiqueta de verdad básica para el imágenes sobre las que hemos entrenado. Queremos minimizar esto de alguna manera.N
Minimizando una función de pérdida
De hecho, la mayoría del aprendizaje automático es simplemente una familia de marcos que son capaces de determinar una distribución minimizando alguna función de costo. La pregunta que podemos hacer es "¿cómo podemos minimizar una función"?
Minimicemos la siguiente función
y= x2- 4 x + 6 .
Si trazamos esto, podemos ver que hay un mínimo en . Para hacer esto analíticamente podemos tomar la derivada de esta función comox = 2
reyreX= 2 x - 4 = 0
x = 2 .
Sin embargo, muchas veces encontrar un mínimo global analíticamente no es factible. Entonces, en cambio, usamos algunas técnicas de optimización. Aquí también existen muchas formas diferentes, tales como: Newton-Raphson, búsqueda de cuadrícula, etc. Entre ellas está el descenso de gradiente . Esta es la técnica utilizada por las redes neuronales.
Descenso de gradiente
Usemos una analogía famosa para entender esto. Imagine un problema de minimización en 2D. Esto es equivalente a estar en una caminata montañosa en el desierto. Desea volver a la aldea que sabe que está en el punto más bajo. Incluso si no conoce las direcciones cardinales de la aldea. Todo lo que necesitas hacer es tomar el camino más empinado hacia abajo y llegarás al pueblo. Entonces descenderemos por la superficie en función de la pendiente de la pendiente.
Tomemos nuestra función
y= x2- 4 x + 6
determinaremos la para la cualX se minimiza. El algoritmo de descenso de gradiente primero dice que elegiremos un valor aleatorio para x . Inicialicemos en x = 8 . Luego, el algoritmo hará lo siguiente de forma iterativa hasta que alcancemos la convergencia.yXx = 8
Xn e w= xo l d- νreyreX
donde es la tasa de aprendizaje, podemos establecer esto en el valor que queramos. Sin embargo, hay una forma inteligente de elegir esto. Demasiado grande y nunca alcanzaremos nuestro valor mínimo, y demasiado grande desperdiciaremos mucho tiempo antes de llegar allí. Es análogo al tamaño de los escalones que desea bajar por la pendiente empinada. Pequeños pasos y morirás en la montaña, nunca bajarás. Un paso demasiado grande y te arriesgas a disparar al pueblo y terminar al otro lado de la montaña. La derivada es el medio por el cual viajamos por esta pendiente hacia nuestro mínimo.ν
reyreX= 2 x - 4
ν= 0.1
Iteración 1:
x n e w = 6.8 - 0.1 ( 2 ∗ 6.8 - 4 ) = 5.84 x n e w = 5.84 - 0.1 ( 2 ∗ 5.84 - 4 ) = 5.07 x ( 2 ∗ 5.07 - 4 )Xn e w= 8 - 0.1 ( 2 ∗ 8 - 4 ) = 6.8
Xn e w=6.8−0.1(2∗6.8−4)=5.84
Xnortee w= 5.84 - 0.1 ( 2 ∗ 5.84 - 4 ) = 5.07
x n e w = 4.45 - 0.1 ( 2 ∗ 4.45 - 4 ) = 3.96 x n e w = 3.96 - 0.1 ( 2 ∗ 3.96 - 4 ) = 3.57 x n e w = 3.57 - 0.1 ( 2 ∗ 3.57 - 4 )Xn e w= 5.07 - 0.1 ( 2 ∗ 5.07 - 4 ) = 4.45
Xn e w=4.45−0.1(2∗4.45−4)=3.96
xnew=3.96−0.1(2∗3.96−4)=3.57
x n e w = 3.25 - 0.1 ( 2 ∗ 3.25 x n e w =xnew=3.57−0.1(2∗3.57−4)=3.25
x n e w = 3.00 - 0.1 ( 2 ∗ 3.00 - 4 ) = 2.80 x n e w = 2.80 - 0.1 ( 2 ∗ 2.80 - 4 ) = 2.64xnew=3.25−0.1(2∗3.25−4)=3.00
xnew=3.00−0.1(2∗3.00−4)=2.80
xnew=2.80−0.1(2∗2.80−4)=2.64
x n e w = 2.51 - 0.1 ( 2 ∗ 2.51 - 4 ) = 2.41 x n e w = 2.41 - 0.1 ( 2 ∗ 2.41 - 4 ) = 2.32 x n e w = 2.32 - 0.1 ( 2 ∗ 2.32xnew=2.64−0.1(2∗2.64−4)=2.51
xnew=2.51−0.1(2∗2.51−4)=2.41
xnorteew= 2.41 - 0.1 ( 2 ∗ 2.41 - 4 ) = 2.32
x n e w = 2.26 - 0.1 ( 2 ∗ 2.26 - 4 ) = 2.21 x n e w =Xn e w= 2.32 - 0.1 ( 2 ∗ 2.32 - 4 ) = 2.26
Xn e w= 2.26 - 0.1 ( 2 ∗ 2.26 - 4 ) = 2.21
x n e w = 2.16 - 0.1 ( 2 ∗ 2,16 - 4 ) = 2,13 x nXn e w=2.21−0.1(2∗2.21−4)=2.16
xnew=2.16−0.1(2∗2.16−4)=2.13
x n e w =2.10-0.1(2∗2.10-4)=2.08 x n e w =2.08-0.1(2∗2.08-4)=2.06 x n e w =2.06-0.1(xnew=2.13−0.1(2∗2.13−4)=2.10
xnew=2.10−0.1(2∗2.10−4)=2.08
xnew=2.08−0.1(2∗2.08−4)=2.06
x n e w = 2.05 - 0.1 ( 2 ∗ 2.05 - 4 ) = 2.04 x n e w = 2.04 - 0.1 ( 2 ∗ 2.04 -xnew=2.06−0.1(2∗2.06−4)=2.05
xnew=2.05−0.1(2∗2.05−4)=2.04
x n e w = 2.03 - 0.1 ( 2 ∗ 2.03 - 4 ) =xnew=2.04−0.1(2∗2.04−4)=2.03
x n e w = 2.02 - 0.1 ( 2 ∗ 2.02 - 4 ) = 2.02 x n e w = 2.02 - 0.1 ( 2 ∗ 2.02 - 4 ) = 2.01 x n e w = 2.01 - 0.1 ( 2xnew=2.03−0.1(2∗2.03−4)=2.02
xnew=2.02−0.1(2∗2.02−4)=2.02
xnew=2.02−0.1(2∗2.02−4)=2.01
x n e w = 2.01xnew=2.01−0.1(2∗2.01−4)=2.01
x n e w = 2.01 - 0.1 ( 2 ∗ 2.01 - 4 ) = 2.00 x n e w = 2.00 - 0.1 ( 2 ∗ 2.00 - 4 ) = 2.00 x n e w = 2.00 - 0.1 ( 2 ∗ 2.00 -xnew=2.01−0.1(2∗2.01−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
x n e w = 2.00 - 0.1 ( 2 ∗ 2.00 - 4 ) = 2.00 x n e w = 2.00 - 0.1 ( 2 ∗ 2.00 - 4 ) = 2.00xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
¡Y vemos que el algoritmo converge en ! Hemos encontrado el mínimo.x=2
Aplicado a redes neuronales
xy^ . Una función común utilizada es la función sigmoidea
σ(z)=11+exp(z)
y^(wTx)=11+exp(wTx+b)
where w is the associated weight for each input x and we have a bias b. We then want to minimize our cost function
C=12N∑Ni=0(y^−y)2.
How to train the neural network?
We will use gradient descent to train the weights based on the output of the sigmoid function and we will use some cost function C and train on batches of data of size N.
C=12N∑Ni(y^−y)2
y^ is the predicted class obtained from the sigmoid function and y is the ground truth label. We will use gradient descent to minimize the cost function with respect to the weights w. To make life easier we will split the derivative as follows
∂C∂w=∂C∂y^∂y^∂w.
∂C∂y^=y^−y
and we have that y^=σ(wTx) and the derivative of the sigmoid function is ∂σ(z)∂z=σ(z)(1−σ(z)) thus we have,
∂y^∂w=11+exp(wTx+b)(1−11+exp(wTx+b)).
So we can then update the weights through gradient descent as
wnew=wold−η∂C∂w
where η is the learning rate.