Contexto: Ao ajustar redes neurais com ativação relu, descobri que algumas vezes a previsão fica quase constante. Acredito que isso se deva à morte dos neurônios durante o treinamento, conforme indicado aqui. ( Qual é o problema da "ReLU moribunda" nas redes neurais? )
Pergunta: O que eu espero fazer é implementar uma verificação no próprio código para verificar se os neurônios estão mortos. Depois disso, o código poderá reequipar a rede, se necessário.
Como tal, o que é um bom critério para verificar se há neurônios mortos? Atualmente, estou pensando em verificar se há uma baixa variação na previsão como um critério.
Se ajudar, estou usando o keras.
machine-learning
neural-network
keras
Aveiur
fonte
fonte
Respostas:
Uma ReLU morta significa basicamente que seu valor de argumento é negativo, de modo que o gradiente permanece em 0; não importa como você treiná-lo a partir desse ponto. Você pode simplesmente dar uma olhada no gradiente durante o treinamento para ver se uma ReLU está morta ou não.
Na prática, você pode simplesmente querer usar ReLUs com vazamento, ou seja, em vez de f (x) = max (0, x), defina f (x) = x se x> 0 ef (x) = 0,01x se x <= 0 Dessa maneira, você sempre permite um pequeno gradiente diferente de zero e a unidade não deve mais ficar completamente paralisada no treinamento.
fonte
Um neurônio morto é um neurônio que não é atualizado durante o treinamento, ou seja. 0 gradiente.
Keras permite a extração de gradiente diretamente para uma determinada linha de dados. (Outro bom exemplo)
Ou você pode extrair os pesos dos neurônios e calcular o gradiente você mesmo
(por exemplo, para relu, argumento negativo para relu -> 0 gradiente).
Infelizmente, o gradiente é específico do ponto de dados. Somente se o gradiente for 0 para cada linha de dados de treinamento, você poderá ter certeza de que o neurônio não será atualizado para todos os minibatches durante uma época de treinamento.
Relu com vazamento pode ser uma estratégia útil, pois não há valor para relu com vazamento, onde o gradiente é igual a 0.
fonte