Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:2eval:tema07.backpropagation_descenso_gradiente

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
clase:iabd:pia:2eval:tema07.backpropagation_descenso_gradiente [2024/11/06 16:44]
admin [Profundizando en el descenso de gradiente]
clase:iabd:pia:2eval:tema07.backpropagation_descenso_gradiente [2025/01/22 18:28] (actual)
admin [Ejercicios]
Línea 26: Línea 26:
 $$ $$
 \large loss(x,y,parametros)=\frac{1}{N} \sum_{i=1}^{N}|y_i-\frac{1}{1 + e^{-(  w_{5,2}\frac{1}{1 + e^{-( w_{2}x_i+b_{2}  )}}+w_{5,3}\frac{1}{1 + e^{-( w_{3}x_i+b_{3}  )}}+w_{5,4}\frac{1}{1 + e^{-( w_{4}x_i+b_{4}  )}}+b_5 )}}|     \large loss(x,y,parametros)=\frac{1}{N} \sum_{i=1}^{N}|y_i-\frac{1}{1 + e^{-(  w_{5,2}\frac{1}{1 + e^{-( w_{2}x_i+b_{2}  )}}+w_{5,3}\frac{1}{1 + e^{-( w_{3}x_i+b_{3}  )}}+w_{5,4}\frac{1}{1 + e^{-( w_{4}x_i+b_{4}  )}}+b_5 )}}|    
 +$$
 +
 +$$
 +loss(x,y,parametros)=loss(x,y,w_{2} , w_{3} , w_{4} , w_{5,2} , w_{5,3} , w_{5,4} , b_{4} , b_{2} , b_{3} , b_5)
 $$ $$
  
