Funciones de pérdida y optimizaciones

Las máquinas aprenden mediante una función de pérdida. Es un método para evaluar qué tan bien algoritmo específico modela los datos dados. Si las predicciones se desvían demasiado de los resultados reales, la función de pérdida arrojaría un gran número. Poco a poco, con la ayuda de alguna función de optimización, la función de pérdida aprende a reducir el error en la predicción. En este artículo analizaremos varias funciones de pérdida y sus aplicaciones en el dominio de la máquina / aprendizaje profundo.

No existe una función de pérdida para todos los algoritmos en el aprendizaje automático. La elección de una función de pérdida para un problema específico, como el tipo de algoritmo de aprendizaje automático elegido, la facilidad de cálculo de las derivadas y, en cierta medida, el porcentaje de valores atípicos en el conjunto de datos son diversos.

En general, las funciones de pérdida pueden clasificarse en dos categorías principales dependiendo del tipo de tarea de aprendizaje con la que estamos tratando - Pérdidas por regresión y Pérdidas por clasificación . En la clasificación, estamos tratando de predecir el resultado del conjunto de valores categóricos finitos, es decir, dado un gran conjunto de datos de dígitos escritos a mano, categorizándolos en uno de 0-9 dígitos. La regresión, por otro lado, trata de predecir un valor continuo, por ejemplo, el área del piso dada, el número de habitaciones, el tamaño de las habitaciones, predecir el precio de la habitación.

 NOTA 
         n - Número de ejemplos de capacitación. 
 Ejemplo de entrenamiento con un conjunto de datos. 
 y (i) - Etiqueta de verdad del terreno para el i-ésimo ejemplo de entrenamiento. 
 y_hat (i) - Predicción para el i-ésimo ejemplo de entrenamiento.

Pérdidas de regresión

Error cuadrático medio / Pérdida cuadrática / Pérdida L2

Formulación matemática : -

Error cuadrático medio

Como su nombre indica, El error cuadrático medio se mide como el promedio de la diferencia al cuadrado entre las predicciones y las observaciones reales. Solo le preocupa la magnitud promedio del error, independientemente de su dirección. Sin embargo, debido a la cuadratura, las predicciones que están muy lejos de los valores reales son penalizadas fuertemente en comparación con las predicciones menos desviadas. Además MSE tiene buenas propiedades matemáticas que hacen que sea más fácil calcular gradientes.

 import numpy as np
 y_hat = np.array ([0.000, 0.166, 0.333]) 
 y_true = np.array ([0.000, 0.254, 0.998])
 def rmse (predictions, targets): 
 differences = predictions - targets 
 differences_squared = differences ** 2 
 mean_of_differences_squared = differences_squared.mean () 
 rmse_val = np.sqrt (mean_of_differences_squared) 
 return rmse_val
 imprimir ("d es:" + str (["%.8f" % elem for elem in y_hat])) 
 imprimir ("p es:" + str (["%.8f" % elem for elem in y_true]))
 rmse_val = rmse (y_hat, y_true) 
 print ("error rms es:" + str (rmse_val))

Error Absoluto Medio / Pérdida L1

Formulación matemática : -

Error absoluto medio [19659002] El error absoluto medio por otro lado, se mide como el promedio de la suma de las diferencias absolutas entre las predicciones y las observaciones reales. Al igual que MSE, esto también mide la magnitud del error sin considerar su dirección. A diferencia de MSE, MAE necesita herramientas más complicadas, como la programación lineal para calcular los gradientes. Además, MAE es más robusto para los valores atípicos, ya que no utiliza cuadrado.

 import numpy as np
 y_hat = np.array ([0.000, 0.166, 0.333]) 
 y_true = np.array ([0.000, 0.254, 0.998]) [19659025] imprimir ("d es:" + str (["%.8f" % elem for elem in y_hat])) 
 imprimir ("p es:" + str (["%.8f" % elem for elem in y_true])) 
 def mae (predicciones, objetivos): 
 diferencias = predictions - targets 
 absolute_differences = np.absolute (diferencias) 
 mean_absolute_differences = absolute_differences.mean () 
 return mean_absolute_differences
 mae_val = mae (y_hat, y_true) 
 print ("el error de mae es : "+ str (mae_val))

