Red neuronal: Matlab utiliza diferentes funciones de activación para diferentes capas, ¿por qué?
He entrenado en matlab una red neuronal artificial con una capa de entrada, una capa oculta y una capa de salida (mi salida son valores entre cero y uno, que convierto en 0 o 1 según un umbral de 0,5).
He notado que, por defecto , matlab usó la función de transferencia 'tansig' para la capa oculta y luego la función de transferencia 'logsig' para la capa de salida . ¿Alguien puede darme una explicación para esto?
¡Gracias de antemano!
Respuestas
La gran idea es que no existe un requisito particular de que todas las capas de una red neuronal utilicen la misma función de activación. Puede mezclar y combinar como desee. Dicho esto, existen algunas razones para preferir usar$\tanh$ como la función de activación de una capa oculta y $\sigma$ como función de salida.
los $\tanh(x)=\frac{\exp(x)-\exp(-x)}{\exp(x)+\exp(-x)}$La función es una función de activación estándar. Usarlo en una red neuronal no es más sorprendente que usar mínimos cuadrados como función objetivo para una tarea de regresión.
La función $\sigma(x)=\frac{1}{1+\exp(-x)}$es una forma estándar de asignar números reales a valores reales en (0,1). Por lo que se usa comúnmente para modelar probabilidades. Dado que su tarea es predecir 0 o 1, el uso de este modelo sugiere modelar la probabilidad de que la muestra esté etiquetada como 1.
Usando un $\tanh$ La función en la última capa no sería plausible, porque no tiene una relación clara con el modelado de la probabilidad de que una muestra esté etiquetada como 1. La función $\tanh$ devuelve valores entre -1 y 1, por lo que no es una probabilidad.
Si lo desea, puede usar $\sigma(x)$como función de activación. Pero$\tanh$Se prefiere porque tener un gradiente más fuerte y dar resultados positivos y negativos facilita la optimización. Ver: función de activación tanh vs función de activación sigmoidea
Pero también tenga en cuenta que ReLU y funciones similares generalmente se prefieren como funciones de activación en capas ocultas. Ver: ¿Cuáles son las ventajas de ReLU sobre la función sigmoidea en redes neuronales profundas?
La elección de usar $\tanh$de forma predeterminada, es probable que se trate más de prácticas de desarrollo de software que de principios matemáticos: cambiar el comportamiento predeterminado del software puede romper el código heredado y provocar un comportamiento inesperado. Las unidades ReLU solo se hicieron populares recientemente , en relación con la edad de MATLAB. El complemento Neural Network Toolbox se publicó por primera vez en 1992 (desde entonces, ha sido rebautizado como "Deep Learning Toolbox"). En 1992, construir una red neuronal era casi sinónimo de una red de una sola capa con$\tanh$ o $\sigma$ funciones de activación.
Pero es poco probable que haya una explicación definitiva de por qué MATLAB eligió este valor predeterminado a menos que publicaran una justificación para esta elección (por ejemplo, notas de la versión o documentación).