Executando verificação de segurança...
2

[Dúvida] [Redes Neurais] Como eu posso implementar um algoritmo de retropropagação?

Estou estudando de forma independente sobre redes neurais, e tenho como objetivo criar uma rede neural completamente do zero em alguma linguagem e sem uso de bibliotecas.

Até o momento entendi bem o conceito do que é uma rede neural e até consigo implementar uma rede neural com multiplas camadas e com algoritmo de propagação direta (feed forward), porém agora estou tentando entender o conceito de retropropagação (back propagation), e de alguma forma implementar, mas estou com dificuldades para compreender isso.

Criei essa discussão com o intuito de pedir dicas e conselhos de como prosseguir, quais são os requisitos para estudo, compatilhamento de informações e fontes de estudos, e afins.

Carregando publicação patrocinada...
5

deto, nesta playlist do canal The Coding Train, há alguns vídeos (Part1, Part2, Part3, Part4, Part5, ...) em que o Daniel Shiffman começa com um pouco da teoria sobre retropropagação. Na série completa, implementa uma rede neural artificial Multilayer Perceptron (a mais simples). Além desta série, ele tem outro vídeo em seu canal no qual continua a tratar do tema.

Retropropagação aplicada a redes neurais artificiais pode parecer um assunto difícil mas, na minha opinião, é uma das partes mais importantes relativas à aprendizagem da rede. Talvez por isso o assunto tomou vários vídeos no canal dele.

Para saber um pouco mais a respeito da Matemática envolvida no tema geral, acompanho a playlist que o Grant Sanderson vem construindo em seu canal 3Blue1Brown no Youtube. O tema "cálculo de retropropagação" já está disponível, contudo surgiro que assista os 4 (de 6) primeiros vídeos da série Deep Learning:

Em vez de utilizar bibliotecas dedicadas para calcular a rede neural artificial, preferi um código em C livre delas a fim de saber o que realmente acontece em cada bloco, começando com algo bem básico, em que a rede aprende uma tabela lógica XOR.

2

TL;RD: Vim aqui dar meu feedback (atual), e sinto que estou desenvolvendo em uma boa direção minhas habilidades. Consegui implementar uma rede neural profunda, bem como entender a retropropação, além de conseguir dar rumo a outros conceitos e começar estudar mais profundamente sobre redes neurais mais complexas, como RNNs (LSTMs, GRUs), etc.

Comecei treinando um modelo XOR inicialmente, vi que deu certo (também visualizando o erro via RMSE), logo após fui para um modelo da soma de dois números (entre 0 e 9) e deu certo também, e agora eu fiz um modelo para ela aprender a seguir um obstáculo e deu certo também. Tô pensando em mais coisas para fazer. É divertido e legal ver o próprio algoritmo funcionando (e por incrível que pareça em uma semana).

Foi de grande ajuda as recomendações que me passou, obrigado, principalmente em relação ao desenvolvimento da minha matemática onde me faltava o conhecimento nescessário, mas com isso agora consigo buscar formas de me auto-aperfeiçoar. E uma dica para quem também está com dificuldades é tentar e fazer na prática, e se não der certo, estuda, pensa um pouco, reflete, descansa e tenta de novo até conseguir, o esforço é tudo.

Foi isso, não respondi antes por não ter um feedback ainda, mas aí está. :)

1