A retropropagação é o algoritmo de treinamento mais comum para redes neurais.
Ele torna o gradiente descendente viável para redes neurais de várias camadas.
O TensorFlow lida com a retropropagação automaticamente, para que você não precise entender profundamente o algoritmo. Para ter uma noção de como ele funciona, consulte: Explicação visual do algoritmo de retropropagação.
Ao navegar pela explicação anterior, observe o seguinte:
Como os dados fluem pelo gráfico.
Como a programação dinâmica nos permite evitar calcular exponencialmente muitos caminhos no gráfico. Aqui, "programação dinâmica" significa apenas registrar
resultados intermediários nos passes para frente e para trás.
Como treinar redes neurais
Backprop: o que você precisa saber
Os gradientes são importantes
Se for diferenciável, podemos aprender sobre ele
Backprop: o que você precisa saber
Os gradientes são importantes
Se for diferenciável, podemos aprender sobre ele
Os gradientes podem sumir
Cada camada adicional pode reduzir o indicador em comparação com o ruído de maneira sucessiva
ReLus são úteis aqui
Backprop: o que você precisa saber
Os gradientes são importantes
Se for diferenciável, podemos aprender sobre ele
Os gradientes podem sumir
Cada camada adicional pode reduzir o indicador em comparação com o ruído de maneira sucessiva
ReLus são úteis aqui
Os gradientes podem explodir
As taxas de aprendizado são importantes neste caso
Pode ser útil fazer a normalização em lote (botão útil)
Backprop: o que você precisa saber
Os gradientes são importantes
Se for diferenciável, podemos aprender sobre ele
Os gradientes podem sumir
Cada camada adicional pode reduzir o indicador em comparação com o ruído de maneira sucessiva
ReLus são úteis aqui
Os gradientes podem explodir
As taxas de aprendizado são importantes neste caso
Pode ser útil fazer a normalização em lote (botão útil)
Camadas ReLu podem morrer
Mantenha a calma e diminua suas taxas de aprendizado
Normalização de valores de atributos
Gostaríamos que nossos recursos tivessem escalas razoáveis
Baseado em zero, o intervalo [-1, 1] costuma funcionar bem.
Ajuda o gradiente descendente a convergir; evita a armadilha do NaN.
Evitar valores atípicos também pode ajudar
É possível usar alguns métodos padrão:
Dimensionamento linear
Limite fixo (recorte) para máximo e mínimo
Dimensionamento logarítmico
Regularização de dropout
Dropout: outra forma de regularização, útil para redes neurais
Funciona com a "eliminação" aleatória de unidades em uma rede para uma única etapa do gradiente
Há uma conexão com modelos ensemble aqui
Quanto maior o dropout, mais forte a regularização