Problema do desaparecimento do gradiente
No aprendizado de máquina, o problema do desvanecimento do gradiente (vanishing gradient problem) é o problema de magnitudes de gradiente amplamente divergentes entre as camadas iniciais e finais, encontrado ao treinar redes neurais com retropropagação (backpropagation). Nesses métodos, os pesos da rede neural são atualizados proporcionalmente à sua derivada parcial da função de perda.[1] À medida que o número de etapas de propagação para a frente em uma rede aumenta, por exemplo, devido a uma maior profundidade da rede, os gradientes dos pesos iniciais são calculados com cada vez mais multiplicações. Essas multiplicações reduzem a magnitude do gradiente. Consequentemente, os gradientes dos pesos iniciais serão exponencialmente menores do que os gradientes dos pesos finais. Essa diferença na magnitude do gradiente pode introduzir instabilidade no processo de treinamento, retardá-lo ou interrompê-lo totalmente.[1] Por exemplo, considere a função de ativação tangente hiperbólica. Os gradientes desta função estão no intervalo [0, 1]. O produto da multiplicação repetida com tais gradientes diminui exponencialmente. O problema inverso, quando os gradientes de peso nas camadas iniciais se tornam exponencialmente maiores, é chamado de problema da explosão do gradiente (exploding gradient problem).
A retropropagação permitiu aos pesquisadores treinar redes neurais artificiais profundas supervisionadas a partir do zero, inicialmente com pouco sucesso. A tese de diploma de 1991 de Hochreiter identificou formalmente o motivo dessa falha no "problema do desvanecimento do gradiente",[2][3] que não afeta apenas redes feedforward de muitas camadas,[4] mas também redes recorrentes.[5][6] Estas últimas são treinadas desdobrando-as em redes feedforward muito profundas, onde uma nova camada é criada para cada passo de tempo de uma sequência de entrada processada pela rede (a combinação de desdobramento e retropropagação é chamada de retropropagação através do tempo).
Modelos prototípicos
Esta seção é baseada no artigo On the difficulty of training Recurrent Neural Networks de Pascanu, Mikolov e Bengio.
Modelo de rede recorrente
Uma rede recorrente genérica tem estados ocultos , entradas , e saídas . Seja parametrizada por , de modo que o sistema evolui como Frequentemente, a saída é uma função de , como algum . O problema do desvanecimento do gradiente já se apresenta claramente quando , então simplificamos nossa notação para o caso especial com: Agora, considere sua diferencial: O treinamento da rede requer que definamos uma função de perda (loss function) a ser minimizada. Seja [nota 1], então minimizá-la por descida de gradiente resulta em
|
(diferencial de perda) |
onde é a taxa de aprendizado.
O problema do desvanecimento/explosão do gradiente aparece porque existem multiplicações repetidas, da forma
Exemplo: rede recorrente com ativação sigmoide
Para um exemplo concreto, considere uma rede recorrente típica definida por
onde é o parâmetro da rede, é a função de ativação sigmoide[nota 2], aplicada a cada coordenada do vetor separadamente, e é o vetor de viés (bias).
Então, , e assim Como , a norma de operador da multiplicação acima é limitada superiormente por . Portanto, se o raio espectral de for , então para um grande, a multiplicação acima tem a norma de operador limitada superiormente por . Este é o problema prototípico do desvanecimento do gradiente.
O efeito de um gradiente que desvanece é que a rede não pode aprender efeitos de longo alcance. Lembre-se da Equação (diferencial de perda):Os componentes de são apenas componentes de e , então se são limitados, então também é limitado por algum , e assim os termos em decaem como . Isso significa que, efetivamente, é afetado apenas pelos primeiros termos na soma.
Se , a análise acima não funciona muito bem.[nota 3] Para o problema prototípico da explosão do gradiente, o próximo modelo é mais claro.
Modelo de sistemas dinâmicos

