Estoy estudiando e intentando implementar redes neuronales convolucionales, pero supongo que esta pregunta se aplica a los perceptrones multicapa en general.
Las neuronas de salida en mi red representan la activación de cada clase: la neurona más activa corresponde a la clase predicha para una entrada dada. Para considerar un costo de entropía cruzada para el entrenamiento, estoy agregando una capa softmax al final de la red, para que el valor de activación de cada neurona se interprete como un valor de probabilidad.
Mi pregunta es: ¿deberían las neuronas en la capa de salida aplicar una función no lineal a la entrada? Mi intuición es que no es necesario:
- si la entrada a la neurona de salida -ésima es el producto entre un vector (procedente de la capa anterior) y los pesos para esa neurona,x T θ i x θ i
- y si empleo una función monotónica no lineal como el sigmoide o el ReLU
- entonces la salida de activación más grande seguirá correspondiendo a la , por lo que desde este punto de vista la función no lineal no cambiaría la predicción.
¿Hay algo malo con esta interpretación? ¿Hay algunos factores de entrenamiento que estoy pasando por alto que hacen que la no linealidad de salida sea necesaria?
Y si estoy en lo cierto, ¿cambiaría algo si en lugar de usar la función sigmoideo uso la función ReLU , que no es estrictamente monótona?
EDITAR
Con referencia a la respuesta de Karel, cuya respuesta fue básicamente "depende", aquí hay una descripción más detallada de mi red y dudas:
Supongamos que tengo N capas ocultas, y mi capa de salida es solo una capa softmax sobre un conjunto de neuronas que representan clases (por lo que mi salida esperada es la probabilidad de que los datos de entrada pertenezcan a cada clase). Suponiendo que las primeras capas N-1 tienen neuronas no lineales, ¿cuál es la diferencia entre usar neuronas lineales y no lineales en la enésima capa oculta?
Respuestas:
No debe usar una no linealidad para la última capa antes de la clasificación softmax. La no linealidad de ReLU (utilizada ahora casi exclusivamente) en este caso simplemente arrojará información sin agregar ningún beneficio adicional. Puede ver la implementación caffe de la conocida AlexNet para obtener una referencia de lo que se hace en la práctica.
fuente
Es posible que desee enviar un valor negativo a la función softmax, para indicar que un evento tiene baja probabilidad. Si pasa los valores de entrada a un relu, entonces la red no va a pasar ningún gradiente a través de las unidades donde la entrada al relu es negativa. Entonces, aunque el poder expresivo del softmax no cambia, probablemente hará que el aprendizaje sea mucho más difícil.
fuente
La respuesta no es sí o no. Depende en gran medida de las expectativas que tenga sobre su red. Supongo que desea tener un buen clasificador, posiblemente aplicable a una amplia gama de problemas. Por lo tanto, la no linealidad puede ser útil para capturar clases no triviales. La no linealidad puede incluirse en la última capa antes de la capa soft-max o puede estar en la capa anterior.
fuente