Backpropagation é o algoritmo usado para calcular como a perda de uma rede neural muda em relação a cada um de seus pesos, aplicando a regra da cadeia do cálculo de trás para frente através das camadas da rede. É o mecanismo que torna o treinamento de redes profundas com descida de gradiente computacionalmente viável, porque calcula todos os gradientes necessários para uma atualização em aproximadamente o mesmo tempo que uma única passada para frente, em vez de exigir um cálculo custoso separado para cada peso individual
História
A técnica matemática por trás do backpropagation, a diferenciação automática em modo reverso, foi descrita em várias formas a partir dos anos 1960s, e Paul Werbos a aplicou explicitamente a redes neurais em sua tese de doutorado na Harvard em 1974, embora o trabalho tenha passado amplamente despercebido na época. O backpropagation entrou na pesquisa mainstream de IA após um artigo de 1986 na Nature por David Rumelhart, Geoffrey Hinton e Ronald Williams, "Learning representations by back-propagating errors," que demonstrou que o método podia treinar redes multicamadas para descobrir representações internas úteis, respondendo diretamente às limitações que Marvin Minsky e Seymour Papert haviam identificado em perceptrons de camada única duas décadas antes. O artigo de 1986 é amplamente creditado por ajudar a encerrar o segundo inverno da IA e reviver o interesse em abordagens conexionistas à IA ao longo do final dos anos 1980s e 1990s
Como funciona
A passada para frente de uma rede computa uma saída e um valor de função de perda a partir das entradas e pesos atuais. O backpropagation então trabalha de trás para frente a partir dessa perda, usando a regra da cadeia para computar, camada por camada, o quanto cada peso contribuiu para o erro, produzindo um gradiente para cada parâmetro na rede em uma única passada para trás. Esses gradientes são então usados por um otimizador, tipicamente uma variante de descida de gradiente,para ajustar cada peso na direção que reduz a perda. A eficiência desse cálculo para trás, formalmente uma instância de diferenciação automática em modo reverso,é o que torna prático treinar redes com bilhões de parâmetros; uma abordagem numérica ingênua que recalculasse cada gradiente independentemente seria computacionalmente intratável nessa escala
Adoção e limitações
Apesar de sua popularização em 1986, o backpropagation não dominou imediatamente: ao longo dos anos 1990s e 2000s, redes profundas treinadas com backpropagation sofriam de gradientes vanishing e exploding em redes com muitas camadas, o que limitava a profundidade prática e contribuia para uma preferência por modelos mais rasos e métodos alternativos como máquinas de vetores de suporte. Correções arquiteturais, incluindo os mecanismos de portão em redes LSTM, inicialização cuidadosa de pesos, e posteriormente conexões residuais e camadas de normalização, gradualmente resolveram esses problemas e permitiram as redes muito profundas, incluindo redes neurais convolucionais e eventualmente transformers,que definem o aprendizado profundo moderno. O próprio backpropagation também atraiu críticas científicas, mais proeminentemente de Geoffrey Hinton em anos posteriores, por sua implausibilidade biológica, já que o cérebro não tem mecanismo conhecido para os sinais de erro precisos e simétricos para trás que o algoritmo exige, motivando pesquisa contínua em regras de aprendizado alternativas e mais biologicamente plausíveis que até agora não igualaram seu desempenho prático
Significância
O backpropagation permanece o método de treinamento quase universal para redes neurais em todos os domínios,de visão computacional a processamento de linguagem natural,e cada grande framework de aprendizado profundo, incluindo PyTorch e TensorFlow,é construído em torno de motores de diferenciação automática que o implementam em escala.