Derivado de la función ReLU en Python
ReLU significa Función de activación lineal rectificada, que es la alternativa más popular de función de activación en el ámbito del aprendizaje profundo. ReLU es una parte de la función lineal que generará la entrada igual si el valor de entrada es positivo; si no, dará la salida cero.
Este artículo indica cómo hacer una derivada de la función ReLU usando el lenguaje de programación Python.
Implementar la función ReLU en Python
Como función matemática, podemos definir la función ReLU de la siguiente manera:
f(x) = max(0,x)
Esta función es lineal con respecto a x
y genera cero para todos los valores negativos.
El siguiente pseudocódigo representa la función ReLU.
if input > 0:
return input
else:
return 0
Como el pseudocódigo anterior, podemos construir nuestra implementación de la función ReLU de la siguiente manera:
import numpy as nm
def relu_func(x):
return nm.maximum(0, x)
print(relu_func(2))
print(relu_func(0))
print(relu_func(0.1))
print(relu_func(-3))
Considerando este ejemplo, definió la función relu_func
con el parámetro x
. Esta función devuelve la salida considerando la función ReLU.
Pasamos un solo entero a la vez a la función relu_func
como argumento.
La función maximum()
devuelve el valor más alto. Si el entero es mayor que 0, imprimirá el mismo entero que la entrada; si no, imprime cero.
Entonces, la función ReLU que hemos implementado en el código anterior funcionará con cualquier número entero; también con arreglos numpy
.
Podemos obtener la salida de la siguiente manera:
Derivado de la función ReLU en Python
La derivada de la función ReLU, en caso contrario, se llama gradiente de ReLu. La derivada de la función es la pendiente.
Si creamos un gráfico, por ejemplo, y= ReLu(x)
, y x
es mayor que cero, el gradiente es 1
.
Si x
es menor que cero, el gradiente es 0
. Si x = 0
, la derivada no existe.
La derivada matemática de la función ReLu se puede definir de la siguiente manera:
f'(x) = 1, x >= 0
= 0, x < 0
Podemos aplicar la derivada de la función ReLu a la gráfica. Entonces, veamos el siguiente ejemplo.
# %matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
# define relu function
def relu_func(z):
return np.maximum(0, z)
z = np.arange(-3, 5, 1)
print(z)
Y = relu_func(z)
print(Y)
plt.plot(z, Y, "o-")
plt.xlabel("X")
plt.ylabel("F(x)")
plt.grid()
Se define como relu_func
pasando el parámetro z
teniendo en cuenta el código anterior. Bajo esta función, devolvemos la función relu
y la variable z
definida para obtener el rango del eje x.
También se definió la variable Y
definida para pasar relu_func
con un parámetro. La función relu_func(Z)
calcula el reLU para todos los valores z
.
Por lo tanto, todos los valores negativos denotarán un cero. La gráfica del eje x es X
con la gráfica del eje y es F(x)
.
El siguiente gráfico es el resultado que obtenemos del código anterior.
Como se mencionó, derivada significa la pendiente del gráfico en un punto determinado. Entonces, la pendiente de x=1
es 1.
Todos los demás puntos mayores que 0 obtienen una pendiente de 1. Sin embargo, ¿cuál es la pendiente de x=-3
?
Podemos ver que no hay pendiente para ese punto.
Todos los demás puntos menores que 0 obtienen pendiente ninguno, lo que significa pendiente 0. Por lo tanto, esto se denomina el lenguaje de programación Python integrado y derivado de la función ReLu.
Conclusión
Este artículo indica cómo implementar la función ReLu en Python y analiza principalmente cómo implementar la función derivada de ReLu. La función ReLU se usa con frecuencia en el aprendizaje profundo.
Pero tiene algunos problemas. Por ejemplo, si el valor de entrada es menor que 0, la salida será 0.
Por lo tanto, la red neuronal no puede continuar con algunos trabajos. Como solución para esto, utiliza principalmente la función Leaky ReLU.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.