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
ysparse_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
:
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.
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 usarmetrics
para tener una pista separada de cómo la aptitud de sus modelos cambia a lo largo de épocas.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 uncosine-distance
de su solución está cambiando a tiempo. Entonces, es lo mejor para usar lasmetrics
.
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:
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 dekeras.backend
.Usando
keras.callback
: lo que es bueno que puedas usarCallbacks
para calcular tus métricas. Como cada devolución de llamada tiene un atributo demodel
predeterminado, puede calcular una variedad de métricas usandomodel.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.