Cómo decidir qué función de pérdida usar para el aprendizaje automático

El problema que intenta resolver debe determinar la función de costo que utiliza. La función de pérdida a menudo tiene una interpretación del “mundo real”. Cuando estás construyendo una máquina de aprendizaje estadístico, tendrás algo que estás tratando de predecir o modelar. Esto vendrá junto con una métrica que desea maximizar o minimizar. Elegirá su función de pérdida para optimizar esa métrica. Si no puede optimizarlo directamente incorporando la función de costo correcta en su algoritmo (tal vez debido al método de aprendizaje que debe usar), debe experimentar con un montón de métodos y funciones de costo para ver cuál funciona mejor para su métrica. .

Por ejemplo, digamos que está creando un algoritmo de predicción de tasa de clics. En este caso, desea maximizar los ingresos de publicidad al predecir con precisión si un usuario hará clic en un anuncio o no. Por lo tanto, tendrá que predecir la probabilidad de que un usuario haga clic en un anuncio para que pueda hacer una oferta en consecuencia. Puede pensar en esto como un problema de clasificación (1 o 0, clic o no hacer clic), o como un problema de regresión que predice la probabilidad de que un usuario haga clic. Por lo tanto, su métrica está maximizando los ingresos = (hace clic en la oferta y gana) * (ingresos por clic) – (gasto publicitario).

Para simplificar, digamos que lo modelas como un problema de clasificación con una oferta fija. Su función de pérdida es
[math] L (p) = \ sum_i b * p_i – (r_c * y_i) p_i [/ ​​math]
[math] r_c [/ math] = ingresos de un solo clic a través
[math] y_i [/ ​​math] = 1 si se hace clic, 0 si no se hace clic aunque
[math] p_i [/ ​​math] = predicción, mismas clases que [math] y_i [/ ​​math]
[math] b [/ math] = valor de oferta

Por lo tanto, la función de costo tiene 2 partes, una penalización si omite predecir un clic y una parte de minimización de costo. Es solo lo negativo de la ganancia esperada para la campaña publicitaria. Tenga en cuenta que es relativamente fácil generalizar esto a un problema de regresión y variar el monto de la oferta.

Una vez que tiene la función de costo y decide una parametrización para la máquina de aprendizaje, es relativamente sencillo ajustar sus parámetros minimizando la función de costo utilizando el descenso de gradiente estocástico o algún otro método de descenso de gradiente.

En el caso de que desee utilizar una red neuronal o algo con una función de costo fijo, o simplemente desee usar una biblioteca estándar con alguna función de pérdida incorporada, debe probar un montón de máquinas diferentes con diferentes funciones de pérdida y usar el uno que minimiza su función de pérdida “real” durante la validación cruzada.

Para ampliar la respuesta de Ke Wu, la función de costo cuadrático es ideal para la regresión lineal y para cualquier sistema donde la hipótesis (o función de activación) sea una función lineal. Sin embargo, para la regresión logística y las redes neuronales con funciones de activación sigmoidea, el costo de la entropía cruzada es mejor.

Si desea ver por qué esto es para redes neuronales, intente derivar la fórmula para los gradientes de peso y verá que todos los gradientes tendrán el término derivado de la (s) neurona (s) de salida en la fórmula. Siempre que la neurona de salida esté mal equivocada (es decir, la salida es igual a cero o una cuando debería ser al revés), la derivada de la función sigmoide será igual a cero (para entender esto visualmente, intente graficar la función sigmoide o simplifica su derivada a f (x) * (1 – f (x))). Eso significa que siempre que su neurona de salida esté mal, ¡toda la red aprenderá muy lentamente! Ahora intente usar la función de entropía cruzada para encontrar los gradientes de peso. Voila, termino derivado de la salida!

Aquí hay una explicación simple e intuitiva de este concepto y por qué es útil para el aprendizaje de la propagación hacia atrás: redes neuronales y aprendizaje profundo

Tl; dr: La mayoría de las veces, mientras entrenas un SVM, no lo haces. Solo usas la pérdida de la bisagra. La función de pérdida sirve para comparar dos etiquetas de salida: a menudo la etiqueta producida por su modelo actual y la etiqueta verdadera. Diseñarlo para dar un valor más alto cuando las dos etiquetas no estén de acuerdo.

Me gustaría añadir a la respuesta de Jeremy McMinis. La mayoría de los algoritmos de aprendizaje automático definirán una función de costo e intentarán minimizarla. Sin embargo, la función de pérdida es solo una parte de la función de costo. Voy a dejar de lado las matemáticas y tratar de explicar la intuición detrás de las funciones de pérdida y por qué diseñarlas correctamente es tan importante.

Es posible que haya oído hablar de máquinas de vectores de soporte con una pérdida de bisagra. La función de costo en estos SVM es la suma de la norma del vector de peso y las variables de holgura (para más detalles, consulte el artículo de SVM en Wikipedia). Son las variables de holgura las que definen la pérdida de la bisagra: codifican qué tan diferente es la etiqueta de salida de SVM de acuerdo con el modelo actual, en comparación con la etiqueta real. La función de pérdida está diseñada de tal manera que un mayor desacuerdo entre estas etiquetas produce un mayor valor de la función de pérdida. Si la función de pérdida es alta, también aumenta la función de costo, por lo que el SVM intenta hacer que su etiqueta predicha concuerde más con la etiqueta real a través de la función de pérdida. Tenga en cuenta que la otra parte de la función de costo (en este caso, la norma de los pesos SVM) no depende en absoluto de las etiquetas de salida, ya menudo se denomina regularización y se usa para evitar el ajuste excesivo, pero esa es una historia diferente.

Existen algunas funciones de pérdida estándar, pero la que se usa más comúnmente en las SVM es la pérdida de la bisagra. Las redes neuronales intentan tener una forma muy diferenciable de la función de pérdida (por ejemplo, pérdida de softmax, pérdida de Euclides) porque se entrenan utilizando métodos basados ​​en gradientes. Por otro lado, si está haciendo una predicción estructurada, ¡usted mismo puede diseñar la función de pérdida! Por ejemplo, si está intentando predecir un árbol binario a partir de los datos de entrada, su función de pérdida puede ser algo tan simple como la diferencia en la altura de esos árboles, o cualquier otra métrica de desacuerdo que desee encontrar.

Además de lo que ya se ha dicho, quiero añadir estos:

Muchas veces se elige una función de pérdida porque las matemáticas funcionan bien de esa manera. Es decir, si usa una función de costo en particular, terminará con un método / fórmula de aprendizaje automático agradable. L2 (o error cuadrático medio) es una de esas funciones de buen comportamiento matemático, con buenas derivadas, propiedades de convexidad, etc., por lo que las optimizaciones funcionan bien. L1 puede no funcionar tan bien en muchos casos debido al problema de diferenciación en el origen. O bien, la regresión logística funciona tan bien debido a la función de costo logístico utilizada.

En segundo lugar, elegir una función de costo a menudo implica una suposición sobre la distribución de sus datos o el error. Puede ser una historia larga, pero lo intentaré (recomendaría este documento a aquellos interesados ​​en esta idea: Vasconcelos, Nuno y Andrew Lippman. “Una visión unificadora de la similitud de imagen”. Reconocimiento de patrones, 2000. Actas. 15ª Conferencia Internacional on . Vol. 1. IEEE, 2000. Página en ucsd.edu):
– En primer lugar, la mayor parte del costo de tiempo se define como la distancia entre lo que se desea y lo que es el resultado real. Por lo tanto, la selección de la distancia (o similitud, a la inversa) es casi el mismo problema.
– Como segundo paso, modela la distancia (des-similitud) entre el resultado de su modelo idealizado (sistema de aprendizaje automático) y un punto de datos real como una variación aleatoria e incontrolable, que llamamos error. Intentamos modelar este error usando una función de distribución de probabilidad. Digamos que un sistema de regresión te dio 120 pero la respuesta correcta fue 100. ¿Qué significa eso? ¿Qué pasa si tienes 150, cuánto peor es eso? Observa la probabilidad de desviarse 20 vs 50 del objetivo, de lo contrario, estos números no tienen sentido. Si su error es Gaussiano (normal) distribuido, entonces resulta que la distancia L2 le da una comparación justa de los errores. Si tiene múltiples características y si cada una es gaussiana pero con diferente varianza, debe usar la distancia de Mahalanobis.

Finalmente, la respuesta de Ted Lippe-Corstjens es notable, ya que parece tener relaciones con la idea anterior y aporta algo de significado (semántica) a las opciones de aspecto arbitrario.

Eche un vistazo a este curso de aprendizaje lineal en línea: Parte 1 sobre aprendizaje en línea. Aborda la función semántica de la pérdida. Debe elegir una función de pérdida que sea relevante para el problema que está resolviendo.

La pérdida al cuadrado minimiza las expectativas. Selecciónelo cuando se obtenga el rendimiento esperado de una acción.

La pérdida logística minimiza la probabilidad. Escójalo al aprender probabilidad de hacer clic en el anuncio.

La pérdida de la bisagra minimiza la pregunta 0,1 / sí-no. Escójalo cuando quieras una predicción difícil.

La pérdida cuantil minimiza la mediana. Escójalo cuando quieras predecir los precios de la vivienda.

Finalmente, elige múltiples funciones de pérdida e intenta armar. De esa manera no tienes que elegir.

La respuesta simple es, depende de si está haciendo regresión o clasificación. Para la regresión, generalmente la distancia euclidiana es lo suficientemente buena y para la clasificación, primero debe pensar en usar la entropía cruzada. La pérdida 0-1 no se usa en la práctica, ya que es difícil hacer una optimización, no es diferenciable. La pérdida de la bisagra se utiliza para SVM y Perceptron.

Por supuesto, en términos de la función que debe minimizar, puede agregar términos de regularización, podría ser L1 o L2 de las ponderaciones.

La respuesta más simple es que, la mayoría de las veces, cuando ha diseñado un algoritmo ML, ya ha diseñado una función de pérdida.

Las funciones de pérdida tienden a estar determinadas por la naturaleza de los datos en relación con un resultado (dispersión, robustez … pueden ser prioridades) y el resultado de interés (relacionado con las funciones de enlace en modelos lineales generalizados). Tengo algunos ejemplos aquí con una explicación visual para los modelos de regresión penalizados: https://www.slideshare.net/Colle

En el árbol de decisión, más comúnmente, se utilizan Entropy y el Índice de Gini. La diferencia se da claramente en el libro “Programación de la inteligencia colectiva”.

“La principal diferencia entre la entropía y la impureza de Gini es que la entropía alcanza su punto máximo más

despacio. En consecuencia, tiende a penalizar los conjuntos mixtos un poco más fuertemente “.