Al entrenar una red neuronal de segmentación de píxeles, como redes completamente convolucionales, ¿cómo toma la decisión de utilizar la función de pérdida de entropía cruzada versus la función de pérdida de coeficiente de dados?
Me doy cuenta de que esta es una pregunta corta, pero no estoy muy seguro de qué otra información proporcionar. Miré un montón de documentación sobre las dos funciones de pérdida, pero no puedo tener una idea intuitiva de cuándo usar una sobre la otra.
neural-networks
loss-functions
cross-entropy
cristiano
fuente
fuente
Respuestas:
Una razón convincente para usar la entropía cruzada sobre el coeficiente de dados o la métrica similar de IoU es que los gradientes son más agradables.
Los gradientes de la entropía cruzada wrt los logits es algo así como , donde es la salida softmax es el objetivo. Mientras tanto, si tratamos de escribir el coeficiente de dados en una forma diferenciable: o , entonces los gradientes resultantes wrt son mucho más feos : y . Es fácil imaginar un caso en el que tanto como sean pequeños, y el gradiente explote a un valor enorme. En general, parece probable que el entrenamiento se vuelva más inestable.p t 2 p tp - t pags t 2pt2 p tpags2+ t2 p2t22 p tp + t pags 2t(t2-p2)2 t2( p + t )2 pt2 t ( t2- p2)( p2+ t2)2 pags t
La razón principal por la que las personas intentan usar el coeficiente de dados o IoU directamente es que el objetivo real es maximizar esas métricas, y la entropía cruzada es solo un proxy que es más fácil de maximizar usando la propagación hacia atrás. Además, el coeficiente de dados funciona mejor en problemas de desequilibrio de clase por diseño:
Sin embargo, el desequilibrio de clase generalmente se soluciona simplemente asignando multiplicadores de pérdida a cada clase, de modo que la red está altamente desincentivada para simplemente ignorar una clase que aparece con poca frecuencia, por lo que no está claro que el coeficiente de dados sea realmente necesario en estos casos.
Comenzaría con la pérdida de entropía cruzada, que parece ser la pérdida estándar para entrenar redes de segmentación, a menos que haya una razón realmente convincente para usar el coeficiente Dice.
fuente
Como resumieron @shimao y @cherub, no se puede decir a priori cuál funcionará mejor en un conjunto de datos en particular. La forma correcta es probar ambos y comparar los resultados. Además, tenga en cuenta que, en lo que respecta a la segmentación, no es tan fácil "comparar los resultados" : las medidas basadas en IoU, como el coeficiente de dados, cubren solo algunos aspectos de la calidad de la segmentación; En algunas aplicaciones, se deben utilizar diferentes medidas, como la distancia superficial media o la distancia superficial de Hausdorff . Como puede ver, ni siquiera la elección de la métrica de calidad correcta es trivial, y mucho menos la elección de la mejor función de costo.
Personalmente tengo muy buena experiencia con el coeficiente de dados; Realmente hace maravillas cuando se trata del desequilibrio de clase (algunos segmentos ocupan menos píxeles / vóxeles que otros). Por otro lado, la curva de error de entrenamiento se convierte en un desastre total: no me proporcionó absolutamente ninguna información sobre la convergencia, por lo que, a este respecto, la entropía cruzada gana. Por supuesto, esto puede / debe evitarse verificando el error de validación de todos modos.
fuente