Retropropagação é a 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 machine learning (como Keras) lidar com a retropropagação automaticamente, para que você não precise realizar os cálculos subjacentes por conta própria. Confira o vídeo a seguir para visão geral conceitual de como funciona a retropropagação:
Práticas recomendadas para treinamento de rede neural
Esta seção explica os casos de falha da retropropagação e os comum de regularizar uma rede neural.
Desaparecimento de gradientes
Os gradientes da camada neural inferior as camadas de rede (mais próximas da camada de entrada) podem ficar muito pequenas. Em redes profundas (redes com mais de uma camada escondida), o cálculo desses gradientes pode envolver produto de muitos termos pequenos.
Quando os valores dos gradientes se aproximam de 0 nas camadas inferiores, os gradientes são dizem "desaparecer". Camadas com gradientes desaparecem são treinadas muito lentamente de verdade.
A função de ativação ReLU ajuda a evitar o desaparecimento de gradientes.
Explosão de gradientes
Se os pesos em uma rede forem muito grandes, os gradientes das menores camadas envolvem produtos de muitos termos grandes. Nesse caso, você pode ter Gradientes em explosão: gradientes que ficam muito grandes para convergirem.
A normalização em lote pode ajudar a prevenir a explosão de gradientes, pois pode diminuir e a taxa de aprendizado.
Unidades ReLU inativas
Quando a soma ponderada de uma unidade ReLU fica abaixo de 0, a unidade ReLU pode chegar presos. A saída é 0, ou seja, não contribuirá para a saída da rede, por isso os gradientes não podem mais fluir por ele durante a retropropagação. Com um fonte de gradientes cortados, a entrada para a ReLU pode não mudar o suficiente para trazer a soma ponderada de volta acima de 0.
Reduzir a taxa de aprendizado pode ajudar a evitar a morte das unidades ReLU.
Regularização de dropout
Outra forma de regularização, chamada regularização de dropout, é útil para redes neurais. Ele funciona "descartando" aleatoriamente ativações unitárias em uma rede para uma única etapa do gradiente. Quanto mais você descartar, mais forte será a regularização:
- 0,0 = sem regularização de dropout.
- 1.0 = Descarta todos os nós. O modelo não aprende nada.
- Valores entre 0,0 e 1,0 = mais útil.