A retropropagação é o algoritmo de treinamento mais comum para redes neurais. Ela torna o gradiente descendente viável para redes neurais de várias camadas. Muitas bibliotecas de código de aprendizado de máquina (como o Keras) processam a retropropagação automaticamente, para que você não precise realizar nenhum dos cálculos subjacentes. Confira o vídeo a seguir para ter uma visão conceitual de como a propagação para trás funciona:
Práticas recomendadas para treinamento de redes neurais
Esta seção explica os casos de falha da retropropagação e a maneira mais comum de regularizar uma rede neural.
Gradientes de desaparecimento
Os gradientes para as camadas de rede neural inferiores (aquelas mais próximas da camada de entrada) podem ficar muito pequenas. Em redes profundas (redes com mais de uma camada oculta), o cálculo desses gradientes pode envolver o produto de muitos termos pequenos.
Quando os valores de gradiente se aproximam de 0 para as camadas inferiores, os gradientes são "desvanecidas". Camadas com gradientes que desaparecem são treinadas muito lentamente ou não são treinadas.
A função de ativação ReLU pode ajudar a evitar gradientes de desaparecimento.
Gradientes de explosão
Se os pesos em uma rede forem muito grandes, os gradientes das camadas inferiores vão envolver produtos de muitos termos grandes. Nesse caso, você pode ter gradientes explosivos: gradientes que ficam muito grandes para convergir.
A normalização em lote pode ajudar a evitar a explosão de gradientes, bem como reduzir a taxa de aprendizado.
Unidades ReLU inativas
Quando a soma ponderada de uma unidade ReLU cai abaixo de 0, ela pode ficar presa. Ela gera 0, não contribuindo com nada para a saída da rede, e os gradientes não podem mais fluir por ela durante a propagação de retorno. Com uma fonte de gradientes cortada, a entrada para a ReLU pode não mudar o suficiente para trazer a soma ponderada de volta acima de 0.
A redução da taxa de aprendizado pode ajudar a evitar que as unidades ReLU morram.
Regularização de dropout
No entanto, outra forma de regularização, chamada regularização de dropout, é útil para redes neurais. Ele funciona com a desativação aleatória de unidades de ativação em uma rede com apenas uma etapa. Quanto maior o dropout, mais forte a regularização:
- 0,0 = sem regularização de dropout.
- 1,0 = excluir todos os nós. O modelo não aprende nada.
- Valores entre 0,0 e 1,0 = mais úteis.