Estou estudando e tentando implementar redes neurais convolucionais, mas suponho que essa pergunta se aplique aos perceptrons multicamadas em geral.
Os neurônios de saída em minha rede representam a ativação de cada classe: o neurônio mais ativo corresponde à classe prevista para uma determinada entrada. Para considerar um custo de entropia cruzada para o treinamento, estou adicionando uma camada softmax no final da rede, para que o valor de ativação de cada neurônio seja interpretado como um valor de probabilidade.
Minha pergunta é: os neurônios da camada de saída devem aplicar uma função não linear à entrada? Minha intuição é que não é necessário:
- se a entrada para o -ésimo neurônio de saída for o produto escalar x T θ i entre um vetor x (proveniente da camada anterior) e os pesos θ i para esse neurônio,
- e se eu empregar uma função não linear monotônica como o sigmóide ou o ReLU
- então a saída de ativação maior ainda corresponderá ao maior , portanto, deste ponto de vista, a função não linear não mudaria a previsão.
Há algo de errado com essa interpretação? Existem alguns fatores de treinamento que estou ignorando que tornam a não linearidade da saída necessária?
E se eu estiver certo, algo mudaria se, em vez de usar a função sigmóide, eu usasse a função ReLU , que não é estritamente monotônica?
EDITAR
Com referência à resposta de Karel, cuja resposta foi basicamente "depende", aqui está uma descrição mais detalhada da minha rede e dúvida:
Suponha que eu tenha N camadas ocultas e minha camada de saída seja apenas uma camada softmax sobre um conjunto de neurônios que representam classes (portanto, minha saída esperada é a probabilidade de os dados de entrada pertencerem a cada classe). Supondo que as primeiras camadas N-1 tenham neurônios não-lineares, qual é a diferença entre o uso de neurônios não-lineares e lineares na N-ésima camada oculta?
Respostas:
Você não deve usar uma não linearidade para a última camada antes da classificação softmax. A não linearidade da ReLU (usada agora quase que exclusivamente) neste caso simplesmente descartará informações sem adicionar nenhum benefício adicional. Você pode examinar a implementação caffe do conhecido AlexNet para obter uma referência do que é feito na prática.
fonte
Você pode enviar um valor negativo para a função softmax, para indicar que um evento tem baixa probabilidade. Se você passar os valores de entrada para uma relu, a rede não passará nenhum gradiente pelas unidades em que a entrada na relu é negativa. Portanto, embora o poder expressivo do softmax não seja alterado, provavelmente tornará o aprendizado muito mais difícil.
fonte
A resposta não é sim ou não. Depende fortemente da sua expectativa em relação à sua rede. Presumo que você deseja ter um bom classificador, possivelmente aplicável a uma ampla gama de problemas. Portanto, a não linearidade pode ser útil para capturar classes não triviais. A não linearidade pode ser incluída na última camada antes da camada soft-max ou na camada anterior.
fonte