Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:2eval:tema07

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
Última revisión Ambos lados, revisión siguiente
clase:iabd:pia:2eval:tema07 [2023/02/02 21:06]
admin
clase:iabd:pia:2eval:tema07 [2024/01/25 19:24]
admin [Ejercicios]
Línea 395: Línea 395:
 $$Binary \: Cross \: Entropy = - \frac{1}{N} \sum_{i=1}^{N} y_{i} \cdot log(\hat{y_i}) + (1-y_{i}) \cdot log(1-\hat{y_i}) $$  $$Binary \: Cross \: Entropy = - \frac{1}{N} \sum_{i=1}^{N} y_{i} \cdot log(\hat{y_i}) + (1-y_{i}) \cdot log(1-\hat{y_i}) $$ 
  
-Se ha puesto la fórmula para explicar que su valor va de $[0,\infty[$. Ya que por un lado el logaritmo de un número cercano a cero es menos infinito, de ahí que se ponga el signo menos al principio. Y que los datos de $y_i$ e $\hat{y_i}$ al ser probabilidades su rango es entre 0 y 1.+Los valores de $y_i$ suelen ser o 1mientras que los valores de $\hat{y_i}$ es un número real entre 0 y 1 
 + 
 +Veamos ahora graficamente como es la fórmula según si $y=0$ o $y=1$ 
 +{{:clase:iabd:pia:2eval:binary_crossentropy.png?nolink|}} 
 + 
  
 Su uso en Keras es: Su uso en Keras es:
Línea 406: Línea 411:
 Mas información: Mas información:
   * [[https://keras.io/api/losses/probabilistic_losses/#binarycrossentropy-class|BinaryCrossentropy class]]   * [[https://keras.io/api/losses/probabilistic_losses/#binarycrossentropy-class|BinaryCrossentropy class]]
 +  * [[https://towardsdatascience.com/where-did-the-binary-cross-entropy-loss-function-come-from-ac3de349a715|Where did the Binary Cross-Entropy Loss Function come from?]]
 +  * [[https://stats.stackexchange.com/questions/181035/how-to-derive-the-likelihood-function-for-binomial-distribution-for-parameter-es|How to derive the likelihood function for binomial distribution for parameter estimation?]]
   * [[https://machinelearningmastery.com/cross-entropy-for-machine-learning/|A Gentle Introduction to Cross-Entropy for Machine Learning]]   * [[https://machinelearningmastery.com/cross-entropy-for-machine-learning/|A Gentle Introduction to Cross-Entropy for Machine Learning]]
  
Línea 429: Línea 436:
 | Regresión  |  Lineal  |  MSE o Distancia del coseno  | | Regresión  |  Lineal  |  MSE o Distancia del coseno  |
 | Clasificación con 2 posibles valores |  Sigmoide  |  Binary Cross Entropy  | | Clasificación con 2 posibles valores |  Sigmoide  |  Binary Cross Entropy  |
-| Clasificación con más de 2 posibles valores |  Softmax  |  Categorical Cross Entropy  |+| Clasificación con más de 2 posibles valores NO excluyentes entre si |  Sigmoide  |  Binary Cross Entropy 
 +| Clasificación con más de 2 posibles valores SI excluyentes entre si |  Softmax  |  Categorical Cross Entropy  |
  
  
Línea 456: Línea 464:
 ===== Ejercicios ===== ===== Ejercicios =====
  
-==== Ejercicio 1 ====+==== Ejercicio 1.A ====
 En una red neuronal En una red neuronal
   * Estos son los valores que debería haber sacado la red   * Estos son los valores que debería haber sacado la red
Línea 491: Línea 499:
  
  
-Haz un programa en python que calcule **mediante las fórmulas** la pérdida de la red con ''MAE'' ''MSE''+Haz un programa en python que calcule **mediante las fórmulas** la pérdida de la red con ''MAE''''MSE'' y ''Binary Cross Entropy''
  
 +==== Ejercicio 1.B ====
 +Repita el ejercicio anterior pero ahora en vez de usar su código en python, usan las funciones de coste de keras:
 +  * ''tf.keras.losses.mean_absolute_error''
 +  * ''tf.keras.losses.mean_squared_error''
 +  * ''tf.keras.losses.categorical_crossentropy''
 + 
 ==== Ejercicio 2 ==== ==== Ejercicio 2 ====
 Tenemos dos redes neuronales, que deberían haber sacado los siguientes datos. Tenemos dos redes neuronales, que deberían haber sacado los siguientes datos.
Línea 553: Línea 567:
  
  
-Calcula la pérdida de las 2 redes con ''MAE'' y con ''MSE'' (mediante las funciones de Keras). +Calcula la pérdida de las 2 redes con ''MAE''''MSE'' y ''Binary Cross Entropy'' (mediante las funciones de Keras). 
  
-^ ^  MAE  ^  MSE  ^  +^ ^  MAE  ^  MSE  ^ Binary Cross Entropy 
-^  Red A  |    |    | +^  Red A  |    |    |   
-^  Red B  |    |    |+^  Red B  |    |    |   |
  
 ¿cual es mejor red? Explica porqué ¿cual es mejor red? Explica porqué
Línea 589: Línea 603:
 {{ :clase:iabd:pia:2eval:ejercicio_mse_mae.png?direct |}} {{ :clase:iabd:pia:2eval:ejercicio_mse_mae.png?direct |}}
  
 +<note warning> 
 +En este tema ya hemos aprendido que la función de perdida para este ejemplo debe ser **Binary Cross Entropy** pero seguimos usando ''MAE'' y ''MSE'' porque son más fáciles de calcular manualmente por el alumno en los ejercicios. 
 +</note>
  
 ==== Ejercicio 4 ==== ==== Ejercicio 4 ====
Línea 615: Línea 631:
  
 Comprueba si las 3 pérdidas tienen el mismo valor. Comprueba si las 3 pérdidas tienen el mismo valor.
 +
 +<note warning>
 +En este tema ya hemos aprendido que la función de perdida para este ejemplo debe ser **Binary Cross Entropy** pero seguimos usando ''MAE'' y ''MSE'' porque son más fáciles de calcular manualmente por el alumno en los ejercicios.
 +</note>
  
 ==== Ejercicio 5.A ==== ==== Ejercicio 5.A ====
Línea 670: Línea 690:
 <sxh python> <sxh python>
 df = df.pivot(index='palabra_y', columns='palabra_x', values='distancia_coseno') df = df.pivot(index='palabra_y', columns='palabra_x', values='distancia_coseno')
 +</sxh>
 +
 +muestra el heatmap
 +<sxh python>
 +sns.heatmap(df,ax=axes)
 </sxh> </sxh>
  
Línea 713: Línea 738:
 ==== Ejercicio 7 ==== ==== Ejercicio 7 ====
 Crea una red neuronal para entrenar las flores. Tienes que entrenarla durante 300 épocas con todas las combinaciones de: Crea una red neuronal para entrenar las flores. Tienes que entrenarla durante 300 épocas con todas las combinaciones de:
-  * Funciones de activaciónSigmoidTanhReLULeakyReLUSeLUELU +  * Estructura de la red: 
-  * Funciones de pérdidaMSE, MAE, Binary Crossentropy, Categorical Crossentropy+    * [3] 
 +    * [43] 
 +    * [483] 
 +    * [4816, 8, 3] 
 +    * [4, 8, 16, 32, 16, 8, 4, 3] 
 +    * [4, 8, 16, 32, 64, 32, 16, 8, 4, 3] 
 +    * [4, 8, 16, 32, 64, 128, 64, 32, 16, 8, 4, 3] 
 +  * Funciones de activación 
 +    * Sigmoid 
 +    * Tanh 
 +    * ReLU 
 +    * LeakyReLU 
 +    * SeLU 
 +    * ELU
  
-Las neuronas de cada capa son ''[4,8,16,8,3]'' 
  
-<note tip> 
-La función de activación de la última capa siempre debe ser ''softmax'' 
-</note> 
- 
-La gráfica resultante debe ser similar a ésta: 
- 
-{{ :clase:iabd:pia:2eval:rendimiento_loss.png?direct&800 |}} 
  
 Responde las siguientes cuestiones: Responde las siguientes cuestiones:
-  * ¿En teoría cual debería ser la mejor función de pérdida? +  * ¿Cual ha resultado ser la mejor estructura de red
-  * ¿Cual ha resultado ser la mejor función de pérdida+  * ¿Cual ha sido la mejor función de activación para la mejor estructura de red?
-  * ¿Cual ha sido la peor función de activación+
-  * ¿Cual ha sido la mejor/es función/es de activación?+
  
 ==== Ejercicio 8.A ==== ==== Ejercicio 8.A ====
Línea 771: Línea 799:
  
 ==== Ejercicio 8.D ==== ==== Ejercicio 8.D ====
-Crea y entrena una red neuronal que averigüe si una transacción es fraudulenta. Los datos los obtendrás de [[https://www.kaggle.com/mlg-ulb/creditcardfraud|Credit Card Fraud Detection Dataset]]+Crea y entrena una red neuronal que averigüe si tiene cáncer de mama. Los datos los obtendrás con la función ''load_breast_cancer''.
  
-Deberás: 
-  * Probar con varias funciones de activación en las capas ocultas para ver cual es la mejor. 
-  * Elegir adecuadamente la función de activación de la capa de salida 
-  * Elegir adecuadamente la función de coste a usar 
  
- +<sxh python> 
-==== Ejercicio 8.E ==== +from sklearn.datasets import load_breast_cancer 
-Crea y entrena una red neuronal con los datos de las flores pero ahora ya deberás tener en cuenta los 3 tipos de flor.+</sxh>
  
 Deberás: Deberás:
clase/iabd/pia/2eval/tema07.txt · Última modificación: 2024/01/30 15:26 por admin