Seguindo (Doya, 1993),[7] considere esta rede recorrente de um neurônio com ativação sigmoide: No limite pequeno de , a dinâmica da rede torna-se Considere primeiro o caso autônomo, com . Defina , e varie em . Conforme diminui, o sistema tem 1 ponto estável, depois tem 2 pontos estáveis e 1 ponto instável, e finalmente tem 1 ponto estável novamente. Explicitamente, os pontos estáveis são .
Agora considere e , onde é grande o suficiente para que o sistema tenha se estabelecido em um dos pontos estáveis.
Se colocar o sistema muito perto de um ponto instável, então uma minúscula variação em ou faria mover-se de um ponto estável para o outro. Isso faz com que e sejam ambos muito grandes, um caso de explosão do gradiente.
Se colocar o sistema longe de um ponto instável, então uma pequena variação em não teria efeito sobre , fazendo , um caso de desvanecimento do gradiente.
Note que, neste caso, nem decai para zero nem explode para o infinito. De fato, é o único gradiente bem comportado, o que explica por que as primeiras pesquisas se concentraram em aprender ou projetar sistemas de redes recorrentes que pudessem realizar cálculos de longo alcance (como emitir a primeira entrada que vê no final de um episódio) moldando seus atratores estáveis.[8]
Para o caso geral, a intuição ainda se mantém ( Figuras 3, 4 e 5).
Modelo geométrico
Continue usando a rede de um neurônio acima, fixando , e considere uma função de perda definida por . Isso produz uma paisagem de perda bastante patológica: à medida que se aproxima de por cima, a perda se aproxima de zero, mas assim que cruza , a bacia do atrator muda e a perda salta para 0.50.[nota 4]
Consequentemente, tentar treinar por descida de gradiente seria "bater em uma parede na paisagem de perda", e causaria a explosão do gradiente. Uma situação ligeiramente mais complexa é traçada na Figura 6.
Soluções
Predefinição:Problemas Para superar este problema, vários métodos foram propostos.
RNN
Para as redes neurais recorrentes, a rede de memória de longo e curto prazo (LSTM) foi projetada para resolver o problema (Hochreiter & Schmidhuber, 1997).[9]
Para o problema da explosão do gradiente, (Pascanu et al, 2012) recomendaram o corte do gradiente (gradient clipping), o que significa dividir o vetor gradiente por se . Isso restringe os vetores gradientes a uma bola de raio .
Normalização em lote
A normalização em lote (batch normalization) é um método padrão para resolver tanto o problema da explosão quanto o do desvanecimento do gradiente.[10][11]
Hierarquia multinível
Na hierarquia multinível de redes (Schmidhuber, 1992), pré-treinada um nível de cada vez através de aprendizado não supervisionado, ajustada (fine-tuned) através de retropropagação (backpropagation).[12] Aqui, cada nível aprende uma representação comprimida das observações que é alimentada para o próximo nível.
Rede de crenças profundas
Ideias semelhantes foram usadas em redes neurais de alimentação direta (feed-forward) para pré-treinamento não supervisionado para estruturar uma rede neural, fazendo-a primeiro aprender detectores de características geralmente úteis. Em seguida, a rede é treinada ainda mais por retropropagação supervisionada para classificar dados rotulados. O modelo de rede de crenças profundas (deep belief network) de Hinton et al. (2006) envolve o aprendizado da distribuição de uma representação de alto nível usando camadas sucessivas de variáveis latentes binárias ou de valor real. Ele usa uma máquina de Boltzmann restrita para modelar cada nova camada de características de nível superior. Cada nova camada garante um aumento no limite inferior da log-verossimilhança dos dados, melhorando assim o modelo, se treinado adequadamente. Uma vez que um número suficiente de camadas tenha sido aprendido, a arquitetura profunda pode ser usada como um modelo generativo, reproduzindo os dados ao realizar uma amostragem descendente do modelo (uma "passagem ancestral") a partir das ativações de características do nível superior.[13] Hinton relata que seus modelos são extratores de características eficazes sobre dados estruturados e de alta dimensão.[14]
Hardware mais rápido
Os avanços de hardware significaram que, de 1991 a 2015, o poder de computação (especialmente o fornecido por GPUs) aumentou cerca de um milhão de vezes, tornando a retropropagação padrão viável para redes com várias camadas a mais do que quando o problema do desvanecimento do gradiente foi reconhecido. Schmidhuber observa que isso "é basicamente o que está ganhando muitas das competições de reconhecimento de imagens agora", mas que "não supera realmente o problema de forma fundamental"[15] já que os modelos originais que abordavam o problema do desvanecimento do gradiente de Hinton e outros foram treinados em um processador Xeon, não em GPUs.[13]
Conexão residual
Conexões residuais, ou conexões de salto (skip connections), referem-se ao motivo arquitetônico de Predefinição:Awrap onde é um módulo de rede neural arbitrário. Isso resulta no gradiente de , onde a matriz identidade não sofre com o desvanecimento ou explosão do gradiente. Durante a retropropagação, parte do gradiente flui através das conexões residuais.[16]
Concretamente, seja a rede neural (sem conexões residuais) , então, com conexões residuais, o gradiente da saída em relação às ativações na camada é . O gradiente, portanto, não desvanece em redes arbitrariamente profundas.
Redes feedforward com conexões residuais podem ser consideradas como um conjunto (ensemble) de redes relativamente rasas. Nessa perspectiva, elas resolvem o problema do desvanecimento do gradiente por serem equivalentes a conjuntos de muitas redes rasas, para as quais não há problema de desvanecimento do gradiente.[17]
Outras funções de ativação
Retificadores como a ReLU sofrem menos com o problema do desvanecimento do gradiente, porque eles apenas saturam em uma direção.[18]
Inicialização de pesos
A inicialização de pesos é outra abordagem que foi proposta para reduzir o problema do desvanecimento do gradiente em redes profundas.
Kumar sugeriu que a distribuição dos pesos iniciais deveria variar de acordo com a função de ativação usada e propôs inicializar os pesos em redes com a função de ativação logística usando uma distribuição gaussiana com média zero e um desvio padrão de , onde é o número de neurônios em uma camada.[19]
Recentemente, Yilmaz e Poli[20] realizaram uma análise teórica sobre como os gradientes são afetados pela média dos pesos iniciais em redes neurais profundas usando a função de ativação logística e descobriram que os gradientes não desvanecem se a média dos pesos iniciais for definida de acordo com a fórmula: . Esta estratégia simples permite que redes com 10 ou 15 camadas ocultas sejam treinadas de forma muito eficiente e eficaz usando a retropropagação padrão.
Outros
Behnke baseou-se apenas no sinal do gradiente (Rprop) ao treinar sua Pirâmide de Abstração Neural[21] para resolver problemas como reconstrução de imagem e localização de rostos.[carece de fontes]
As redes neurais também podem ser otimizadas usando um algoritmo de busca universal no espaço de pesos da rede neural, por exemplo, palpite aleatório ou mais sistematicamente por algoritmos genéticos. Esta abordagem não é baseada em gradiente e evita o problema do desvanecimento do gradiente.[22]
Notas
- ↑ Uma função de perda mais geral poderia depender de toda a sequência de saídas, como para a qual o problema é o mesmo, apenas com notações mais complexas.
- ↑ Qualquer função de ativação funciona, desde que seja diferenciável com derivada limitada.
- ↑ Considere e , com e . Então tem um raio espectral , e , que pode ir para o infinito ou zero dependendo da escolha de .
- ↑ Isso ocorre porque em , os dois atratores estáveis são , e o atrator instável é .
Referências
- 1 2 Basodi, Sunitha; Ji, Chunyan; Zhang, Haiping; Pan, Yi (setembro de 2020). «Gradient amplification: An efficient way to train deep neural networks». Big Data Mining and Analytics. 3 (3). 198 páginas. ISSN 2096-0654. arXiv:2006.10560
. doi:10.26599/BDMA.2020.9020004
- ↑ Hochreiter, S. (1991). Untersuchungen zu dynamischen neuronalen Netzen (PDF) (Tese de diploma). Institut f. Informatik, Technische Univ. Munich
- ↑ Hochreiter, S.; Bengio, Y.; Frasconi, P.; Schmidhuber, J. (2001). «Gradient flow in recurrent nets: the difficulty of learning long-term dependencies». In: Kremer, S. C.; Kolen, J. F. A Field Guide to Dynamical Recurrent Neural Networks. [S.l.]: IEEE Press. ISBN 0-7803-5369-2. doi:10.1109/9780470544037.ch14
- ↑ Goh, Garrett B.; Hodas, Nathan O.; Vishnu, Abhinav (15 de junho de 2017). «Deep learning for computational chemistry». Journal of Computational Chemistry (em inglês). 38 (16): 1291–1307. Bibcode:2017arXiv170104503G. PMID 28272810. arXiv:1701.04503
. doi:10.1002/jcc.24764 - ↑ Bengio, Y.; Frasconi, P.; Simard, P. (1993). The problem of learning long-term dependencies in recurrent networks. IEEE International Conference on Neural Networks. IEEE. pp. 1183–1188. ISBN 978-0-7803-0999-9. doi:10.1109/ICNN.1993.298725
- ↑ Pascanu, Razvan; Mikolov, Tomas; Bengio, Yoshua (21 de novembro de 2012). «On the difficulty of training Recurrent Neural Networks». arXiv:1211.5063
[cs.LG] - ↑ Doya, K. (1992). «Bifurcations in the learning of recurrent neural networks». [Proceedings] 1992 IEEE International Symposium on Circuits and Systems. 6. [S.l.]: IEEE. pp. 2777–2780. ISBN 0-7803-0593-0. doi:10.1109/iscas.1992.230622
- ↑ Bengio, Y.; Simard, P.; Frasconi, P. (março de 1994). «Learning long-term dependencies with gradient descent is difficult». IEEE Transactions on Neural Networks. 5 (2): 157–166. ISSN 1941-0093. PMID 18267787. doi:10.1109/72.279181 Verifique o valor de
|url-access=subscription(ajuda) - ↑ Hochreiter, Sepp; Schmidhuber, Jürgen (1997). «Long Short-Term Memory». Neural Computation. 9 (8): 1735–1780. PMID 9377276. doi:10.1162/neco.1997.9.8.1735
- ↑ Ioffe, Sergey; Szegedy, Christian (1 de junho de 2015). «Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift». PMLR. International Conference on Machine Learning (em inglês): 448–456. arXiv:1502.03167

