Recorte de gradiente ao treinar redes neurais profundas

10

Quando alguém deseja executar um recorte gradiente ao treinar uma RNN ou CNN? Estou especialmente interessado neste último. Qual seria um bom valor inicial para recorte? (é claro que pode ser ajustado)

pir
fonte

Respostas:

4

Você deseja executar o recorte de gradiente quando tiver o problema de desaparecer gradientes ou explodir gradientes. No entanto, para ambos os cenários, existem soluções melhores:

  • O gradiente explosivo acontece quando o gradiente se torna muito grande e você recebe um estouro numérico. Isso pode ser facilmente corrigido, inicializando os pesos da rede para valores menores. Se isso não funcionar, é provável que haja um erro no código.

  • O gradiente de fuga ocorre quando a otimização fica presa em um ponto de sela, o gradiente se torna pequeno demais para a otimização progredir. Isso pode ser corrigido usando a descida de gradiente com impulso ou suporte RMS ou ambos (também conhecido como otimizador de Adam).

Os valores iniciais para o limite superior do recorte de gradiente seriam algo menor que o maior número que a variável pode receber. Para o limite inferior, eu diria que é um problema específico, mas talvez comece com algo como 1e-10.

Miguel
fonte
11
Não tenho certeza se o contexto desta resposta deve excluir RNNs, mas se não, então as duas soluções propostas não são melhores do que o recorte de gradiente, especialmente no caso de RNNs.
Alex R.
Desculpe, eu estava pensando mais no contexto de CNNs, sinta-se livre para editar
Miguel