Retropropagação
| Parte da série sobre |
| Inteligência artificial (IA) |
|---|
No aprendizado de máquina, a retropropagação (backpropagation) é um método de computação de gradiente comumente usado para treinar uma rede neural no cálculo de atualizações de parâmetros.
É uma aplicação eficiente da regra da cadeia em redes neurais. A retropropagação calcula o gradiente de uma função de perda em relação aos pesos da rede para um único exemplo de entrada-saída, e o faz de forma eficiente, calculando o gradiente uma camada de cada vez, iterando para trás a partir da última camada para evitar cálculos redundantes de termos intermediários na regra da cadeia; isso pode ser derivado por meio da programação dinâmica.[1][2][3]
A rigor, o termo retropropagação refere-se apenas a um algoritmo para calcular eficientemente o gradiente, e não a como o gradiente é usado; mas o termo é frequentemente usado de forma livre para se referir a todo o algoritmo de aprendizado. Isso inclui a alteração de parâmetros do modelo na direção negativa do gradiente, como pela descida de gradiente estocástico, ou como um passo intermediário em um otimizador mais complicado, como a Estimativa de Momento Adaptativo (Adam).[4]
A retropropagação teve múltiplas descobertas e descobertas parciais, com uma história e terminologia emaranhadas. Veja a seção de história para mais detalhes. Alguns outros nomes para a técnica incluem "modo reverso da diferenciação automática" ou "acumulação reversa".[5]
Visão geral
A retropropagação calcula o gradiente no espaço de pesos de uma rede neural feedforward (de alimentação direta), em relação a uma função de perda. Denota-se:
- : entrada (vetor de características)
- : saída alvo
- Para classificação, a saída será um vetor de probabilidades de classe (por exemplo, , e a saída alvo é uma classe específica, codificada pela one-hot/variável dummy (por exemplo, ).
- : função de perda ou "função de custo"[a]
- Para classificação, esta é geralmente a entropia cruzada (XC, perda logarítmica), enquanto para regressão é geralmente a perda de erro quadrático (SEL).
- : o número de camadas
- : os pesos entre a camada e , onde é o peso entre o -ésimo nó na camada e o -ésimo nó na camada [b]
- : funções de ativação na camada
- Para classificação, a última camada é geralmente a função logística para classificação binária, e softmax (softargmax) para classificação multiclasse, enquanto para as camadas ocultas isso era tradicionalmente uma função sigmoide (função logística ou outras) em cada nó (coordenada), mas hoje é mais variado, com o retificador (rampa, ReLU) sendo comum.
- : ativação do -ésimo nó na camada .
Na derivação da retropropagação, outras quantidades intermediárias são usadas, sendo introduzidas conforme necessário abaixo. Os termos de viés (bias) não são tratados de forma especial, uma vez que correspondem a um peso com uma entrada fixa de 1. Para a retropropagação, a função de perda específica e as funções de ativação não importam, desde que elas e suas derivadas possam ser avaliadas de forma eficiente. Funções de ativação tradicionais incluem sigmoide, tanh e ReLU. Swish,[6] Mish,[7] e muitas outras.
A rede em geral é uma combinação de composição de funções e multiplicação de matrizes:
Para um conjunto de treinamento, haverá um conjunto de pares de entrada-saída, . Para cada par de entrada-saída no conjunto de treinamento, a perda do modelo naquele par é o custo da diferença entre a saída prevista e a saída alvo :
Note a distinção: durante a avaliação do modelo, os pesos são fixos enquanto as entradas variam (e a saída alvo pode ser desconhecida), e a rede termina com a camada de saída (não inclui a função de perda). Durante o treinamento do modelo, o par de entrada-saída é fixo enquanto os pesos variam, e a rede termina com a função de perda.
A retropropagação calcula o gradiente para um par de entrada-saída fixo , onde os pesos podem variar. Cada componente individual do gradiente, pode ser calculado pela regra da cadeia; mas fazer isso separadamente para cada peso é ineficiente. A retropropagação calcula o gradiente de forma eficiente evitando cálculos duplicados e não calculando valores intermediários desnecessários, calculando o gradiente de cada camada – especificamente o gradiente da entrada ponderada de cada camada, denotado por – de trás para frente.
Informalmente, o ponto-chave é que, como a única maneira de um peso em afetar a perda é através do seu efeito na próxima camada, e o faz linearmente, são os únicos dados de que você precisa para calcular os gradientes dos pesos na camada , e então os gradientes dos pesos da camada anterior podem ser calculados por e repetidos recursivamente. Isso evita a ineficiência de duas maneiras. Primeiro, evita a duplicação porque, ao calcular o gradiente na camada , é desnecessário recalcular todas as derivadas nas camadas posteriores a cada vez. Segundo, evita cálculos intermediários desnecessários, porque em cada estágio calcula diretamente o gradiente dos pesos em relação à saída final (a perda), em vez de calcular desnecessariamente as derivadas dos valores das camadas ocultas em relação às mudanças nos pesos .
A retropropagação pode ser expressa para redes feedforward simples em termos de multiplicação de matrizes, ou mais geralmente em termos do grafo adjunto.
Multiplicação de matrizes
Para o caso básico de uma rede feedforward (de alimentação direta), onde os nós em cada camada estão conectados apenas aos nós da camada imediatamente seguinte (sem pular nenhuma camada), e há uma função de perda que calcula uma perda escalar para a saída final, a retropropagação pode ser entendida simplesmente por multiplicação de matrizes.[c] Essencialmente, a retropropagação avalia a expressão para a derivada da função de custo como um produto de derivadas entre cada camada da direita para a esquerda – "para trás" (backwards) – com o gradiente dos pesos entre cada camada sendo uma simples modificação dos produtos parciais (o "erro retropropagado").
Dado um par de entrada-saída , a perda é:
Para calcular isso, começa-se com a entrada e trabalha-se para a frente; denote a entrada ponderada de cada camada oculta como e a saída da camada oculta como a ativação . Para a retropropagação, a ativação , bem como as derivadas (avaliadas em ), devem ser armazenadas em cache para uso durante a passagem para trás.
A derivada da perda em termos das entradas é dada pela regra da cadeia; note que cada termo é uma derivada total, avaliada no valor da rede (em cada nó) na entrada :
onde é uma matriz diagonal.
Esses termos são: a derivada da função de perda;[d] as derivadas das funções de ativação;[e] e as matrizes de pesos:[f]
O gradiente é a transposta da derivada da saída em termos da entrada, de modo que as matrizes são transpostas e a ordem de multiplicação é invertida, mas as entradas são as mesmas:
A retropropagação consiste então essencialmente em avaliar essa expressão da direita para a esquerda (equivalentemente, multiplicar a expressão anterior para a derivada da esquerda para a direita), calculando o gradiente em cada camada ao longo do caminho; há uma etapa adicional, porque o gradiente dos pesos não é apenas uma subexpressão: há uma multiplicação extra.
Introduzindo a quantidade auxiliar para os produtos parciais (multiplicando da direita para a esquerda), interpretada como o "erro no nível " e definida como o gradiente dos valores de entrada no nível :
Note que é um vetor, de comprimento igual ao número de nós no nível ; cada componente é interpretado como o "custo atribuível a (ao valor de) esse nó".
O gradiente dos pesos na camada é então:
O fator de deve-se ao fato de que os pesos entre o nível e afetam o nível proporcionalmente às entradas (ativações): as entradas são fixas, os pesos variam.
O pode ser facilmente calculado recursivamente, indo da direita para a esquerda, como:
Os gradientes dos pesos podem, portanto, ser calculados usando algumas multiplicações de matrizes para cada nível; isto é a retropropagação.
Comparado a computar ingenuamente para a frente (usando o para ilustração):
Existem duas diferenças principais na retropropagação:
- Calcular em termos de evita a óbvia multiplicação duplicada das camadas e posteriores.
- Multiplicar começando de – propagando o erro para trás – significa que cada passo simplesmente multiplica um vetor () pelas matrizes de pesos e derivadas das ativações . Em contrapartida, multiplicar para a frente, começando das alterações numa camada anterior, significa que cada multiplicação multiplica uma matriz por uma matriz. Isso é muito mais custoso e corresponde a rastrear cada caminho possível de uma mudança em uma camada para a frente até as mudanças na camada (para multiplicar por , com multiplicações adicionais para as derivadas das ativações), o que calcula desnecessariamente as quantidades intermediárias de como as mudanças de peso afetam os valores dos nós ocultos.
Grafo adjunto
Para grafos mais gerais, e outras variações avançadas, a retropropagação pode ser entendida em termos de diferenciação automática, onde a retropropagação é um caso especial de acumulação reversa (ou "modo reverso").
Intuição
Motivação
O objetivo de qualquer algoritmo de aprendizado supervisionado é encontrar uma função que melhor mapeie um conjunto de entradas para sua saída correta. A motivação para a retropropagação é treinar uma rede neural de múltiplas camadas de modo que ela possa aprender as representações internas apropriadas para permitir o aprendizado de qualquer mapeamento arbitrário de entrada para saída.[8]
O aprendizado como um problema de otimização
Para entender a derivação matemática do algoritmo de retropropagação, ajuda primeiro desenvolver alguma intuição sobre a relação entre a saída real de um neurônio e a saída correta para um exemplo de treinamento específico. Considere uma rede neural simples com duas unidades de entrada, uma unidade de saída e nenhuma unidade oculta, e na qual cada neurônio usa uma saída linear (ao contrário da maioria dos trabalhos em redes neurais, nos quais o mapeamento das entradas para as saídas é não linear)[g] que é a soma ponderada de sua entrada.

Inicialmente, antes do treinamento, os pesos serão definidos aleatoriamente. Em seguida, o neurônio aprende a partir de exemplos de treinamento, que neste caso consistem em um conjunto de tuplas onde e são as entradas para a rede e t é a saída correta (a saída que a rede deve produzir dadas essas entradas, quando tiver sido treinada). A rede inicial, dados e , calculará uma saída y que provavelmente difere de t (dados os pesos aleatórios). Uma função de perda é usada para medir a discrepância entre a saída alvo t e a saída calculada y. Para problemas de análise de regressão, o erro quadrático pode ser usado como uma função de perda; para classificação, a entropia cruzada categórica pode ser usada.
Como exemplo, considere um problema de regressão usando o erro quadrático como perda:
onde E é a discrepância ou erro.
Considere a rede em um único caso de treinamento: . Assim, as entradas e são 1 e 1, respectivamente, e a saída correta, t, é 0. Agora, se a relação for plotada entre a saída da rede y no eixo horizontal e o erro E no eixo vertical, o resultado é uma parábola. O mínimo da parábola corresponde à saída y que minimiza o erro E. Para um único caso de treinamento, o mínimo também toca o eixo horizontal, o que significa que o erro será zero e a rede pode produzir uma saída y que corresponda exatamente à saída alvo t. Portanto, o problema de mapeamento de entradas para saídas pode ser reduzido a um problema de otimização de encontrar uma função que produza o erro mínimo.

No entanto, a saída de um neurônio depende da soma ponderada de todas as suas entradas:
onde e são os pesos na conexão das unidades de entrada para a unidade de saída. Portanto, o erro também depende dos pesos de entrada para o neurônio, que é, em última análise, o que precisa ser alterado na rede para permitir o aprendizado.
Neste exemplo, ao injetar os dados de treinamento , a função de perda torna-se
Então, a função de perda assume a forma de um cilindro parabólico com sua base direcionada ao longo de . Como todos os conjuntos de pesos que satisfazem minimizam a função de perda, neste caso restrições adicionais são necessárias para convergir para uma solução única. Restrições adicionais podem ser geradas estabelecendo condições específicas para os pesos ou injetando dados de treinamento adicionais.
Um algoritmo comumente usado para encontrar o conjunto de pesos que minimiza o erro é a descida de gradiente. Pela retropropagação, a direção de descida mais íngreme é calculada a partir da função de perda em relação aos pesos sinápticos atuais. Então, os pesos podem ser modificados ao longo da direção de descida mais íngreme, e o erro é minimizado de forma eficiente.
Derivação
O método de descida de gradiente envolve o cálculo da derivada da função de perda em relação aos pesos da rede. Isto é normalmente feito usando a retropropagação. Assumindo um neurônio de saída,[h] a função de erro quadrático é
onde
- é a perda para a saída e o valor alvo ,
- é a saída alvo para uma amostra de treinamento, e
- é a saída real do neurônio de saída.
Nesta seção, a ordem dos índices de peso é invertida em relação à seção anterior: é o peso da -ésima para a -ésima unidade. [i] Para cada neurônio , sua saída é definida como
onde a função de ativação é não linear e diferenciável sobre a região de ativação (a ReLU não é diferenciável em um ponto). Uma função de ativação historicamente usada é a função logística:
que tem uma derivada conveniente de:
A entrada para um neurônio é a soma ponderada das saídas dos neurônios anteriores. Se o neurônio estiver na primeira camada após a camada de entrada, as da camada de entrada são simplesmente as entradas para a rede. O número de unidades de entrada para o neurônio é . A variável denota o peso entre o neurônio da camada anterior e o neurônio da camada atual.
Encontrando a derivada do erro

O cálculo da derivada parcial do erro em relação a um peso é feito usando a regra da cadeia duas vezes:
-
(Eq. 1)
No último fator do lado direito da equação acima, apenas um termo na soma depende de , de modo que
-
(Eq. 2)
Se o neurônio estiver na primeira camada após a camada de entrada, é apenas . A derivada da saída do neurônio em relação à sua entrada é simplesmente a derivada parcial da função de ativação:
-
(Eq. 3)
que para a função de ativação logística
Esta é a razão pela qual a retropropagação exige que a função de ativação seja diferenciável. (No entanto, a função de ativação ReLU, que é não diferenciável em 0, tornou-se bastante popular, por exemplo, na AlexNet)
O primeiro fator é simples de avaliar se o neurônio estiver na camada de saída, porque então e
-
(Eq. 4)
Se a metade do erro quadrático for usada como função de perda, podemos reescrevê-la como
No entanto, se estiver em uma camada interna arbitrária da rede, encontrar a derivada de em relação a é menos óbvio.
Considerando como uma função cujas entradas são todos os neurônios que recebem entrada do neurônio ,
e calculando a derivada total em relação a , obtém-se uma expressão recursiva para a derivada:
-
(Eq. 5)
Portanto, a derivada em relação a pode ser calculada se todas as derivadas em relação às saídas da próxima camada – aquelas mais próximas do neurônio de saída – forem conhecidas. [Nota: se algum dos neurônios no conjunto não estivesse conectado ao neurônio , eles seriam independentes de e a derivada parcial correspondente sob o somatório desapareceria para 0.]
Substituindo a Eq. 2, Eq. 3, Eq. 4 e a Eq. 5 na Eq. 1, obtemos:
com
se for a função logística e o erro for o erro quadrático:
Para atualizar o peso usando a descida de gradiente, deve-se escolher uma taxa de aprendizado, . A mudança no peso precisa refletir o impacto sobre de um aumento ou diminuição em . Se , um aumento em aumenta ; inversamente, se , um aumento em diminui . O novo é adicionado ao peso antigo, e o produto da taxa de aprendizado pelo gradiente, multiplicado por , garante que mude de forma a sempre diminuir . Em outras palavras, na equação imediatamente abaixo, sempre altera de tal modo que seja diminuído:
Descida de gradiente de segunda ordem
Usando uma matriz hessiana de derivadas de segunda ordem da função de erro, o algoritmo de Levenberg-Marquardt frequentemente converge mais rápido do que a descida de gradiente de primeira ordem, especialmente quando a topologia da função de erro é complicada.[9][10] Ele também pode encontrar soluções em contagens menores de nós para as quais outros métodos poderiam não convergir.[10] A matriz hessiana pode ser aproximada pela matriz de informação de Fisher.[11]
Como exemplo, considere uma rede feedforward simples. Na -ésima camada, temosonde são as pré-ativações, são as ativações e é a matriz de pesos. Dada uma função de perda , a retropropagação de primeira ordem estabelece quee a retropropagação de segunda ordem estabelece queonde é o símbolo delta de Dirac (neste contexto discreto, o Delta de Kronecker).
Derivadas de ordem arbitrária em grafos computacionais arbitrários podem ser calculadas com a retropropagação, mas com expressões mais complexas para ordens superiores.
Função de perda
A função de perda é uma função que mapeia valores de uma ou mais variáveis para um número real representando intuitivamente algum "custo" associado a esses valores. Para a retropropagação, a função de perda calcula a diferença entre a saída da rede e a sua saída esperada, depois que um exemplo de treinamento se propagou pela rede.
Pressupostos
A expressão matemática da função de perda deve satisfazer duas condições para que possa ser usada na retropropagação.[12] O primeiro é que ela pode ser escrita como uma média sobre as funções de erro , para exemplos de treinamento individuais, . A razão para este pressuposto é que o algoritmo de retropropagação calcula o gradiente da função de erro para um único exemplo de treinamento, o qual precisa ser generalizado para a função de erro geral. O segundo pressuposto é que ela pode ser escrita como uma função das saídas da rede neural.
Exemplo de função de perda
Sejam vetores em .
Selecione uma função de erro que meça a diferença entre duas saídas. A escolha padrão é o quadrado da distância euclidiana entre os vetores e :A função de erro sobre exemplos de treinamento pode então ser escrita como uma média das perdas sobre exemplos individuais:
Limitações

- A descida de gradiente com retropropagação não tem garantia de encontrar o mínimo global da função de erro, mas apenas um mínimo local; além disso, tem dificuldade em cruzar platôs na paisagem da função de erro. Este problema, causado pela não convexidade das funções de erro nas redes neurais, foi por muito tempo considerado uma grande desvantagem, mas Yann LeCun et al. argumentam que, em muitos problemas práticos, não é.[13]
- O aprendizado por retropropagação não requer a normalização dos vetores de entrada; no entanto, a normalização pode melhorar o desempenho.[14]
- A retropropagação requer que as derivadas das funções de ativação sejam conhecidas no momento do projeto da rede.
História
Precursores
A retropropagação foi derivada repetidamente, pois é essencialmente uma aplicação eficiente da regra da cadeia (escrita pela primeira vez por Gottfried Wilhelm Leibniz em 1676)[15][16] para as redes neurais.
A terminologia "correção de erro de retropropagação" foi introduzida em 1962 por Frank Rosenblatt, mas ele não sabia como implementá-la.[17] De qualquer forma, ele apenas estudou neurônios cujas saídas eram níveis discretos, que tinham apenas derivadas nulas, tornando a retropropagação impossível.
Precursores da retropropagação apareceram na teoria do controle ótimo desde a década de 1950. Yann LeCun et al creditam o trabalho da década de 1950 de Pontryagin e outros na teoria do controle ótimo, especialmente o método do estado adjunto, por ser uma versão em tempo contínuo da retropropagação.[18] Hecht-Nielsen[19] credita o algoritmo de Robbins-Monro (1951)[20] e o Applied Optimal Control (1969) de Arthur Bryson e Yu-Chi Ho como presságios da retropropagação. Outros precursores foram Henry J. Kelley em 1960, e Arthur E. Bryson (1961). Em 1962, Stuart Dreyfus publicou uma derivação mais simples baseada apenas na regra da cadeia.[21][22][23] Em 1973, ele adaptou parâmetros de controladores proporcionalmente aos gradientes de erro.[24] Ao contrário da retropropagação moderna, esses precursores usaram cálculos de matriz Jacobiana padrão de um estágio para o anterior, não abordando ligações diretas por vários estágios nem os potenciais ganhos de eficiência adicionais devido à esparsidade da rede.[25]
O algoritmo de aprendizado ADALINE (1960) consistia na descida de gradiente com perda de erro quadrático para uma única camada. O primeiro perceptron de múltiplas camadas (MLP) com mais de uma camada treinado pela descida de gradiente estocástico[20] foi publicado em 1967 por Shun'ichi Amari.[26] O MLP tinha 5 camadas, com 2 camadas treináveis, e aprendeu a classificar padrões não separáveis linearmente.[25]
Retropropagação moderna
A retropropagação moderna foi publicada pela primeira vez por Seppo Linnainmaa como "modo reverso da diferenciação automática" (1970)[27] para redes conectadas discretas de funções aninhadas diferenciáveis.[28][29][30]
Em 1982, Paul Werbos aplicou a retropropagação a MLPs da maneira que se tornou padrão.[31][32] Werbos descreveu como desenvolveu a retropropagação em uma entrevista. Em 1971, durante o seu doutorado, desenvolveu a retropropagação para matematizar o "fluxo de energia psíquica" de Freud. Ele enfrentou repetidas dificuldades em publicar o trabalho, conseguindo apenas em 1981.[33] Ele também afirmou que "a primeira aplicação prática da retropropagação foi para estimar um modelo dinâmico para prever o nacionalismo e as comunicações sociais em 1974" por ele.[34]
Por volta de 1982,[33]:376 David E. Rumelhart desenvolveu de forma independente[35]:252 a retropropagação e ensinou o algoritmo a outros no seu círculo de pesquisa. Ele não citou os trabalhos anteriores pois não os conhecia. Ele publicou o algoritmo primeiro num artigo de 1985 e depois num artigo da Nature em 1986 apresentando uma análise experimental da técnica.[36] Estes artigos tornaram-se altamente citados, contribuíram para a popularização da retropropagação e coincidiram com o ressurgimento do interesse em pesquisas em redes neurais durante a década de 1980.[8][37][38]
Em 1985, o método também foi descrito por David Parker.[39][40] Yann LeCun propôs uma forma alternativa de retropropagação para redes neurais na sua tese de doutorado em 1987.[41]
A descida de gradiente demorou bastante tempo a alcançar aceitação. Algumas objeções iniciais foram: não havia garantias de que a descida de gradiente pudesse alcançar um mínimo global, apenas um mínimo local; os neurônios eram "conhecidos" pelos fisiologistas por produzirem sinais discretos (0/1), e não contínuos, e com sinais discretos não há gradiente a ser calculado. Veja a entrevista com Geoffrey Hinton,[33] que recebeu o Prémio Nobel de Física de 2024 pelas suas contribuições na área.[42]
Sucessos iniciais
Várias aplicações no treinamento de redes neurais através da retropropagação contribuíram para a sua aceitação, por vezes alcançando popularidade fora dos círculos de pesquisa.
Em 1987, a NETtalk aprendeu a converter texto em inglês em pronúncia. Sejnowski tentou treiná-la tanto com a retropropagação quanto com a máquina de Boltzmann, mas concluiu que a retropropagação era significativamente mais rápida e, por isso, utilizou-a para a NETtalk final.[33]: O programa NETtalk tornou-se um sucesso popular, aparecendo no programa Today.[43]
Em 1989, Dean A. Pomerleau publicou o ALVINN, uma rede neural treinada para conduzir autonomamente usando a retropropagação.[44]
A LeNet foi publicada em 1989 para reconhecer códigos postais escritos à mão.
Em 1992, o TD-Gammon alcançou o nível mais alto de jogo humano no gamão. Era um agente de aprendizagem por reforço com uma rede neural de duas camadas, treinado pela retropropagação.[45]
Em 1993, Eric Wan venceu um concurso internacional de reconhecimento de padrões através da retropropagação.[46][47]
Após a retropropagação
Durante a década de 2000 o método perdeu popularidade, mas retornou na década de 2010, beneficiando de sistemas de computação baseados em GPUs que eram potentes e baratos. Isto verificou-se especialmente na identificação de voz, visão computacional, processamento de linguagem natural e em pesquisas de aprendizagem de estrutura linguística (onde tem sido utilizado para explicar uma variedade de fenómenos relacionados com a aprendizagem da primeira[48] e segunda língua.[49])[50]
Sugeriu-se que a retropropagação de erros explica os componentes do potencial relacionado a eventos (ERP) do cérebro humano, como o N400 e o P600.[51]
Em 2023, um algoritmo de retropropagação foi implementado num processador fotônico por uma equipa da Universidade de Stanford.[52]
Notas
- ↑ Use para a função de perda para permitir que seja usado para o número de camadas
- ↑ Isto segue Nielsen (2015), e significa que a multiplicação (à esquerda) pela matriz corresponde a converter valores de saída da camada em valores de entrada da camada : colunas correspondem a coordenadas de entrada, linhas correspondem a coordenadas de saída.
- ↑ Esta seção segue e resume em grande parte Nielsen (2015).
- ↑ A derivada da função de perda é um covetor, uma vez que a função de perda é uma função de valor escalar de várias variáveis.
- ↑ A função de ativação é aplicada a cada nó separadamente, de modo que a derivada é apenas a matriz diagonal da derivada em cada nó. Isso é frequentemente representado como o produto de Hadamard com o vetor de derivadas, denotado por , que é matematicamente idêntico, mas se adequa melhor à representação interna das derivadas como um vetor, em vez de uma matriz diagonal.
- ↑ Como a multiplicação de matrizes é linear, a derivada da multiplicação por uma matriz é a própria matriz: .
- ↑ Pode-se notar que redes neurais de múltiplas camadas usam funções de ativação não lineares, então um exemplo com neurônios lineares parece obscuro. No entanto, mesmo que a superfície de erro de redes de múltiplas camadas seja muito mais complicada, localmente elas podem ser aproximadas por um paraboloide. Portanto, neurônios lineares são usados para simplicidade e facilitar a compreensão.
- ↑ Pode haver vários neurônios de saída, caso em que o erro é a norma ao quadrado do vetor diferença.
- ↑ Esta ordem segue (Rumelhart, Hinton & Williams, 1986a):[8] " é a mudança a ser feita no peso da -ésima para a -ésima unidade"
Referências
- ↑ Kelley, Henry J. (1960). «Gradient theory of optimal flight paths». ARS Journal. 30 (10): 947–954. doi:10.2514/8.5282
- ↑ Bryson, Arthur E. (1962). «A gradient method for optimizing multi-stage allocation processes». Proceedings of the Harvard Univ. Symposium on digital computers and their applications, 3–6 April 1961. Cambridge: Harvard University Press. OCLC 498866871
- ↑ Goodfellow, Bengio & Courville 2016, p. 214, "Esta estratégia de preenchimento de tabela é às vezes chamada de programação dinâmica."
- ↑ Goodfellow, Bengio & Courville 2016, p. 200, "O termo retropropagação é frequentemente mal interpretado como significando todo o algoritmo de aprendizado para redes neurais de múltiplas camadas. A retropropagação refere-se apenas ao método para calcular o gradiente, enquanto outros algoritmos, como a descida de gradiente estocástico, são usados para realizar o aprendizado usando esse gradiente."
- ↑ Goodfellow, Bengio & Courville (2016, p. 217–218), "O algoritmo de retropropagação descrito aqui é apenas uma abordagem para a diferenciação automática. É um caso especial de uma classe mais ampla de técnicas chamada de acumulação em modo reverso."
- ↑ Ramachandran, Prajit; Zoph, Barret; Le, Quoc V. (27 de outubro de 2017). «Searching for Activation Functions». arXiv:1710.05941
[cs.NE]
- ↑ Misra, Diganta (23 de agosto de 2019). «Mish: A Self Regularized Non-Monotonic Activation Function» (em inglês). arXiv:1908.08681
[cs.LG]
- ↑ a b c Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. (1986). «Learning representations by back-propagating errors». Nature. 323 (6088): 533–536. Bibcode:1986Natur.323..533R. doi:10.1038/323533a0
- ↑ Tan, Hong Hui; Lim, King Han (2019). «Review of second-order optimization techniques in artificial neural networks backpropagation». IOP Conference Series: Materials Science and Engineering. 495 (1). Bibcode:2019MS&E..495a2003T. doi:10.1088/1757-899X/495/1/012003
. 012003
- ↑ a b Wiliamowski, Bogdan; Yu, Hao (junho de 2010). «Improved Computation for Levenberg–Marquardt Training» (PDF). IEEE Transactions on Neural Networks and Learning Systems. 21 (6): 930. Bibcode:2010ITNN...21..930W. doi:10.1109/TNN.2010.2045657. Cópia arquivada (PDF) em 22 de abril de 2025
- ↑ Martens, James (agosto de 2020). «New Insights and Perspectives on the Natural Gradient Method». Journal of Machine Learning Research (21). arXiv:1412.1193
- ↑ Nielsen (2015), "[Q]uais pressupostos precisamos fazer sobre nossa função de custo ... para que a retropropagação possa ser aplicada? O primeiro pressuposto de que precisamos é que a função de custo possa ser escrita como uma média ... sobre as funções de custo ... para exemplos de treinamento individuais ... O segundo pressuposto que fazemos sobre o custo é que ele pode ser escrito como uma função das saídas da rede neural ..."
- ↑ LeCun, Yann; Bengio, Yoshua; Hinton, Geoffrey (2015). «Deep learning» (PDF). Nature. 521 (7553): 436–444. Bibcode:2015Natur.521..436L. PMID 26017442. doi:10.1038/nature14539. Cópia arquivada (PDF) em 5 de março de 2026
- ↑ Buckland, Matt; Collins, Mark (2002). AI Techniques for Game Programming. Boston: Premier Press. ISBN 1-931841-08-X
- ↑ Leibniz, Gottfried Wilhelm Freiherr von (1920). The Early Mathematical Manuscripts of Leibniz: Translated from the Latin Texts Published by Carl Immanuel Gerhardt with Critical and Historical Notes (Leibniz published the chain rule in a 1676 memoir) (em inglês). [S.l.]: Open court publishing Company. ISBN 978-0-598-81846-1. Cópia arquivada em 6 de janeiro de 2026
- ↑ Rodríguez, Omar Hernández; López Fernández, Jorge M. (2010). «A Semiotic Reflection on the Didactics of the Chain Rule». The Mathematics Enthusiast. 7 (2): 321–332. doi:10.54870/1551-3440.1191
. Consultado em 4 de agosto de 2019. Cópia arquivada em 14 de agosto de 2025
- ↑ Rosenblatt, Frank (1962). Principles of Neurodynamics. [S.l.]: Spartan, New York. pp. 287–298
- ↑ LeCun, Yann, et al. "A theoretical framework for back-propagation." Proceedings of the 1988 connectionist models summer school. Vol. 1. 1988.
- ↑ Hecht-Nielsen, Robert (1990). Neurocomputing. Internet Archive. [S.l.]: Reading, Mass. : Addison-Wesley Pub. Co. pp. 124–125. ISBN 978-0-201-09355-1
- ↑ a b Robbins, H.; Monro, S. (1951). «A Stochastic Approximation Method». The Annals of Mathematical Statistics. 22 (3): 400. doi:10.1214/aoms/1177729586
- ↑ Dreyfus, Stuart (1962). «The numerical solution of variational problems». Journal of Mathematical Analysis and Applications. 5 (1): 30–45. doi:10.1016/0022-247x(62)90004-5
- ↑ Dreyfus, Stuart E. (1990). «Artificial Neural Networks, Back Propagation, and the Kelley-Bryson Gradient Procedure». Journal of Guidance, Control, and Dynamics. 13 (5): 926–928. Bibcode:1990JGCD...13..926D. doi:10.2514/3.25422
- ↑ Mizutani, Eiji; Dreyfus, Stuart; Nishio, Kenichi (julho de 2000). «On derivation of MLP backpropagation from the Kelley-Bryson optimal-control gradient formula and its application» (PDF). Proceedings of the IEEE International Joint Conference on Neural Networks. Cópia arquivada (PDF) em 4 de junho de 2025
- ↑ Dreyfus, Stuart (1973). «The computational solution of optimal control problems with time lag». IEEE Transactions on Automatic Control. 18 (4): 383–385. doi:10.1109/tac.1973.1100330
- ↑ a b Schmidhuber, Jürgen (2022). «Annotated History of Modern AI and Deep Learning». arXiv:2212.11279
[cs.NE]
- ↑ Amari, Shun'ichi (1967). «A theory of adaptive pattern classifier». IEEE Transactions. EC (16): 279–307
- ↑ Linnainmaa, Seppo (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors (Mestrado) (em finlandês). University of Helsinki. pp. 6–7
- ↑ Linnainmaa, Seppo (1976). «Taylor expansion of the accumulated rounding error». BIT Numerical Mathematics. 16 (2): 146–160. doi:10.1007/bf01931367
- ↑ Griewank, Andreas (2012). «Who Invented the Reverse Mode of Differentiation?». Optimization Stories. Col: Documenta Mathematica, Extra Volume ISMP. [S.l.: s.n.] pp. 389–400
- ↑ Griewank, Andreas; Walther, Andrea (2008). Evaluating Derivatives: Principles and Techniques of Algorithmic Differentiation, Second Edition. [S.l.]: SIAM. ISBN 978-0-89871-776-1
- ↑ Werbos, Paul (1982). «Applications of advances in nonlinear sensitivity analysis». System modeling and optimization. [S.l.]: Springer. pp. 762–770. Cópia arquivada (PDF) em 14 de abril de 2016
|arquivourl=requer|url=(ajuda) Parâmetro desconhecido|capitulo-url=ignorado (ajuda); - ↑ Werbos, Paul J. (1994). The Roots of Backpropagation: From Ordered Derivatives to Neural Networks and Political Forecasting. Nova York: John Wiley & Sons. ISBN 0-471-59897-6
- ↑ a b c d Anderson, James A.; Rosenfeld, Edward, eds. (2000). Talking Nets: An Oral History of Neural Networks (em inglês). [S.l.]: The MIT Press. ISBN 978-0-262-26715-1. doi:10.7551/mitpress/6626.003.0016. Cópia arquivada em 25 de fevereiro de 2026
- ↑ P. J. Werbos, "Backpropagation through time: what it does and how to do it," in Proceedings of the IEEE, vol. 78, no. 10, pp. 1550–1560, Oct. 1990, doi:10.1109/5.58337
- ↑ Olazaran Rodriguez, Jose Miguel. A historical sociology of neural network research. Dissertação de Doutorado. Universidade de Edimburgo, 1991.
- ↑ Rumelhart; Hinton; Williams (1986). «Learning representations by back-propagating errors» (PDF). Nature. 323 (6088): 533–536. Bibcode:1986Natur.323..533R. doi:10.1038/323533a0. Cópia arquivada (PDF) em 1 de março de 2026
- ↑ Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. (1986). «Learning Internal Representations by Error Propagation». In: Rumelhart, David E.; McClelland, James L. Parallel Distributed Processing: Explorations in the Microstructure of Cognition. 1: Foundations. Cambridge: MIT Press. ISBN 0-262-18120-7
- ↑ Alpaydin, Ethem (2010). Introduction to Machine Learning. [S.l.]: MIT Press. ISBN 978-0-262-01243-0
- ↑ Parker, D.B. (1985). Learning Logic: Casting the Cortex of the Human Brain in Silicon. Center for Computational Research in Economics and Management Science (Relatório). Cambridge MA: Massachusetts Institute of Technology. Technical Report TR-47
- ↑ Hertz, John (1991). Introduction to the theory of neural computation. Krogh, Anders., Palmer, Richard G. Redwood City, Calif.: Addison-Wesley. p. 8. ISBN 0-201-50395-6. OCLC 21522159
- ↑ Le Cun, Yann (1987). Modèles connexionnistes de l'apprentissage (Tese de Thèse de doctorat d'état). Paris, France: Université Pierre et Marie Curie
- ↑ «The Nobel Prize in Physics 2024». NobelPrize.org (em inglês). Consultado em 13 de outubro de 2024. Cópia arquivada em 1 de abril de 2026
- ↑ Sejnowski, Terrence J. (2018). The deep learning revolution. Cambridge, Massachusetts London, England: The MIT Press. ISBN 978-0-262-03803-4
- ↑ Pomerleau, Dean A. (1988). «ALVINN: An Autonomous Land Vehicle in a Neural Network». Morgan-Kaufmann. Advances in Neural Information Processing Systems. 1. Cópia arquivada em 16 de fevereiro de 2026
- ↑ Sutton, Richard S.; Barto, Andrew G. (2018). «11.1 TD-Gammon». Reinforcement Learning: An Introduction 2nd ed. Cambridge, MA: MIT Press Parâmetro desconhecido
|capitulo-url=ignorado (ajuda) - ↑ 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
- ↑ Wan, Eric A. (1994). «Time Series Prediction by Using a Connectionist Network with Internal Delay Lines». In: Weigend, Andreas S.; Gershenfeld, Neil A. Time Series Prediction: Forecasting the Future and Understanding the Past. Col: Proceedings of the NATO Advanced Research Workshop on Comparative Time Series Analysis. 15. Reading: Addison-Wesley. pp. 195–217. ISBN 0-201-62601-2
- ↑ Chang, Franklin; Dell, Gary S.; Bock, Kathryn (2006). «Becoming syntactic.». Psychological Review. 113 (2): 234–272. PMID 16637761. doi:10.1037/0033-295x.113.2.234
- ↑ Janciauskas, Marius; Chang, Franklin (2018). «Input and Age-Dependent Variation in Second Language Learning: A Connectionist Account». Cognitive Science. 42 (Suppl Suppl 2): 519–554. PMC 6001481
. PMID 28744901. doi:10.1111/cogs.12519
- ↑ «Decoding the Power of Backpropagation: A Deep Dive into Advanced Neural Network Techniques». janbasktraining.com (em inglês). 30 de janeiro de 2024. Cópia arquivada em 18 de outubro de 2025
- ↑ Fitz, Hartmut; Chang, Franklin (2019). «Language ERPs reflect learning through prediction error propagation». Cognitive Psychology (em inglês). 111: 15–52. PMID 30921626. doi:10.1016/j.cogpsych.2019.03.002. hdl:21.11116/0000-0003-474D-8
- ↑ «Photonic Chips Curb AI Training's Energy Appetite - IEEE Spectrum». IEEE (em inglês). Consultado em 25 de maio de 2023
Leitura adicional
- Goodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016). «Back-Propagation and Other Differentiation Algorithms». Deep Learning. [S.l.]: MIT Press. pp. 200–220. ISBN 978-0-262-03561-3
- Nielsen, Michael A. (2015). «How the backpropagation algorithm works». Neural Networks and Deep Learning. [S.l.]: Determination Press
- McCaffrey, James (outubro de 2012). «Neural Network Back-Propagation for Programmers». MSDN Magazine. Cópia arquivada em 21 de agosto de 2022
- Rojas, Raúl (1996). «The Backpropagation Algorithm» (PDF). Neural Networks: A Systematic Introduction. Berlim: Springer. ISBN 3-540-60505-3
Ligações externas
- Tutorial de redes neurais com backpropagation na Wikiversity
- Bernacki, Mariusz; Włodarczyk, Przemysław (2004). «Principles of training multi-layer neural network using backpropagation»
- Karpathy, Andrej (2016). «Lecture 4: Backpropagation, Neural Networks 1». CS231n. Stanford University. Cópia arquivada em 17 de outubro de 2025 – via YouTube
- 3Blue1Brown (3 de novembro de 2017). «What is Backpropagation Really Doing?» – via YouTube
- Putta, Sudeep Raja (2022). «Yet Another Derivation of Backpropagation in Matrix Form»
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.
