Existe alguma orientação geral sobre onde colocar camadas de dropout em uma rede neural?
neural-networks
dropout
Franck Dernoncourt
fonte
fonte
Respostas:
No artigo original que propôs camadas de abandono, por Hinton (2012) , o abandono (com p = 0,5) foi usado em cada uma das camadas (densas) totalmente conectadas antes da saída; não foi usado nas camadas convolucionais. Essa se tornou a configuração mais usada.
Pesquisas mais recentes mostraram algum valor na aplicação do abandono também em camadas convolucionais, embora em níveis muito mais baixos: p = 0,1 ou 0,2. O abandono foi utilizado após a função de ativação de cada camada convolucional: CONV-> RELU-> DROP.
fonte
relu
ativação seguida por uma camada de pool máximo, a camada de abandono (2D) deve ir imediatamente após a convolução, ou após a camada de pool máximo, ou ambas, ou isso não importa?RELU
em cada camada CONV. Não acredito que eles tenham investigado o efeito da adição de desistências após o máximo de camadas de pool.Na frente de todas as projeções lineares. Consulte Srivastava et al. (2014) .
fonte
O documento original propunha camadas de abandono que eram usadas em cada uma das camadas (densas) totalmente conectadas antes da saída; não foi usado nas camadas convolucionais.
Não devemos usar a camada de eliminação após a camada convolucional. Ao deslizar o filtro sobre a largura e a altura da imagem de entrada, produzimos um mapa de ativação bidimensional que fornece as respostas desse filtro em todas as posições espaciais. Assim, à medida que a camada de abandono neutraliza (torna zero) os neurônios aleatórios, há chances de perder recursos muito importantes em uma imagem em nosso processo de treinamento.
fonte
Se não estou errado, você pode adicioná-lo após a não linearidade de cada célula:
A primeira linha é a função de ativação e a última é a adição do dropout ao resultado. Por favor, consulte este blog . Espero que isto ajude.
Ou você pode colocá-lo na incorporação de entrada como neste trecho:
Fonte: https://github.com/spro/practical-pytorch/blob/master/seq2seq-translation/seq2seq-translation.ipynb
Tecnicamente, você pode adicionar a camada de eliminação no final de um bloco, por exemplo, após a convolução ou após a codificação RNN.
fonte