6
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?

6 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.

Oi, William, espero que você esteja bem!

Desculpe a demora.

Para olhar mais a fundo sobre essas questões, vou deixar, na verdade, dois links que vão te ajudar com a questão da matemática por trás do Backpropagation. Por lá há as fórmulas em formato de somatório, como você acha melhor para aprender, e também há muita informação a mais explicando o uso delas =)

Lembrando que as página estão em inglês, mas caso você precise, recomendo o uso de um tradutor para entender o conteúdo.

Abraços!

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

Boa tarde Maria. Obrigado por enviar os artigos!, eles vão me ajudar bastante.

Lendo o segundo artigo que voce me mandou do Brillant, tive uma duvida, por favor, poderia me ajudar a esclarecer esse ponto tambem?.

Tem uma parte do artigo explicando sobre calcular o erro nas camadas ocultas, que diz assim "Conectar isso à equação acima produz uma equação final para o termo de erro &, nas camadas ocultas, chamada de fórmula de retropropagação:"

Formula extraida do artigo

No final ele da outro exemplo dessa formula:

Imagem do outro exemplo Fiquei com essa duvida: Pelo que indica esse indice K parecem ser camadas, então, logo K+1 parece ser a camada seguinte. Mais não tenho certeza se entendi certo.. Nessa outra imagem abaixo destaquei algumas coisas que fiquei com um pouco de duvida.

Imagem destacando minha duvida

Tenho umas 5 perguntas que gostaria de fazer sobre essa formula:

1 - Esse simbolo K+1 que destaquei em vermelho na formula representa a camada seguinte?

2 - Na formula: o peso Wjl(de K+1) seria um valor númerico? e o gradiente &l seria também um valor numérico?

3 - Outra duvida sobre os pesos de conexão: o termo W de K + 1 na formula, quando acessa o indice J e L, eu estou na verdade pegando o peso que conecta a unidade J da camada atual(ou seja, da unidade J que estou calculando o gradiente) com a unidade L da camada seguinte(da iteração atual do somatório), ou seja, um valor numérico, que é o peso de conexão ? eu entendi corretamente isso?

4 - Outra pergunta: pelo que vejo, parece que para se calcular o gradiente de uma unidade na camada oculta atual(camada representada pela letra K) ele faz um somatório, somando os gradientes & da camada seguinte(camada representada por K + 1). Porém eu não confio totalmente nessa minha conclusão, pois esses indices J e L usados pelo artigo foram um pouco diferentes dos que eu li em outros artigo. Por isso gostaria de perguntar pra confirmar: minha interpretação do artigo e das formulas está correta? é isso mesmo que entendi? Por favor, poderia me explicar mais a fundo essa parte?

5 - Ultima duvida comparando com outra fonte: Queria fazer uma pergunta sobre outra formula de outra fonte: https://home.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html A imagem abaixo: Outra fonte que queria perguntar Pergunta: A fórmula do artigo do Brillant que voce citou ela é equivalente ao que está sendo feito nessa outra imagem do HomeEdu que citei acima ? Essa imagem do HomeEdu está ilustrando a mesma coisa que a formula do Brillant mostra?

Primeiramente, gostaria de agradeçer pela paciencia. É muito bom poder conversar com pessoas que tem conhecimento no assunto.

Oii, William! Tudo bem novamente? 😊

Fico muito feliz em ver seu entusiasmo para se aprofundar no assunto. No entanto, suas perguntas vão além do escopo do que costumamos responder aqui no Fórum, que são geralmente questões relacionadas aos cursos. Elas são bem específicas, parecem, na realidade, até de nível de mestrado.

O que posso fazer para te ajudar é indicar alguns materiais extras, como artigos relevantes. No entanto, para dúvidas bem específicas sobre as regras de um artigo, somente o autor poderá fornecer respostas precisas.

Recomendo que para se aprofundar, você leia livros da área e converse com profissionais da área no LinkedIn. Isso te agregará muito.

Peço desculpas por não conseguir atender plenamente suas necessidades, mas espero que as dicas e artigos que já trocamos tenham sido úteis de alguma forma.

Um grande abraço e sucesso na sua jornada!

Entendo. Claro que foram úteis. Agradeço por todas as explicaçoes que voce deu até aqui, me ajudou bastante. E obrigado pelas recomendações, com certeza quero me aprofundar.

Se voce tiver algum material extra que voce acha relevante que voce gostaria de indicar pra eu ler, me indique por favor. Quero aprender o máximo que eu puder.

Muito obrigado!.