Hola Leonardo, muchas gracias por tu comentario y tu pregunta, es una excelente pregunta. En este caso, lo importante es analizar que la función ReLU puede verse como la combinación de dos funciones, llamemos Z a la entrada de la función ReLU y A a la salida de la función ReLU, entonces ReLU está dada por A=max(0, Z), es decir los valores negativos de entrada se truncan a zero y los positivos se dejan pasar tal cual, sin ningún cambio. Dicho de otra forma, A=0, en el intervalo Z de -infinito a 0 A=Z, en el intervalo de Z de 0 a +infinito Entonces, nos podemos dar cuenta que dA/dZ = 0, cuando Z es negativo, y dA/dZ= 1, cuando Z es positivo. Estrictamente, dA/dZ está indefinido cuando Z=0, sin embargo usualmente no hacemos caso de esto e incluimos el 0 como si fuera un número positivo. Así, en resumen, tenemos que el gradiente es 1 cuando Z es positivo, y 0 cuando Z es negativo, y listo! Esto se traduce en que al momento de hacer la retro propagación, el gradiente que llega a la capa de ReLU, por ejemplo dJ/dA, se deja pasar tal cual a las neuronas (Z) de la capa previa a la capa ReLU que tenían valores Z positivos, y no se retropropaga ningún gradiente a las neuronas de la capa previa con valores Z negativos. A veces me resulta más fácil interpretar el código, donde retropropagamos este gradiente de la siguiente manera: dz[z
@@PepeCantoralPhD Muchísimas gracias, he estado viendo los videos que haz publicado sobre redes neuronales y me inspiraste a realizarlo c#, muchas gracias.
Muchísimas gracias a ti, salvaste mi tesis de magíster!!!
Gracias 🫶🏻🤘🏻🤘🏻
Es una gran y detallada explicación !!!!!!
Buen video
Muchas gracias por tu comentario! Muchos saludos!
Pepe, te agradezco enormemente a vos por tu tiempo, dedicación y la excelente forma que tenes de transmitir el conocimiento! Abrazo
agradecerle a usted profe por semejante esfuerzo al explicar todo esto 🙂
De verdad muchas gracias por tu comentario! Saludos!
Me fascina observar como tu contenido aumenta muchísimo su calidad a medida que sigues el curso
Muchísimas gracias por tu comentario, me motiva enormemente!!!
Me gusta mucho ver tus videos, están muy buenos
☝️🤓
Muchas gracias!!! Hasta pronto1
gracias deseaba aprender la formula de deep learning
Muchas gracias por tu comentario y apoyo! Saludos!
Hola Pepe soy Leonardo Moreno y te escribo desde chile y tengo una consulta como se resuelve la (da2/dz2) siendo que a2 es la salida de la capa ReLU.
Hola Leonardo, muchas gracias por tu comentario y tu pregunta, es una excelente pregunta. En este caso, lo importante es analizar que la función ReLU puede verse como la combinación de dos funciones, llamemos Z a la entrada de la función ReLU y A a la salida de la función ReLU, entonces
ReLU está dada por A=max(0, Z), es decir los valores negativos de entrada se truncan a zero y los positivos se dejan pasar tal cual, sin ningún cambio. Dicho de otra forma,
A=0, en el intervalo Z de -infinito a 0
A=Z, en el intervalo de Z de 0 a +infinito
Entonces, nos podemos dar cuenta que dA/dZ = 0, cuando Z es negativo, y dA/dZ= 1, cuando Z es positivo. Estrictamente, dA/dZ está indefinido cuando Z=0, sin embargo usualmente no hacemos caso de esto e incluimos el 0 como si fuera un número positivo.
Así, en resumen, tenemos que el gradiente es 1 cuando Z es positivo, y 0 cuando Z es negativo, y listo! Esto se traduce en que al momento de hacer la retro propagación, el gradiente que llega a la capa de ReLU, por ejemplo dJ/dA, se deja pasar tal cual a las neuronas (Z) de la capa previa a la capa ReLU que tenían valores Z positivos, y no se retropropaga ningún gradiente a las neuronas de la capa previa con valores Z negativos.
A veces me resulta más fácil interpretar el código, donde retropropagamos este gradiente de la siguiente manera:
dz[z
@@PepeCantoralPhD Muchísimas gracias, he estado viendo los videos que haz publicado sobre redes neuronales y me inspiraste a realizarlo c#, muchas gracias.
Súper interesante tu proyecto, mucho éxito! Saludos