Caso Práctico: Funciones de activación RNAs¶

Enunciado y contexto del ejercicio¶

Las funciones de activación se corresponden con una serie de funciones matemáticas que se utilizan en la mayoría de los algoritmos de Deep Learning para realizar transformaciones sobre las entradas que reciben las neuronas artificiales que forman parte de una red neuronal artificial.

En este ejercicio práctico se propone la implementación en Python 3 de tres de las funciones de activación más populares en el diseño de redes neuronales artificiales profundas, las funciones ReLu, Sigmoid y Tanh.

¡Completa todos los apartados que se muestran a continuación para conseguir implementar estas funciones!

1. Función de activación ReLu¶

La función de activación ReLu), viene determinada por la siguiente expresión matemática:

$${\displaystyle f(x)=\max(0,x)}$$
Crea una función en Python que calcule el resultado de aplicar la función ReLu sobre una entrada x. Ten en cuenta que x debe ser considerado un valor numérico.

Pista: Cuando termines de programar la función, comprueba si el resultado es correcto utilizando la gráfica que se muestra a continuación.

image.png

In [5]:
def relu(x):
    """Calcula el resultado de la funcion matematica ReLu."""
    return max(0, x)
In [2]:
relu(0)
Out[2]:
0
In [3]:
relu(-10)
Out[3]:
0
In [4]:
relu(5)
Out[4]:
5

2. Función de activación Sigmoid¶

La función de activación Sigmoid, viene determinada por la siguiente expresión matemática:

$${\displaystyle f(x)={\frac {1}{1+e^{-x}}}}$$
Crea una función en Python que calcule el resultado de aplicar la función Sigmoid sobre una entrada x. Ten en cuenta que x debe ser considerado un valor numérico.

Pista: Cuando termines de programar la función, comprueba si el resultado es correcto utilizando la gráfica que se muestra a continuación.

image.png

Pista 2: Como puedes observar en la fórmula anterior, para calcular la función Sigmoid necesitas conocer el valor de la constante de Euler, representada mediante la letra e. Python no incorpora esta constante por defecto, pero puedes importarla con la sentencia que se muestra a continuación.

In [6]:
from math import e
In [7]:
print(e)
2.718281828459045
In [9]:
def sigmoid(x):
    """Calcula el resultado de la función matemática Sigmoid."""
    return 1 / (1 + e**-x)
In [10]:
sigmoid(0)
Out[10]:
0.5
In [11]:
sigmoid(5)
Out[11]:
0.9933071490757153
In [12]:
sigmoid(-2.5)
Out[12]:
0.07585818002124356

3. Función de activación Tanh¶

La función de activación Tanh, viene determinada por la siguiente expresión matemática:

$$\tanh(x) = \frac {\sinh(x)} {\cosh(x)}$$

Como puedes observar, para implementar la función Tanh, primero tienes que implementar las funciones:

Sinh:¶

$$\sinh(x) = \frac {e^{x} - e^{-x}} {2}$$

Cosh:¶

$$\cosh(x) = \frac {e^{x} + e^{-x}} {2}$$
Crea una función en Python que calcule el resultado de aplicar la función Tanh sobre una entrada x. Ten en cuenta que x debe ser considerado un valor numérico.

Pista: Cuando termines de programar la función, comprueba si el resultado es correcto utilizando la gráfica que se muestra a continuación.

image-2.png

Pista 2: Como puedes observar en la fórmula anterior, para calcular la función Sigmoid necesitas conocer el valor de la constante de Euler, representada mediante la letra e. Python no incorpora esta constante por defecto, pero puedes importarla con la sentencia que se muestra a continuación.

In [6]:
from math import e
In [7]:
print(e)
2.718281828459045
In [13]:
def sinh(x):
    """Calcula el resultado de la función matemática sinh."""
    return (e**x - e**-x) / 2
In [14]:
def cosh(x):
    """Calcula el resultado de la funcion matematica cosh."""
    return (e**x + e**-x) / 2
In [15]:
def tanh(x):
    """Calcula el resultado de la funcion matematica tanh"""
    return sinh(x) / cosh(x)
In [16]:
tanh(0)
Out[16]:
0.0
In [17]:
tanh(-10)
Out[17]:
-0.9999999958776926
In [19]:
tanh(1)
Out[19]:
0.7615941559557649
In [ ]: