¿Cómo elegir una función de activación?

13

Elijo la función de activación para la capa de salida en función de la salida que necesito y las propiedades de la función de activación que conozco. Por ejemplo, elijo la función sigmoide cuando trato con probabilidades, una ReLU cuando trato con valores positivos y una función lineal cuando trato con valores generales.

En capas ocultas, uso un ReLU con fugas para evitar las neuronas muertas en lugar del ReLU y el tanh en lugar del sigmoide. Por supuesto, no uso una función lineal en unidades ocultas.

Sin embargo, la elección de ellos en la capa oculta se debe principalmente a prueba y error.

¿Hay alguna regla general de qué función de activación es probable que funcione bien en algunas situaciones? Tome el término situaciones lo más general posible: podría referirse a la profundidad de la capa, a la profundidad del NN, al número de neuronas para esa capa, al optimizador que elegimos, al número de características de entrada de esa capa, a la aplicación de este NN, etc.

En su respuesta , cantordust se refiere a otras funciones de activación que no mencioné, como ELU y SELU. Esta información es más que bienvenida. Sin embargo, cuantas más funciones de activación descubro, más me confundo en la elección de la función para usar en capas ocultas. Y no creo que lanzar una moneda sea una buena forma de elegir una función de activación.

gvgramazio
fuente

Respuestas:

10

Me parece que ya comprende las deficiencias de ReLU y sigmoides (como las neuronas muertas en el caso de ReLU simple). Sugeriría mirar ELU (unidades lineales exponenciales) y SELU (versión auto-normalizadora de ELU). Bajo algunos supuestos leves, estos últimos tienen la buena propiedad de la auto-normalización, lo que mitiga el problema de la desaparición y la explosión de gradientes. Además, propagan la normalización, es decir, garantizan que la entrada a la siguiente capa tendrá media cero y varianza unitaria.

Editar:


Sería increíblemente difícil recomendar una función de activación que funcione para todos los casos de uso (aunque creo que SELU fue diseñado para que haga lo correcto con casi cualquier entrada). Hay muchas consideraciones: cuán difícil es calcular la derivada (¡si es diferenciable en absoluto!), Qué tan rápido converge una red con el AF elegido, qué tan suave es, si cumple las condiciones del teorema de aproximación universal , si conserva la normalización, y así sucesivamente. Puede que le interesen o no algunos o ninguno de ellos.

La conclusión es que no existe una regla universal para elegir una función de activación para capas ocultas. Personalmente, me gusta usar sigmoides (especialmente tanh) porque están muy bien delimitados y son muy rápidos de calcular, pero lo más importante porque funcionan para mis casos de uso . Otros recomiendan ReLU con fugas para la entrada y capas ocultas como una función de acceso si su red no puede aprender. Incluso puede mezclar y combinar funciones de activación para desarrollar redes neuronales para aplicaciones sofisticadas .

Al final del día, es probable que obtenga tantas opiniones como personas sobre la elección correcta de la función de activación, por lo que la respuesta breve probablemente debería ser: comenzar con la FA del día (¿ReLU / SELU con fugas?) y trabaje a través de otros AF para disminuir la popularidad si su red tiene dificultades para aprender algo.

Cantordust
fuente
1
Bien, olvidé la propagación de la normalización. Gracias por recordarme. Sin embargo, la pregunta sigue sin respuesta. ¿Hay una regla o algo para elegir qué funciones de activación debo poner en las capas ocultas? Por simplicidad, solo estoy hablando de capas completamente conectadas. No quiero complicar el tema con convoluciones, agrupaciones, etc.
gvgramazio
@gvgramazio Edité la respuesta, espero que ahora sea un poco más útil.
cantordust
Con la edición, creo que respondió a mi pregunta y proporcionó enlaces interesados ​​(en particular, el de mezclar y combinar ). Lamentablemente no es la respuesta que quería escuchar. Mantendré mi pregunta abierta por unos días más. Si a nadie se le ocurre una respuesta mejor, marcaré la suya como aceptada.
gvgramazio
-1

No sé en qué tipo de redes neuronales estás trabajando. Pero también se deben considerar las funciones de activación de tanh cuando se trata de redes neuronales recurrentes. El motivo es evitar la explosión de problemas de gradiente ya que la función tanh está limitada a la diferencia de la función RELU, por ejemplo.

Alexis
fuente
En la pregunta dije que uso tanh y sigmoid, no solo ReLU. Además, para simplificar, me refiero en general a las capas clásicas ocultas completamente conectadas. Si cree que el hecho de que estamos tratando con una red neuronal recurrente es importante para la elección de la función de activación, explique el motivo. Los fenómenos de explosión / desaparición también pueden ocurrir en redes neuronales no recurrentes.
gvgramazio