Funciones de Activación en Redes Neuronales

Función tangente hyperbolica

Las funciones de activación se encuentran en los nodos o neuronas de las redes neuronales y definen su salida dada una entrada o un conjunto de entradas. Son usadas en las redes neuronales para ayudar a la red a aprender patrones de entrada. Estas funciones cogen el output de la neurona anterior y lo convierten en algo que la neurona siguiente pueda coger cómo su input.

Normalmente las funciones de activación, no son lineales y eso permite que la red neuronal aprenda distribuciones más complejas que con una función lineal.

Aun así, también hay funciones de activación lineales. Un primer enfoque sería usar sencillamente un umbral para decidir si activar o no esa neurona. Esto se llama step function y su funcionamiento es muy sencillo, si el valor de Y es mayor que un valor concreto, la neurona se declara activada y si el valor de Y es menor que ese valor, la neurona queda desactivada.

Si el valor es igual a cero la neurona seguirá sin estar activada. Una vez vista su aplicabilidad aquí aparece un problema. Esta función sólo dice si la neurona está activada o no y, para que la red funcionará de manera más suave y aprendiera mejor, se necesitan funciones que den más valores y no una activación binaria: activada o no.

Por esa razón, la siguiente función que se verá es la función lineal. Básicamente se puede observar que es una línea recta dónde la activación será proporcional al input, que será la suma ponderada de la neurona. Esto da un rango de valores y activaciones y por tanto, no es una activación binaria como en la step function, que ya es una mejora.

El problema con esta función de activación es que su derivada es una constante. La derivada de Y respecto X es M, por lo tanto, el gradiente no tiene ninguna relación con X. Es un gradiente constante. Si hay un error en la predicción, los cambios realizados por el algoritmo de backpropagation son constantes y no dependientes del cambio en el input, por otro lado, otro inconveniente con esta función. Es que cada neurona tiene una función de activación lineal por esta razón la neurona siguiente a una neurona activada también tendrá otra activación lineal de la anterior. Así, la última neurona, independientemente del número de layers, si todas las neuronas son lineales, la última función de activación será solamente una transformación lineal del input del primer layer. Esto quiere decir que, N layers pueden ser sustituidos por un solo layer, toda la red neuronal es equivalente a un solo layer con una función de activación lineal,

Por esta razón, aparecen las funciones no lineales,  para poder sacar provecho de múltiples layers y permitir que las redes neuronales aprendan patrones y distribuciones más complejas. 

La primera función no lineal es la Sigmoid. Su expresión matemática se puede ver en la ecuación,. parece una step function pero es más suave, menos abrupta.

Esto hace posibles unir múltiples layers. Por último, el gradiente de esta función no es ni constante ni abrupto, que para la técnica del backpropagation también es un beneficio.

Si se observa cómo influyen los valores del eje horizontal respecto al eje vertical, se puede ver fácilmente que dentro del rango de -2 a 2 en el eje horizontal los cambios en el eje x implican un cambio más abrupto en el eje y. Esto quiere decir que, la función Sigmoid tiende a llevar los valores de y a los extremos de las curvas, calidad que la hace una buena función de activación, ya que tiende a separar correctamente las predicciones haciendo claras distinciones entre ellas. Otra ventaja de esta función de activación es que su output siempre va a estar entre cero y uno, al contrario de la función lineal que podía obtener un valor entre -∞ a +∞. Gracias a esta propiedad, ahora las activaciones están restringidas en un rango.

La función Sigmoid es una de las funciones más utilizadas en la actualidad. Aun así, tampoco es una función perfecta y tiene sus desventajas, los valores de Y cambian abruptamente con cualquier pequeña modificación en los valores de X, intentando llevar siempre los valores de Y a los extremos de la función, dónde es más estable. En esta zona dónde el valor de Y prácticamente no cambia, es decir, la zona casi constante de la función implica que el gradiente en esta región será muy pequeño y esto da lugar al problema del vanishing gradient problem, o problema del desvanecimiento de gradiente.

En este punto se observa que el gradiente es tan pequeño o directamente nulo que no puede hacer ningún cambio significativo y, por tanto, la red no puede seguir aprendiendo o lo hace extremadamente lentamente.