Error de sesgo promedio

Esto es mucho menos común en el dominio de aprendizaje automático en comparación con su contraparte. Esto es igual que MSE con la única diferencia de que no tomamos valores absolutos. Claramente hay una necesidad de precaución ya que los errores positivos y negativos pueden anularse mutuamente. Aunque menos preciso en la práctica, podría determinar si el modelo tiene sesgo positivo o sesgo negativo.

Formulación matemática : -

Error de sesgo medio

Pérdidas de clasificación

Bisagra Pérdida / Multi clase SVM Loss

En términos simples, el puntaje de la categoría correcta debe ser mayor que la suma de los puntajes de todas las categorías incorrectas por algún margen de seguridad (generalmente uno). Y por lo tanto, la pérdida de bisagra se usa para la clasificación de margen máximo más notablemente para máquinas de vectores de soporte . Aunque no diferenciable es una función convexa que facilita el trabajo con los optimizadores convexos habituales utilizados en el dominio de aprendizaje automático.

Formulación matemática : -

SVM Pérdida o pérdida de bisagra

Considere un ejemplo en el que tenemos tres ejemplos de entrenamiento y tres clases para predecir: perro, gato y caballo. Debajo de los valores predichos por nuestro algoritmo para cada una de las clases: -

Pérdida de bisagra / pérdida de SVM de clase múltiple

Pérdidas de bisagra de cálculo para los 3 ejemplos de entrenamiento: -

 ## 1er ejemplo de entrenamiento 
 max ( 0, (1.49) - (-0.39) + 1) + max (0, (4.21) - (-0.39) + 1) 
 max (0, 2.88) + max (0, 5.6) 
 2.88 + 5.6 
 8.48 (Pérdida alta como predicción incorrecta) 
  ## 2. ° ejemplo de entrenamiento 
 max (0, (-4.61) - (3.28) + 1) + max (0, (1,46) - (3,28) + 1) 
 max (0, -6,89) + max (0, -0,82) 
 0 + 0 
 0 (Pérdida cero como predicción correcta)  [19659014]  ## Tercer ejemplo de entrenamiento 
 max (0, (1.03) - (-2.27) + 1) + max (0, (-2.37) - (-2.27) + 1) 
 max (0 , 4.3) + max (0, 0.9) 
 4.3 + 0.9 
 5.2 (Pérdida alta como predicción incorrecta) 

Pérdida de entropía cruzada / Probabilidad de registro negativo

Esta es la la configuración más común para los problemas de clasificación. La pérdida de entropía cruzada aumenta a medida que la probabilidad prevista diverge de la etiqueta real.

Formulación matemática : -

Pérdida de entropía cruzada

Observe que cuando la etiqueta real es 1 (y ( i) = 1), la segunda mitad de la función desaparece, mientras que en el caso de que la etiqueta real sea 0 (y (i) = 0) se deja caer la primera mitad. En resumen, solo estamos multiplicando el registro de la probabilidad pronosticada real para la clase de verdad en el terreno. Un aspecto importante de esto es que la pérdida de entropía cruzada penaliza fuertemente las predicciones que son seguras pero erróneas .

 import numpy as np
 predictions = np.array ([[0.25,0.25,0.25,0.25]
                        [0.01,0.01,0.01,0.96]] ) 
 targets = np.array ([[0,0,0,1]
                   [0,0,0,1]])
 def cross_entropy (predictions, targets, epsilon = 1e-10): 
 predictions = np.clip (predictions, epsilon, 1 .-epsilon) 
 N = predictions.shape [0]
     ce_loss = -np.sum (np.sum (targets * np.log (predicciones + 1e-5))) / N 
 return ce_loss
 cross_entropy_loss = cross_entropy (predictions, targets) 
 print ("La pérdida de entropía cruzada es:" + str (cross_entropy_loss))


Las funciones de pérdida común en machine learning se publicó originalmente en Towards Data Science ] en Medium, donde las personas continúan la conversación resaltando y respondiendo a esta historia.