Línea 156: Línea 160:
  
 <note tip>En el contexto del descenso de gradiente no se suele hablar que el resultado de la fórmula es la derivada sino el gradiente. Ya que para eso estamos en el //descenso de gradente//</note> <note tip>En el contexto del descenso de gradiente no se suele hablar que el resultado de la fórmula es la derivada sino el gradiente. Ya que para eso estamos en el //descenso de gradente//</note>
 +
 +Para entender la derivada podemos usar estos 2 recursos de Gecebra:
 +  * [[https://www.geogebra.org/classic/kspgbec4|Pendiente de una recta]]: La pendiente es el valor de las derivada.
 +  * [[https://www.geogebra.org/m/zfg8nxt6|Cálculo gráfico de derivadas]]: Se puede ver la derivada (pendiente) en cada punto de una curva
  
  
Línea 463: Línea 471:
 Que genera la siguiente gráfica Que genera la siguiente gráfica
  
-{{ :clase:iabd:pia:2eval:descenso_gradiente_algoritmo_vanilla_1.png?direct&700 |}}+{{ :clase:iabd:pia:2eval:descenso_gradiente_algoritmo_vanilla_1.png?direct&500 |}}
  
  
Línea 529: Línea 537:
  
  
-{{ :clase:iabd:pia:2eval:optimizer_sgd.png?direct |}}+{{ :clase:iabd:pia:2eval:optimizer_sgd.png?direct&500 |}}
  
 Y obviamente el resultado es el mismo Y obviamente el resultado es el mismo
Línea 543: Línea 551:
  
  
-{{ :clase:iabd:pia:2eval:descenso_gradiente_algoritmo_vanilla_2.png?direct&700 |}}+{{ :clase:iabd:pia:2eval:descenso_gradiente_algoritmo_vanilla_2.png?direct&500 |}}
  
  
Línea 555: Línea 563:
  
  
-{{ :clase:iabd:pia:2eval:descenso_gradiente_algoritmo_vanilla_4.png?direct&700 |}}+{{ :clase:iabd:pia:2eval:descenso_gradiente_algoritmo_vanilla_4.png?direct&500 |}}
  
 El valor de ''learning_rate'' es mayor aun , siendo de ''0.1'' por lo que damos //pasos// tan grandes que nos salimos de mínimo de la función y eso que hemos pasado de 5 épocas a 11 épocas.  El valor de ''learning_rate'' es mayor aun , siendo de ''0.1'' por lo que damos //pasos// tan grandes que nos salimos de mínimo de la función y eso que hemos pasado de 5 épocas a 11 épocas. 
Línea 567: Línea 575:
 </sxh> </sxh>
  
-{{ :clase:iabd:pia:2eval:descenso_gradiente_algoritmo_vanilla_5.png?direct&700 |}}+{{ :clase:iabd:pia:2eval:descenso_gradiente_algoritmo_vanilla_5.png?direct&500 |}}
  
 Vemos que al dar //pasos// tan pequeños nos quedamos a mitad de camino y eso que también hemos puesto 11 épocas. En este caso para solucionarlo solo habría que aumentar el número de épocas. Vemos que al dar //pasos// tan pequeños nos quedamos a mitad de camino y eso que también hemos puesto 11 épocas. En este caso para solucionarlo solo habría que aumentar el número de épocas.
Línea 577: Línea 585:
 </sxh> </sxh>
  
-{{ :clase:iabd:pia:2eval:descenso_gradiente_algoritmo_vanilla_6.png?direct&700 |}}+{{ :clase:iabd:pia:2eval:descenso_gradiente_algoritmo_vanilla_6.png?direct&500 |}}
  
 Y ahora ya ha llegado hasta el mínimo. Y ahora ya ha llegado hasta el mínimo.
Línea 597: Línea 605:
  
  
-{{ :clase:iabd:pia:2eval:descenso_gradiente_algoritmo_vanilla_3.png?direct&700 |}}+{{ :clase:iabd:pia:2eval:descenso_gradiente_algoritmo_vanilla_3.png?direct&500 |}}
  
 Esta última gráfica es muy interesante. No hay que perder de vista que las **estrellas rojas** es el valor inicial de los pesos que tenemos en nuestra red neuronal.  Esta última gráfica es muy interesante. No hay que perder de vista que las **estrellas rojas** es el valor inicial de los pesos que tenemos en nuestra red neuronal. 
Línea 614: Línea 622:
 Para intentar solventar los problemas del algoritmo del descenso de gradiente existen diversas variaciones del mismo que vamos a ver en el siguiente apartado. Para intentar solventar los problemas del algoritmo del descenso de gradiente existen diversas variaciones del mismo que vamos a ver en el siguiente apartado.
  
 +==== Punto de silla ====
 +Al entrenar redes neuronales, existe el concepto de "Punto de silla"
 +Es un punto en el que para cada parámetro estaría en un mínimo o máximo local. 
 +Su nombre viene de que parece una silla de montar a caballo.
 +
 +{{:clase:iabd:pia:2eval:punto_de_silla.png?500|}}
 +
 +No debe preocuparnos los puntos de silla ya que al actualizar los parámetros, la "forma" de la función de coste cambiará y lo fácil es que se salga del punto de silla.
  
 ===== Usando optimizadores en Keras  ===== ===== Usando optimizadores en Keras  =====
Línea 1086: Línea 1102:
  
 <sxh python> <sxh python>
-parametros=[(-0.3,0.1)]+parametros=[(-0.3,0),(0.1,-0.2),(0.4,-0.4),(0.8,-2)]
 plot_parametros(x,y_true,parametros) plot_parametros(x,y_true,parametros)
 </sxh> </sxh>
  
-Que muestra la siguiente gráfica:+Que muestra la siguiente figura:
  
 {{:clase:iabd:pia:2eval:tema_7_ejer_3_salida.png|}} {{:clase:iabd:pia:2eval:tema_7_ejer_3_salida.png|}}
  
-Esta gráfica muestra en rojo que con los valores de ''w=-0.3'' y ''b=0.1'' el valor de la pérdida de la red es 0.59. ''loss=0.59''.  +Cada par de valores del array ''parametros'' son los parámetros en cada una de las épocas. 
-Mientras que en verde se muestra los valores que harían mínima cada ua de las funciones ''w=0.55'' y ''b=-4''.+ 
 +En las 2 primeras gráficas se muestra en rojo que con los valores de ''w=-0.3'' y ''b=0'' el valor de la pérdida de la red es 0.58. ''loss=0.50''.  
 +Mientras que en verde se muestra los valores que harían mínima cada una de las funciones ''w=0.56'' y ''b=-5''.  
 +Y así sucesivamente con el resto de parámetros 
 + 
 +En las últimas gráficas se muestra a la izquierda cada uno de los "loss" que ha habido en cada "época" y a la derecha como han evolucionado los parámetros en cada "época".
  
 Modifica el array ''parametros'' añadiendo mas pares de valores de ''w'' y ''b'' para ver si consigues obtener un valor de ''loss'' lo más cercano a 0 que sea posible. Deberás ir modificando poco a poco los valores de ''w'' y ''b''. Modifica el array ''parametros'' añadiendo mas pares de valores de ''w'' y ''b'' para ver si consigues obtener un valor de ''loss'' lo más cercano a 0 que sea posible. Deberás ir modificando poco a poco los valores de ''w'' y ''b''.
Línea 1178: Línea 1199:
   * Función de activación de las capas ocultas: ''selu''   * Función de activación de las capas ocultas: ''selu''
  
-Prueba únicamente con **épocas** con todas las combinaciones de lo siguiente:+Prueba únicamente con **20 épocas** con todas las combinaciones de lo siguiente:
  
   * Optimizadores   * Optimizadores
clase/iabd/pia/2eval/tema07.backpropagation_descenso_gradiente.1730907885.txt.gz · Última modificación: 2024/11/06 16:44 por admin