Otra función no lineal muy usada es la función hyperbolic tangent. Si se ve su función matemática en la ecuación  y su representación gráfica en la figura 4, se pueden ver claras similitudes con la función Sigmoid.

Similitudes tan evidentes que se puede decir que la función tanh es una función Sigmoid escalada, como se muestra en la ecuación 

La función tanh tiene un gradiente más fuerte. Por lo tanto, escoger entre Sigmoid o tanh va a ser un problema del tipo de gradiente que se quiera, ya que la función tanh también sufre del vanishing gradient problem. También es una función ampliamente usada actualmente.

La siguiente función que se verá es la rectified linear unit (ReLu). Esta función, cómo se puede ver en la figura 5, da un valor x, si la x es positiva y si no su output es cero.  Si se observa la representación gráfica se puede ver fácilmente que es una función definida a partes y, que la correspondiente a los valores positivos es una función lineal. Por eso, se puede pensar de entrada que va a tener los mismos inconvenientes que una función lineal normal. Es necesario recalcar que, gracias a la definición de la función en los valores negativos de x, la función ReLU no es una función lineal. De hecho, la función ReLU es un muy buen aproximador, ya que cualquier función se puede aproximar con combinaciones de ella.

Si la función ReLU no es lineal, la combinación de múltiples ReLUs sigue sin ser lineal, por lo tanto, se pueden concatenar distintos layers. Otro beneficio de la ReLu es que filtra qué neuronas se activan. Con la función ReLu, al dar el valor cero a todas las neuronas que tengan valores negativos, estas no se activan y hace la red más eficiente.

Uno de los problemas de la ReLU es que no tiene límites fijados. Su rango puede ir de 0 a +∞. Esto quiere decir que, puede que en algún momento haya una intratabilidad de los valores de alguna neurona. También, en la parte de la función donde su valor es cero, el gradiente también será cero y, por lo tanto, los weights no se ajustarán y llegarán a un estado dónde las neuronas ya no responderán a las variaciones del input.

Esto se conoce como el ReLu problem: este problema puede causar la muerte de una parte de la red totalmente pasiva y ajena a los datos de entrada.

Para manejar este problema hay una función llamada Leaky ReLU que es una variación de la ReLu solamente cambiando la línea horizontal de los valores negativos a una línea con un mínimo pendiente. Hay otras variaciones de esta función como la randomized leaky ReLU, entre muchas otras, pero el objetivo final es el mismo: hacer que la parte de valores negativos no sea una constante así se evitará que el gradiente sea cero.

Se puede ver que de las dos funciones, ReLU (izquierda) vs leaky ReLU (derecha), la función ReLU es más computacionalmente eficiente que la Sigmoid o tanh, ya que sus operaciones matemáticas no son tan complejas.

La función Softmax, es una Sigmoid generalizada para multiclase. Similar a la Sigmoid, genera valores en el rango de cero a uno y se usa en los layer finales en problemas de clasificación de multiclase.

Primero que todo es importante repasar las diferencias entre input layer, output layer y hidden layer. Resumidamente: el input layer es la data inicial para la neural network; el hidden layer son los layers intermediarios entre el input y output layer; el output layer es el que genera el resultado de los inputs. Viendo que son diferentes tipos de layers es importante ver que necesitarán diferentes activation functions. Para los hidden layers actualmente la función por defecto en los modelos es la ReLU.

En problemas de regresión se usará una función lineal, ya que es importante que los valores no estén limitados. Para problemas de clasificación se usará la Sigmoid si es un problema de clasificación binario o la Softmax si es un problema de clasificación de multiclase.

Estas opciones serían las clásicas, pero hay muchas maneras de interpretar los resultados de una red neuronal. Si se estudian los mapas probabilísticos puede que el performance funcione mejor usando un threshold o quizás priorizando una clase sobre la otra en la situación de multiclass classification, a diferencia de lo que haría la Softmax. Es importante tener en cuenta que cada caso y método con un objetivo distinto se tiene que tratar de forma única.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *