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)
fonte
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)
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.