Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: 4v1dy4 en 6 Octubre 2023, 23:23 pm



Título: Fundamento de una de las relaciones en el algoritmo de gradient descent aplicado a inteligencia artificial.
Publicado por: 4v1dy4 en 6 Octubre 2023, 23:23 pm
Estoy confundido con lo siguiente:

La definicion del algoritmo gradient descent, aplicado en backpropagation para entrenar redes neuronales, es la siguiente:

(https://media.geeksforgeeks.org/wp-content/uploads/20200611183120/1406-7.png)

Sin embargo, en el siguiente blog,

https://anderfernandez.com/blog/como-programar-una-red-neuronal-desde-0-en-python/ (https://anderfernandez.com/blog/como-programar-una-red-neuronal-desde-0-en-python/)

Se aprecia como se calcula delta de la siguente forma:

Código
  1.  if capa == back[0]:
  2.    x = mse(a,Y)[1] * red_neuronal[capa].funcion_act[1](a)
  3.    delta.append(x)
  4.  
  5.  # Backprop en el resto de capas
  6.  else:
  7.    x = delta[-1] @ W_temp * red_neuronal[capa].funcion_act[1](a)
  8.    delta.append(x)
  9.  

La pregunta es:

¿Por que se multiplica delta con W_temp?
¿Cual es el proposito de W_temp en general?

No entiendo en que parte de la definicion original puede caber ese W_temp, o cual es la logica que cumple.

Gracias de antemano y buenas noches.



Ya encontre la respuesta.

Se multiplica por la derivada el error. Esto indica el "factor necesario" para entrenar la red neuronal (es decir, que tan equivocada esta, en terminos de la relacion entre la derivada de la funcion de activacion, es decir, el cambio en la misma, la prediccion).