Processing math: 100%

Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:2eval:tema07-apendices

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-apendices [2024/10/12 15:11]
admin [Backpropagation]
— (actual)
Línea 1: Línea 1:
-====== 7.g Apéndices ====== 
- 
-===== Tipos de funciones de coste ===== 
- 
- 
-==== Huber ==== 
-La función de coste Huber es un compromiso entre MAE y MSE, ese compromiso se define con un parámetro llamado delta δ 
-La siguiente gráfica compara MAE, MSE y distintos valores de delta. 
- 
-{{ :clase:iabd:pia:2eval:funcion_coste_huber.png?direct&600 |}} 
- 
- 
-  * Si delta tiene en valor cercano a 1, tenderá a parecerse a MAE 
-  * Si delta tiene un valor elevado, tenderá a parecerse a MSE 
- 
-<note tip>Como decíamos con MAE y MSE. ¿queremos que los valores extremos se tengan en cuenta. Pues con el parámetro delta podemos hacer un ajuste mas fino</note> 
- 
- 
- 
-Su uso en Keras es: 
-<sxh python> 
-model.compile(loss=tf.keras.losses.Huber(delta=3)) 
-</sxh> 
- 
-<note> 
-Pensando en la gráfica de Huber he pensado si MAE=|yˆy|1 y MSE=|yˆy|2, en vez de usar Huber, ¿No podríamos usar como función de coste algo también intermedio como MSE=|yˆy|1.5 
- 
-Y he creado una gráfica similar para ver los resultados y no están mal 
- 
-{{ :clase:iabd:pia:2eval:funcion_coste_exponenciales.png?direct&500 |}} 
- 
-He mirado un poco por internet para ver si alguien los usaba y no he encontrado nada, supongo que será porque hacer el cálculo de una potencia con decimales es bastante costoso en tiempo. 
-</note> 
- 
-Mas información: 
-  * [[https://keras.io/api/losses/regression_losses/#huber-class|Huber class]] 
-  * [[https://www.machinecurve.com/index.php/2019/10/12/using-huber-loss-in-keras/|Using Huber loss with TensorFlow 2 and Keras]] 
-  * [[https://en.wikipedia.org/wiki/Huber_loss|Huber loss en Wikipedia]] 
- 
- 
- 
-===== Top-N-Accuracy ===== 
-En problemas de clasificación en los que hay muchísimos clases a clasificar , se puede usar otra métrica llamada **Top-N Accuracy**. Veamos en que consiste. 
- 
-El problema de clasificación de ImageNet hay 1000 posibles clases a clasificar. En ese caso cuando decimos que un "gato" es un "gato" es que la clase gato tiene la mayor probabilidad. Veamos un ejemplo con 10 objetos. 
- 
-^ Clase ^ Probabilidad ^ 
-| Casa |  0.06 | 
-| Botella |  0,04 | 
-| Farola |  0,15 | 
-| Gato |  0,34 | 
-| Perro |  0,28 | 
-| Niño |  0,04 | 
-| Adulto |  0,02 | 
-| Bicicleta |  0,03 | 
-| Semáforo |  0,001 | 
-| Puente |  0,039 | 
- 
- 
-Si la imagen es de un gato, en este caso diríamos que ha acertado ya que la probabilidad de ser gato es del 34% y es la mayor de todas. Y con eso calcularíamos el valor de ''Accuracy''. 
- 
-Sin embargo veamos este otro ejemplo: 
- 
- 
-^ Clase ^ Probabilidad ^ 
-| Casa |  0.06 | 
-| Botella |  0,04 | 
-| Farola |  0,15 | 
-| Gato |  0,28 | 
-| Perro |  0,34 | 
-| Niño |  0,04 | 
-| Adulto |  0,02 | 
-| Bicicleta |  0,03 | 
-| Semáforo |  0,001 | 
-| Puente |  0,039 | 
- 
-En este nuevo ejemplo, también le hemos pasado una imagen de una gato pero la probabilidad de ser gato es del 28% mientras que la de ser perro es del 34%. Por ello diríamos que no ha acertado. 
- 
-Sin embargo usando la métrica de ''Top-2 Accuracy'', diríamos que ha acertado si el gato está entre las 2 que tiene mayor probabilidad. Y en este caso si que diríamos que ha acertado.  
- 
-Esta métrica tiene sentido cuando hay muchísimas clases (En ImageNet hay 1000 clases). Y aunque la predicción correcta no sea la mejor al menos está entre las 2 primeras ''Top-2-Accuracy''. 
- 
-En el siguiente artículo [[https://keras.io/examples/vision/image_classification_with_vision_transformer/|Image classification with Vision Transformer]] se ve como se usa la métrica de ''Top-5-Accuracy''. 
- 
- 
- 
-=== Keras === 
-en keras se puede usar esta métrica con [[https://www.tensorflow.org/api_docs/python/tf/keras/metrics/SparseTopKCategoricalAccuracy|tf.keras.metrics.SparseTopKCategoricalAccuracy]].  
- 
-Por defecto esta métrica calcula es ''top-5-Accuracy''.Pero se puede cambiar con el parámetro ''k''. 
- 
-<sxh python> 
-model.compile(optimizer='sgd',loss='sparse_categorical_crossentropy',metrics=[keras.metrics.SparseTopKCategoricalAccuracy()]) 
-</sxh> 
- 
-<sxh python> 
-model.compile(optimizer='sgd',loss='sparse_categorical_crossentropy',metrics=[keras.metrics.SparseTopKCategoricalAccuracy(k=5, name='top-5-accuracy')]) 
-</sxh> 
- 
- 
-Más información: 
-  * [[https://www.baeldung.com/cs/top-n-accuracy-metrics|Top-N Accuracy Metrics]] 
-  * [[https://www.image-net.org/index.php|ImageNet]] 
-  * [[https://blog.roboflow.com/introduction-to-imagenet/|An Introduction to ImageNet]] 
-  * [[https://keras.io/examples/vision/image_classification_with_vision_transformer/|Image classification with Vision Transformer]] 
-  * [[https://stackoverflow.com/questions/58565394/what-is-the-difference-between-sparse-categorical-crossentropy-and-categorical-c|What is the difference between sparse_categorical_crossentropy and categorical_crossentropy?]] 
- 
- 
- 
- 
- 
  
clase/iabd/pia/2eval/tema07-apendices.1728738666.txt.gz · Última modificación: 2024/10/12 15:11 por admin