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!