Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Gostaria de fazer mais uma pergunta sobre gradiente numérico, baseada na explicação que recebi

Gostaria de fazer mais uma pergunta sobre gradiente numérico, baseada na excelente explicação que recebi: https://cursos.alura.com.br/forum/topico-duvida-como-calcular-o-gradiente-numerico-para-testar-se-uma-implantacao-do-backpropagation-esta-correta-445429

Gostei da explicação que a professora me deu:

Como sugestão, para calcular o gradiente numérico e verificar a correção do backpropagation, testes os passos abaixo de exemplo:

* Escolha um valor pequeno, como 1e−5.

* Para cada parâmetro da sua rede:
      1. Aumente o parâmetro pelo valor escolhido e calcule a função de custo.

      2. Diminua o parâmetro pelo mesmo valor e calcule a função de custo novamente.

      3. A diferença entre esses dois valores, dividida pelo dobro do valor pequeno escolhido, dá a aproximação do gradiente.

Compare esses gradientes numéricos com os gradientes obtidos pelo backpropagation. Se a diferença for menor que um pequeno limiar, como 1e−7, sua implementação está correta.

Minha dúvida

Com base nesta explicação, tenho algumas dúvidas:

Especificamente sobre o ponto: "Para cada parâmetro da sua rede"

Suponha que eu tenha uma rede neural com várias camadas ocultas e vários neurônios. Então, ela vai ter vários parametros, em cada camada, em cada neuronio.

DUVIDA: Mais será que importa em qual camada esses parametros estejam?

Vou explicar melhor essa minha dúvida:

Pergunta:

  • (1) Para calcular o gradiente numérico de um parâmetro específico, como W11, que está na primeira camada oculta, a fórmula para o gradiente numérico mudaria dependendo da camada em que o parâmetro está?

  • (2) Ou a forma de calcular o gradiente numérico é sempre a mesma, independentemente da camada em que o parâmetro se encontra?

Agradeço pela ajuda!

2 respostas

Oi William, tudo bem?

Sobre a sua primeira pergunta: não, a fórmula para calcular o gradiente numérico não muda dependendo da camada em que o parâmetro está. O processo é o mesmo para qualquer parâmetro da rede. O que muda é o valor específico do parâmetro que você está ajustando, mas a fórmula e o método são sempre iguais.

Para a segunda dúvida: sim, a forma de calcular o gradiente numérico é sempre a mesma, não importa em qual camada o parâmetro esteja. A ideia é que você está aproximando a derivada da função de custo em relação a um parâmetro específico, e esse método de aproximação é o mesmo para todos os parâmetros.

Espero ter ajudado.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!
solução!

Oi Monalisa. Tudo bem?

Muito obrigado por explicar esses pontos!