Redes neurais: como treinar usando retropropagação

A retropropagação é o algoritmo de treinamento mais comum para redes neurais. Isso 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. Portanto, não é necessário realizar nenhum dos cálculos subjacentes. Confira o vídeo a seguir para ter uma visão geral conceitual de como a retropropagação funciona:

Práticas recomendadas para treinamento de redes neurais

Esta seção explica os casos de falha da backpropagation e a maneira mais comum de regularizar uma rede neural.

Gradientes evanescentes

Os gradientes das camadas inferiores da rede neural (mais próximas da camada de entrada) podem ficar muito pequenos. Em redes profundas (redes com mais de uma camada escondida), o cálculo desses gradientes pode envolver a multiplicação de muitos termos pequenos.

Quando os valores de gradiente se aproximam de 0 para as camadas inferiores, dizemos que os gradientes "desaparecem". As camadas com gradientes que desaparecem treinam muito lentamente ou não treinam.

A função de ativação ReLU pode ajudar a evitar o desaparecimento de gradientes.

Gradientes explosivos

Se os pesos em uma rede forem muito grandes, os gradientes das camadas mais baixas vão envolver produtos de muitos termos grandes. Nesse caso, você pode ter gradientes explosivos, que ficam grandes demais para convergir.

A normalização em lote pode ajudar a evitar gradientes explosivos, assim como a redução da taxa de aprendizado.

Unidades ReLU inativas

Quando a soma ponderada de uma unidade ReLU fica abaixo de zero, ela pode ficar presa. Ele gera 0, não contribuindo para a saída da rede, e os gradientes não podem mais fluir por ele durante a backpropagation. Com uma fonte de gradientes cortada, a entrada para a ReLU pode nunca mudar o suficiente para trazer a soma ponderada de volta acima de 0.

Diminuir a taxa de aprendizado pode ajudar a evitar que as unidades ReLU morram.

Regularização por dropout

Outra forma de regularização, chamada de regularização por dropout, é útil para redes neurais. Ele funciona com a desativação aleatória de unidades de ativação em uma rede para uma única etapa de gradiente. Quanto maior o dropout, mais forte a regularização:

  • 0,0 = sem regularização por dropout.
  • 1,0 = dropout total. O modelo não aprende nada.
  • Valores entre 0,0 e 1,0 = mais úteis.