- ↑ Santurkar, Shibani; Tsipras, Dimitris; Ilyas, Andrew; Madry, Aleksander (2018). «How Does Batch Normalization Help Optimization?». Curran Associates, Inc. Advances in Neural Information Processing Systems. 31
- ↑ J. Schmidhuber., "Learning complex, extended sequences using the principle of history compression," Neural Computation, 4, pp. 234–242, 1992.
- 1 2 Hinton, G. E.; Osindero, S.; Teh, Y. (2006). «A fast learning algorithm for deep belief nets» (PDF). Neural Computation. 18 (7): 1527–1554. CiteSeerX 10.1.1.76.1541
. PMID 16764513. doi:10.1162/neco.2006.18.7.1527 - ↑ Hinton, G. (2009). «Deep belief networks». Scholarpedia. 4 (5). 5947 páginas. Bibcode:2009SchpJ...4.5947H. doi:10.4249/scholarpedia.5947

- ↑ Schmidhuber, Jürgen (2015). «Deep learning in neural networks: An overview». Neural Networks. 61: 85–117. PMID 25462637. arXiv:1404.7828
. doi:10.1016/j.neunet.2014.09.003 - ↑ He, Kaiming; Zhang, Xiangyu; Ren, Shaoqing; Sun, Jian (2016). «Deep Residual Learning for Image Recognition». 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). [S.l.]: IEEE. pp. 770–778. ISBN 978-1-4673-8851-1. arXiv:1512.03385
. doi:10.1109/CVPR.2016.90 - ↑ Veit, Andreas; Wilber, Michael; Belongie, Serge (20 de maio de 2016). «Residual Networks Behave Like Ensembles of Relatively Shallow Networks». arXiv:1605.06431
[cs.CV] - ↑ Glorot, Xavier; Bordes, Antoine; Bengio, Yoshua (14 de junho de 2011). «Deep Sparse Rectifier Neural Networks». PMLR (em inglês): 315–323
- ↑ Kumar, Siddharth Krishna. "On weight initialization in deep neural networks." arXiv preprint arXiv:1704.08863 (2017).
- ↑ Yilmaz, Ahmet; Poli, Riccardo (1 de setembro de 2022). «Successfully and efficiently training deep multi-layer perceptrons with logistic activation function simply requires initializing the weights with an appropriate negative mean». Neural Networks (em inglês). 153: 87–103. ISSN 0893-6080. PMID 35714424. doi:10.1016/j.neunet.2022.05.030. hdl:11492/6392

- ↑ Sven Behnke (2003). Hierarchical Neural Networks for Image Interpretation. (PDF). Col: Lecture Notes in Computer Science. 2766. [S.l.]: Springer
- ↑ «Sepp Hochreiter's Fundamental Deep Learning Problem (1991)». people.idsia.ch. Consultado em 7 de janeiro de 2017