2
respostas

[Dúvida] Como o backpropagation funciona? quais as etapas que ele segue?

Esse artigo aqui da Alura cita o backpropagation e explica um pouco sobre ele. Porém tenho algumas duvidas. https://www.alura.com.br/artigos/desmistificando-termos-machine-learning

O artigo cita o seguinte: "o backpropagation, ou em português retropropagação, que funciona em duas etapas: para frente (forward) e para trás (backward). [...] Em outras palavras, ele utiliza o cálculo de gradiente descendente de forma automatizada, fazendo com que o algoritmo caminhe para frente e para trás pelas camadas intermediárias, buscando diminuir a taxa de erro até convergir a melhor solução, ou seja, a melhor acurácia."

Porém, eu queria me aprofundar mais sobre como o backpropagation funciona. Queria entender mais a fundo as etapas que ele segue, pra entender os calculos que estão envolvidos, e em qual ordem as etapas são feitas.

Eu ja pesquisei um pouco sobre isso na internet. Porém ja me deparei com fórmulas matriciais que usam matrizes, e eu acho essas fórmulas complicadas de entender. Então por isso quis perguntar sobre o backpropagation aqui.

Por favor, algúem poderia me explicar em mais detalhes o que acontece em cada uma dessas etapas?

Gostaria de fazer algumas perguntas sobre o backpropagation:

1 - Quais etapas o backpropagation utiliza?

2 - Qual a ordem que essas etapas são realizadas? o que vem primeiro, o que vem depois?

3 - Nessas etapas quais fórmulas matematicas são utilizadas?

4 - De que maneira o algoritmo caminha "para frente e para trás pelas camadas intermediárias" ?

Eu gostaria de conseguir executar esses calculos na mão, no papel e caneta, pra aprender mais sobre o backpropagation. Por favor, algúem poderia me explicar mais sobre o assunto?

2 respostas

Oii, William, tudo bem?

1 - Quais etapas o backpropagation utiliza?

O backpropagation segue basicamente duas etapas principais:

  • Propagação para frente (Forward Propagation): os dados de entrada são passados através da rede, camada por camada, até a camada de saída para obter a previsão.

  • Propagação para trás (Backward Propagation): após a obtenção da previsão, calcula-se o erro (diferença entre a previsão e o valor real). Esse erro é então propagado de volta pela rede, o que permite o ajuste dos pesos sinápticos para minimizar o erro nas previsões futuras.

2 - Qual a ordem que essas etapas são realizadas?

A ordem é exatamente como mencionado acima: primeiro ocorre a propagação para frente, onde a rede faz uma previsão baseada nos pesos atuais. Depois, a propagação para trás, onde o erro calculado é usado para ajustar os pesos.

3 - Nessas etapas, quais fórmulas matemáticas são utilizadas?

As fórmulas envolvidas incluem:

  • Cálculo do erro: o erro é calculado usando a função de perda, como o erro quadrático médio (MSE) para tarefas de regressão ou a entropia cruzada para classificação.

  • Gradiente do erro: o gradiente do erro em relação a cada peso é calculado usando o cálculo diferencial (derivadas parciais). Isso indica como o erro muda à medida que cada peso é ajustado.

  • Atualização dos pesos: os pesos são atualizados usando a regra de atualização do gradiente descendente, onde o peso atual é ajustado na direção que minimiza o erro. A fórmula é normlamente deste jeito: novo_peso = peso_atual - taxa_de_aprendizado * gradiente_do_erro.

4 - De que maneira o algoritmo caminha "para frente e para trás pelas camadas intermediárias"?

  • Para frente: começando da camada de entrada, cada neurônio calcula uma soma ponderada de suas entradas e aplica uma função de ativação (como ReLU ou sigmóide) para calcular sua saída, que serve como entrada para a próxima camada.

  • Para trás: após calcular o erro na saída, o gradiente desse erro é usado para calcular o gradiente em relação aos pesos de cada camada anterior, movendo-se da saída para a entrada. Este processo é facilitado pela regra da cadeia em cálculo, permitindo que o gradiente do erro seja propagado para trás.

Para praticar o cálculo manual, você pode começar com uma rede pequena e simples, utilizando poucas entradas e uma única camada oculta, para que você possa acompanhar cada etapa do cálculo sem se perder em matrizes grandes e complexas. Pode ser um pouco difícil, mas vai dar tudo certo :)

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Obrigado Maria por responder!. Eu ainda tenho algumas duvidas. Eu particularmente não entendo a notação matricial que geralmente é usada para representar a rede neural, nem as operações matriciais envolvidas, acho dificil de acompanhar usando operações matriciais. Por isso eu gostaria de conseguir ver as formulas de outra forma, sem precisar usar operações matriciais. Eu acho mais facil formulas que usam somatório da matematica, elemento a elemento.

Seria muito legal uma maneira mais manual, sem utilizar operações matriciais. Iria me ajudar muito, se eu pudesse ver a aplicação das formulas elemento a elemento, tipo ao invez de usar operações matriciais, usasse somatorios, tipo pra eu ver quais as formulas que são aplicadas em cada neuronio de cada camada, sem precisar usar operações matriciais nos calculos.

Por favor, se possivel, poderia explicar mais sobre a formula pra calcular os gradientes na camada de saida e na camada oculta? escritas em forma de somatório, para cada neuronio?, sem precisar usar operações matriciais?

Isso iria me ajudar a entender a lógica do calculo dos gradientes.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software