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

[Dúvida] Eu entendi certo o calculo do gradiente numérico?, baseado na explicação que recebi?

Bom dia!. Tudo bem?

Eu gostaria de perguntar se eu apliquei corretamente a fórmula do gradiente numérico, me baseando na explicação da professora que recebi num tópico anterior: https://cursos.alura.com.br/forum/topico-duvida-como-calcular-o-gradiente-numerico-para-testar-se-uma-implantacao-do-backpropagation-esta-correta-445429

Exemplo de Rede Neural que criei para fazer essa pergunta: Exemplo de Rede Neural que criei para fazer essa pergunta

Se eu quero calcular o gradiente numérico do peso W11, que está na primeira camada oculta

Eu faria assim?

EU TENTANDO APLICAR EM FORMA DE PSEUDO-CODIGO:

var valor_escolhido = 1e−5; 

//Erro Quadrático Médio
var funcao_de_custo_MSE = function(valor_predito, valor_desejado){
    return (valor_predito - valor_desejado)^2
}

var OBTER_SAIDAS_Y_REDE_NEURAL= function(pesos){
    //Eu obteria as previsões Y da rede neural, usando os pesos atuais no feedforward
}

var pesos = {
    W11: 0,
    W12: 0,
    W21: 0,
    etc...
    (todos os parametros da rede neural aqui)
}

/* APLICANDO A FÓRMULA */

/* 
* Passo 1: Aumente o parâmetro pelo valor escolhido e calcule a função de custo.
* AUMENTANDO O W11 PELO VALOR ESCOLHIDO
*/
pesos.W11 = pesos.W11 + valor_escolhido

/* Calculando o custo( DEPOIS DE TER AUMENTADO O W11 ) */
MSE_W11_maisOValor = funcao_de_custo_MSE( OBTER_SAIDAS_Y_REDE_NEURAL( pesos ) )
  

/*
* Passo 2: Diminua o parâmetro pelo mesmo valor e calcule a função de custo novamente.
* DIMINUINDO O W11 PELO VALOR ESCOLHIDO
*/
pesos.W11 = pesos.W11 - valor_escolhido

/* Calculando o custo novamente( DEPOIS DE TER DIMINUIDO O W11 ) */
MSE_W11_menosOValor = funcao_de_custo_MSE( OBTER_SAIDAS_Y_REDE_NEURAL( pesos )  )
  

/* 
* Passo 3: A diferença entre esses dois valores, dividida pelo dobro do valor pequeno escolhido, dá a aproximação do gradiente.
* CALCULANDO O GRADIENTE APROXIMADO
*/
gradienteAproximado = (MSE_W11_maisOValor - MSE_W11_menosOValor) / (valor_escolhido * 2)

Minha interpretação da fórmula que apliquei(que a professora explicou no outro tópico)

Parece que o objetivo disso é entender como a função de custo se comporta quando o peso especifico W11 é aumentado, e quando o peso W11 é diminuido. Ou seja, é por isso que eu mexo no peso W11 aumentando ele, e depois calculo o custo. E depois diminuio e calculo o custo novamente. Isso é pra obter esses insights.

Eu primeiro pego meu parametro W11 e aumento ele(somando) pelo valor escolhido 1e−5. Depois eu calculo o custo MSE(Erro Quadrático Médio), e pra calcular esse custo eu vou precisar usar a saída da minha rede neural com aquele parametro W11 aumentado. Porém eu só mexi nesse parametro W11, e os outros parametros eu deixei como estavam.. Depois eu peguei o peso W11 novamente, e diminui ele pelo valor escolhido. Calculei o custo novamente da mesma forma. Depois tirei a diferença e dividi pelo dobro do valor escolhido

PERGUNTAS:

  • (1) Eu apliquei corretamente a fórmula do gradiente númerico para o peso W11 ?

  • (2) Minha interpretação da fórmula está correta? Eu entendi corretamente a explicação do tópico mencionado?

Agradeço pela ajuda!

3 respostas
solução!

Oii, William!

Agradeço por interagir no fórum trazendo a prática dos estudos que tem feito.

Você está no caminho certo, com alguns ajustes conforme for avançando nos estudos você vai obter um bom resultado. Recomendo que revise alguns pontos como: criar cópias separadas dos pesos para cada cálculo, usar o mesmo conjuntos de dados de entrada para ambos os cálculos de custo e restaurar o valor original de W11 após calcular o gradiente aproximado.

Para te auxiliar nos estudos, deixo alguns artigos linkado abaixo:

Espero ter ajudado, continue se dedicando aos estudos como vem fazendo.

Abraço!

Muito obrigado por me ensinar isso. Com certeza vou continuar estudando sim, estou aprendendo muito aqui com vocês na Alura.

Abraços!

Oii, William!

Obrigada por compartilhar esse feedback! É legal saber que estamos contribuindo em sua evolução nos estudos!

Conte sempre com a Alura para de desenvolver cada vez mais.

Abraço!