Pourquoi la sortie softmax n'est-elle pas une bonne mesure d'incertitude pour les modèles Deep Learning?

22

Je travaille avec les réseaux neuronaux convolutionnels (CNN) depuis un certain temps maintenant, principalement sur les données d'image pour la segmentation sémantique / segmentation d'instance. J'ai souvent visualisé le softmax de la sortie réseau comme une "carte thermique" pour voir à quel point les activations par pixel sont élevées pour une certaine classe. J'ai interprété les activations faibles comme "incertaines" / "peu confiantes" et les activations élevées comme des prédictions "certaines" / "confiantes". Fondamentalement, cela signifie interpréter la sortie softmax (valeurs comprises dans ) comme une mesure de probabilité ou (d'incertitude) du modèle.(0,1)

( Par exemple, j'ai interprété un objet / une zone avec une faible activation softmax moyenne sur ses pixels comme étant difficile à détecter pour le CNN, d'où le CNN étant "incertain" quant à la prédiction de ce type d'objet. )

À mon avis, cela a souvent fonctionné, et l'ajout d'échantillons supplémentaires de zones «incertaines» aux résultats de la formation a amélioré les résultats dans ces domaines. Cependant, j'ai entendu assez souvent maintenant de différents côtés que l'utilisation / l'interprétation de la sortie softmax comme mesure de (non) certitude n'est pas une bonne idée et est généralement déconseillée. Pourquoi?


EDIT: Pour clarifier ce que je demande ici, je développerai mes idées jusqu'à présent en répondant à cette question. Cependant, aucun des arguments suivants ne m'a fait comprendre ** pourquoi c'est généralement une mauvaise idée **, comme l'ont dit à plusieurs reprises des collègues, des superviseurs et est également indiqué, par exemple ici dans la section "1.5"

Dans les modèles de classification, le vecteur de probabilité obtenu à la fin du pipeline (la sortie softmax) est souvent interprété à tort comme la confiance du modèle

ou ici dans la section "Contexte" :

Bien qu'il puisse être tentant d'interpréter les valeurs données par la couche finale softmax d'un réseau de neurones convolutionnels comme des scores de confiance, nous devons faire attention à ne pas trop en lire.


Les sources ci-dessus expliquent que l'utilisation de la sortie softmax comme mesure d'incertitude est mauvaise car:

des perturbations imperceptibles sur une image réelle peuvent changer la sortie softmax d'un réseau profond en valeurs arbitraires

Cela signifie que la sortie softmax n'est pas résistante aux «perturbations imperceptibles» et, par conséquent, sa sortie n'est pas utilisable comme probabilité.

Un autre article reprend l'idée de "sortie softmax = confiance" et soutient qu'avec cette intuition, les réseaux peuvent être facilement trompés, produisant des "sorties à haute confiance pour des images méconnaissables".

(...) la région (dans le domaine d'entrée) correspondant à une classe particulière peut être beaucoup plus grande que l'espace dans cette région occupé par les exemples d'apprentissage de cette classe. Il en résulte qu'une image peut se trouver dans la région affectée à une classe et donc être classée avec un pic élevé dans la sortie softmax, tout en étant loin des images qui se produisent naturellement dans cette classe dans l'ensemble d'apprentissage.

Cela signifie que les données qui sont loin des données d'entraînement ne devraient jamais obtenir une confiance élevée, car le modèle "ne peut" pas en être sûr (car il ne l'a jamais vu).

Cependant: cela ne remet-il généralement pas simplement en cause les propriétés de généralisation des NN dans leur ensemble? C'est-à-dire que les NN avec perte softmax ne se généralisent pas bien à (1) des "perturbations imperceptibles" ou (2) des échantillons de données d'entrée qui sont loin des données d'apprentissage, par exemple des images méconnaissables.

En suivant ce raisonnement, je ne comprends toujours pas, pourquoi en pratique avec des données qui ne sont pas modifiées de manière abstraite et artificielle par rapport aux données d'entraînement (c'est-à-dire la plupart des applications "réelles"), interpréter la sortie softmax comme une "pseudo-probabilité" est une mauvaise idée. Après tout, ils semblent bien représenter ce dont mon modèle est sûr, même s'il n'est pas correct (auquel cas je dois réparer mon modèle). Et l'incertitude du modèle n'est-elle pas toujours "seulement" une approximation?

Honeybear
la source
4
(-,)(0,1)
2
(0,1)(0,1)
J'aime la façon dont vous avez formulé ceci: "Après tout, ils semblent bien représenter ce dont mon modèle est sûr, même s'il n'est pas correct (auquel cas j'ai besoin de réparer mon modèle)."
HeyWatchThis

