O algoritmo Backpropagation é um algoritmo de aprendizado supervisionado, que tem como objetivo a minimização de uma função de custo. O algoritmo Backpropagation torna o processo de aprendizado de uma rede neural (seja ela de múltiplas camadas ou não) mais eficiente, pois ele é capaz de calcular o gradiente da função de custo em relação aos pesos da rede, e assim, atualizar os pesos da rede de forma eficiente.
No processo de treinamento de uma rede, o algoritmo backpropagation inicialmente calcula o erro da rede, e então, calcula o gradiente da função de custo em relação aos pesos da rede. O gradiente é calculado através da regra da cadeia, e é calculado para cada camada da rede, da camada de saída até a camada de entrada. Após o cálculo do gradiente, os pesos da rede são atualizados, e o processo é repetido até que o erro da rede seja menor que um valor pré-definido.
O erro da rede é calculado através da função de custo, que é uma função que mede o quão boa é a rede neural. A função de custo é definida pelo usuário, e pode ser qualquer função que seja diferenciável. A função de custo mais comum é a função de custo quadrática, que é definida por:
onde
O gradiente da função de custo em relação aos pesos da rede é calculado através da regra da cadeia. A regra da cadeia é uma regra que permite calcular o gradiente de uma função composta, ou seja, uma função que é composta por outras funções. A regra da cadeia é definida por:
onde
onde
Após o cálculo do gradiente, os pesos da rede são atualizados da seguinte forma:
onde