¿Qué función de pérdida debo usar para la detección binaria en la detección de rostro / no rostro en CNN?
11
Quiero usar el aprendizaje profundo para entrenar una detección binaria facial / no facial, qué pérdida debo usar, creo que es SigmoidCrossEntropyLoss o Hinge-loss .
¿Es correcto, pero también me pregunto si debería usar softmax pero con solo dos clases?
¿Es correcto, pero también me pregunto si debería usar softmax pero con solo dos clases?
Softmax no es una pérdida sino una función de normalización, a menudo se usa junto con la pérdida de entropía cruzada, que es esencialmente equivalente a SigmoidCrossEntropyLoss. Ver también Cross-Entropy o Log Likelihood en Output layer
En general, cuando tiene un problema en el que la muestra solo puede pertenecer a una clase entre un conjunto de clases, configura la última capa para que sea una capa soft-max. Le permite interpretar las salidas como probabilidades. Cuando se usa una capa soft-max, la entropía cruzada generalmente funciona muy bien, porque el término logarítmico en la entropía cruzada cancela la meseta que está presente en la función soft-max, por lo tanto, acelera el proceso de aprendizaje (piense en puntos muy lejanos). de en la función sigmoidea).0 0
En su caso, tiene una tarea de clasificación binaria, por lo tanto, su capa de salida puede ser el sigmoide estándar (donde la salida representa la probabilidad de que una muestra de prueba sea una cara). La pérdida que usaría sería la entropía cruzada binaria. Con esta configuración, puede imaginar tener una regresión logística en la última capa de su red neuronal profunda.
¿Podría arrojar algo de luz sobre la regresión logística en la última capa de un DNN? He leído las publicaciones pero realmente no puedo ver la utilidad sigmoid(como la activación de la última capa). Gracias
bit_scientist
2
Definitivamente, podría usar softmax con solo 2 clases "Face" y "Not Face" e interpretar la salida de softmax como puntajes de confianza, que es una buena característica para tener cierta intuición sobre su red profunda.
Pruebe tanto el softmax de 2 clases como la pérdida de bisagra binaria. Hay un documento reciente de Aprendizaje profundo que usa máquinas de vectores de soporte lineal que usa un SVM en lugar de un clasificador softmax encima de las conexiones profundas y hay algunos resultados prometedores allí.
Por lo general, la pérdida logarítmica sería la opción preferida, utilizada en combinación con una sola unidad de salida. La pérdida logarítmica también se denomina entropía cruzada binaria porque es un caso especial de entropía cruzada que funciona solo en dos clases.
Teóricamente, un softmax con 2 clases se puede reescribir como un sigmoide, por lo tanto, no debería haber una diferencia en los resultados entre los dos. Prácticamente, como mencionó @dontloo, el número de parámetros en la capa de salida sería el doble (no estoy seguro de si esto podría conducir a problemas de sobreajuste) y, por supuesto, tendría 2 puntajes para las dos clases (Face y Non_Face).
sigmoid
(como la activación de la última capa). GraciasDefinitivamente, podría usar softmax con solo 2 clases "Face" y "Not Face" e interpretar la salida de softmax como puntajes de confianza, que es una buena característica para tener cierta intuición sobre su red profunda.
Pruebe tanto el softmax de 2 clases como la pérdida de bisagra binaria. Hay un documento reciente de Aprendizaje profundo que usa máquinas de vectores de soporte lineal que usa un SVM en lugar de un clasificador softmax encima de las conexiones profundas y hay algunos resultados prometedores allí.
fuente
Por lo general, la pérdida logarítmica sería la opción preferida, utilizada en combinación con una sola unidad de salida. La pérdida logarítmica también se denomina entropía cruzada binaria porque es un caso especial de entropía cruzada que funciona solo en dos clases.
fuente
Teóricamente, un softmax con 2 clases se puede reescribir como un sigmoide, por lo tanto, no debería haber una diferencia en los resultados entre los dos. Prácticamente, como mencionó @dontloo, el número de parámetros en la capa de salida sería el doble (no estoy seguro de si esto podría conducir a problemas de sobreajuste) y, por supuesto, tendría 2 puntajes para las dos clases (Face y Non_Face).
fuente