Redes neuronales: Funciones de activación

En el ejercicio anterior, se vio que simplemente agregar capas ocultas a nuestra red no era suficiente para representar no linealidades. Las operaciones lineales realizadas sobre operaciones lineales siguen siendo lineales.

¿Cómo se puede configurar una red neuronal para aprender relaciones no lineales entre valores? Necesitamos una forma de insertar operaciones matemáticas no lineales en un modelo.

Si esto le resulta familiar, es porque ya hemos aplicado operaciones matemáticas no lineales al resultado de un modelo lineal anteriormente en el curso. En el módulo de Regresión Logística , adaptamos un modelo de regresión lineal para generar un valor continuo de 0 a 1 (que representa una probabilidad) pasando el resultado del modelo a través de una función sigmoidea .

Podemos aplicar el mismo principio a nuestra red neuronal. Repasemos el modelo del Ejercicio 2 , pero esta vez, antes de generar el valor de cada nodo, aplicaremos la función sigmoidea:

Intente realizar los cálculos de cada nodo haciendo clic en el botón >| (a la derecha del botón de reproducción). Revise las operaciones matemáticas realizadas para calcular el valor de cada nodo en el panel Cálculos, debajo del gráfico. Observe que la salida de cada nodo ahora es una transformada sigmoidea de la combinación lineal de los nodos de la capa anterior, y que todos los valores de salida están comprimidos entre 0 y 1.

Aquí, la sigmoide sirve como una función de activación para la red neuronal, una transformación no lineal del valor de salida de una neurona antes de que el valor pase como entrada a los cálculos de la siguiente capa de la red neuronal.

Ahora que hemos añadido una función de activación, añadir capas tiene un mayor impacto. Apilar no linealidades sobre no linealidades nos permite modelar relaciones muy complejas entre las entradas y las salidas previstas. En resumen, cada capa aprende efectivamente una función más compleja y de mayor nivel sobre las entradas sin procesar. Si desea comprender mejor cómo funciona esto, consulte la excelente entrada del blog de Chris Olah .

Funciones de activación comunes

Tres funciones matemáticas que se utilizan comúnmente como funciones de activación son sigmoide, tanh y ReLU.

La función sigmoidea (discutida anteriormente) realiza la siguiente transformación en la entrada $x$, produciendo un valor de salida entre 0 y 1:

\[F(x)=\frac{1} {1+e^{-x}}\]

Aquí hay un gráfico de esta función:

Figura 4. Gráfica de la función sigmoidea: una curva en forma de S que se aproxima asintóticamente al eje x cuando x tiende a menos infinito y a 1 cuando x tiende a infinito.
Figura 4. Gráfico de la función sigmoidea.

La función tanh (abreviatura de "tangente hiperbólica") transforma la entrada $x$ para producir un valor de salida entre –1 y 1:

\[F(x)=tanh(x)\]

Aquí hay un gráfico de esta función:

Figura 5. Gráfica de la función tanh: una curva en forma de S ligeramente más pronunciada que la función sigmoidea, que tiende asintóticamente a –1 cuando x tiende a menos infinito y a 1 cuando x tiende a infinito.
Figura 5. Gráfico de la función tanh.

La función de activación de la unidad lineal rectificada (o ReLU , por sus siglas en inglés) transforma la salida utilizando el siguiente algoritmo:

  • Si el valor de entrada $x$ es menor que 0, devuelve 0.
  • Si el valor de entrada $x$ es mayor o igual a 0, devuelve el valor de entrada.

ReLU se puede representar matemáticamente utilizando la función max():

$$F(x)=max(0,x)$$

Aquí hay un gráfico de esta función:

Figura 6. Representación gráfica de la función ReLU: una línea horizontal a lo largo del eje x desde -infinito hasta 0, que se convierte en una línea diagonal ascendente y hacia la derecha con pendiente 1 (y=x) desde 0 hasta infinito.
Figura 6. Gráfico de la función ReLU.

ReLU suele funcionar mejor como función de activación que una función suave como la sigmoidea o la tangente, ya que es menos susceptible al problema del gradiente de desaparición durante el entrenamiento de redes neuronales . ReLU también es mucho más fácil de calcular que estas funciones.

Otras funciones de activación

En la práctica, cualquier función matemática puede servir como función de activación. Supongamos que \(\sigma\) Representa nuestra función de activación. El valor de un nodo en la red se obtiene mediante la siguiente fórmula:

$$\sigma(\boldsymbol w \cdot \boldsymbol x+b)$$

Keras ofrece compatibilidad inmediata con muchas funciones de activación . Aun así, recomendamos empezar con ReLU.

Resumen

El siguiente vídeo ofrece un resumen de todo lo que ha aprendido hasta ahora sobre cómo se construyen las redes neuronales:

Ahora nuestro modelo tiene todos los componentes estándar de lo que la gente suele querer decir cuando se refiere a una red neuronal:

  • Un conjunto de nodos, análogos a las neuronas, organizados en capas.
  • Un conjunto de pesos y sesgos aprendidos que representan las conexiones entre cada capa de la red neuronal y la capa inferior. Esta capa puede ser otra capa de la red neuronal o algún otro tipo de capa.
  • Una función de activación que transforma la salida de cada nodo de una capa. Cada capa puede tener distintas funciones de activación.

Una advertencia: las redes neuronales no son necesariamente siempre mejores que los cruces de características, pero ofrecen una alternativa flexible que funciona bien en muchos casos.