Réponses:

14

Cette question peut recevoir une réponse plus précise que les réponses actuelles. Fixer l'écart entre les probabilités prédites (la sortie de la couche softmax d'un réseau neuronal) et leurs probabilités réelles (qui représentent une notion de confiance), est connu sous le nom de courbes d'étalonnage ou de fiabilité.

Le problème avec de nombreux réseaux de neurones profonds est que, bien qu'ils aient tendance à bien fonctionner pour la prédiction, leurs probabilités prédites estimées produites par la sortie d'une couche softmax ne peuvent pas être utilisées de manière fiable comme les vraies probabilités (comme une confiance pour chaque étiquette). En pratique, ils ont tendance à être trop élevés - les réseaux de neurones sont «trop confiants» dans leurs prévisions.

Chuan Go et. al., en collaboration avec Kilian Weinberger, a développé une solution efficace pour calibrer les probabilités prédites des réseaux de neurones dans cet article: https://arxiv.org/pdf/1706.04599.pdf

Cet article explique également comment les probabilités prédites peuvent être interprétées comme des mesures de confiance lorsque les probabilités prédites sont correctement calibrées.

cgnorthcutt
la source
1
Merci @cgnorthcutt, j'ai entendu des gens le mentionner à plusieurs reprises et je recherche ce document depuis, très belle référence
Théophile Pace
Magnifique, merci. Voici un lien vers le résumé (au lieu de l'article) pour les personnes intéressées: arxiv.org/abs/1706.04599
Waylon Flinn
3

Ce qui est appelé softmax en ML a la même équation que l' équation logistique multinomiale . Ce dernier peut être utilisé pour calculer les probabilités. En pratique, il est largement utilisé pour estimer les probabilités de défaut dans un cadre de risques concurrents pour les hypothèques, par exemple, voir Eq. 4 dans cet article .

Par conséquent, je dirais que votre intuition n'est pas complètement hors de propos. Cependant, dans l'exemple de modélisation hypothécaire ci-dessus, la variable dépendante est la mesure de probabilité des défauts de paiement. Vous disposez d'un pool d'hypothèques et observez le nombre de défauts. Une seule hypothèque peut être en cours ou en défaut, la probabilité de son défaut n'est pas observable. Nous observons seulement les événements discrets. Cependant, nous modélisons les probabilités.

En quoi est-ce différent de l'apprentissage automatique? Ça dépend. Je pourrais décider de l'appliquer aux défauts de paiement, alors ce ne serait pas très différent du tout. D'un autre côté, dans différentes applications, cela peut ne pas fonctionner. Si vous ne modélisez pas la probabilité explicitement comme dans mon exemple, la sortie de votre modèle peut ne pas représenter la probabilité de manière appropriée.

Aksakal
la source
Merci d'avoir répondu. Cela se résume donc à: Dans certains cas, ce serait en fait une approche valide, mais ce n'est généralement pas une bonne idée car elle n'est pas robuste et on ne sait pas (facilement) si elle est applicable dans une certaine tâche?
Honeybear
Je ne serais pas en train de lancer des termes comme "robuste" car ils ont une signification très spécifique dans les statistiques, mais vous avez compris l'essentiel de mon argument. Si vous modélisez spécifiquement des probabilités, vous pouvez finir par utiliser l'équation softmax à un moment donné, et il serait correct d'interpréter la sortie comme une probabilité. En général, la sortie softmax ne correspond pas à la probabilité.
Aksakal
1

Softmax répartit la «probabilité» 0-1 entre les classes disponibles. Il n'exprime pas d'incertitude, ce n'est pas une fonction PDF. Si vous voulez exprimer l'incertitude, vous devriez vous pencher sur les réseaux de neurones bayésiens. Jetez un œil à cet article: Incertitude dans le Deep Learning Quelques cadres de probabilité assez récents:

Discours d' ouverture intéressant par Zoubin Ghahramani (Université de Cambridge)

Jetez un œil à cet article: Réseaux de densité de mélange :

Je suppose que vous pouvez l'implémenter et l'ajouter comme couche finale à CONVNET. Si vous le mettez en œuvre, n'oubliez pas que le partage est important ;-) Bonne chance

AI4U.ai
la source