Processing math: 100%

Herramientas de usuario

Herramientas del sitio


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

¡Esta es una revisión vieja del documento!


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.

  • Si delta tiene en valor cercano a 1, tenderá a parecerse a MAE
  • Si delta tiene un valor elevado, tenderá a parecerse a MSE
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

Su uso en Keras es:

1
model.compile(loss=tf.keras.losses.Huber(delta=3))

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

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.

Mas información:

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 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 tf.keras.metrics.SparseTopKCategoricalAccuracy.

Por defecto esta métrica calcula es top-5-Accuracy.Pero se puede cambiar con el parámetro k.

1
model.compile(optimizer='sgd',loss='sparse_categorical_crossentropy',metrics=[keras.metrics.SparseTopKCategoricalAccuracy()])

1
model.compile(optimizer='sgd',loss='sparse_categorical_crossentropy',metrics=[keras.metrics.SparseTopKCategoricalAccuracy(k=5, name='top-5-accuracy')])

Más información:

clase/iabd/pia/2eval/tema07-apendices.1728738666.txt.gz · Última modificación: 2024/10/12 15:11 por admin