tutorial example español dense neural-network deep-learning keras

neural network - example - ¿Qué es "métricas" en Keras?



tensorflow tutorial (3)

Referencia: documentación de Keras Metrics

Como se indica en la página de documentación de las keras metrics de keras metrics , una metric juzga el rendimiento de su modelo. El argumento de metrics en el método de compile contiene la lista de métricas que el modelo debe evaluar durante sus fases de entrenamiento y prueba. Métricas como:

  • binary_accuracy

  • categorical_accuracy

  • sparse_categorical_accuracy

  • top_k_categorical_accuracy y

  • sparse_top_k_categorical_accuracy

son las funciones métricas disponibles que se proporcionan en el parámetro metrics cuando se compila el modelo.

Las funciones métricas son personalizables también. Cuando se deben evaluar múltiples indicadores, se pasa en forma de un dictionary o una list .

Puede encontrar aquí un recurso importante que debe consultar para profundizar en las métricas.

Todavía no está claro para mí qué metrics son (como figura en el código a continuación). ¿Qué están evaluando exactamente? ¿Por qué tenemos que definirlos en el model ? ¿Por qué podemos tener múltiples métricas en un modelo? Y más importante aún, ¿cuál es la mecánica detrás de todo esto? Cualquier referencia científica también es apreciada.

model.compile(loss=''mean_squared_error'', optimizer=''sgd'', metrics=[''mae'', ''acc''])


Entonces, para entender qué son las metrics , es bueno comenzar por entender qué es una función de loss . Las redes neuronales se entrenan principalmente usando métodos de gradiente mediante un proceso iterativo de disminución de una función de loss . Una loss está diseñada para tener dos propiedades cruciales, que cuanto menor sea su valor, mejor será el modelo que se ajuste a sus datos y sea diferenciable. Entonces, sabiendo esto, podríamos definir completamente qué es una metric : es una función que, dados los valores predichos y los valores de verdad del terreno de los ejemplos, le proporciona una medida escalar de la adecuación de su modelo a los datos que posee. Entonces, como puede ver, una función de loss es métrica, pero lo contrario no siempre se cumple. Para comprender estas diferencias, veamos los ejemplos más comunes de uso de metrics :

  1. Mida el rendimiento de su red utilizando funciones no diferenciables: por ejemplo, la precisión no es diferenciable (ni siquiera continua) por lo que no puede optimizar directamente su red de trabajo. Sin embargo, puede usarlo para elegir el modelo con la mejor precisión.

  2. Obtenga valores de diferentes funciones de pérdida cuando su pérdida final sea una combinación de algunas de ellas: supongamos que su pérdida tiene un término de regularización que mide cómo sus pesos difieren de 0 y un término que mide la aptitud de su modelo. En este caso, puede usar metrics para tener una pista separada de cómo la aptitud de sus modelos cambia a lo largo de épocas.

  3. Haga un seguimiento de una medida con respecto a la cual no desea optimizar directamente su modelo: entonces, supongamos que está resolviendo un problema de regresión multidimensional en el que está más preocupado por el mse pero al mismo tiempo está interesado en cómo un cosine-distance de su solución está cambiando a tiempo. Entonces, es lo mejor para usar las metrics .

Espero que la explicación presentada anteriormente sea obvia para qué son las métricas y por qué podría usar múltiples métricas en un modelo. Así que ahora, digamos unas pocas palabras sobre la mecánica de su uso en keras . Hay dos formas de computarlos durante el entrenamiento:

  1. Usar las metrics definidas durante la compilación : esto es lo que preguntaste directamente. En este caso, keras está definiendo un tensor separado para cada métrica que definió para que se compute durante el entrenamiento. Esto generalmente hace que el cálculo sea más rápido, pero esto tiene el costo de la compilación adicional y el hecho de que las métricas se deben definir en términos de funciones de keras.backend .

  2. Usando keras.callback : lo que es bueno que puedas usar Callbacks para calcular tus métricas. Como cada devolución de llamada tiene un atributo de model predeterminado, puede calcular una variedad de métricas usando model.predict o parámetros del modelo durante el entrenamiento. Además, hace posible calcularlo no solo por época sino también por lotes o entrenamiento. Esto se produce a costa de cálculos más lentos y una lógica más complicada, ya que necesita definir las métricas por su cuenta.

Aquí puede encontrar una lista de métricas disponibles, así como un ejemplo de cómo puede definir su propia métrica.


Como en la página de métricas keras descrita:

Una métrica es una función que se usa para juzgar el rendimiento de su modelo

Las métricas se utilizan con frecuencia para detener la devolución de llamada y finalizar el entrenamiento y evitar el sobreajuste.