Le coût de l'entropie croisée est-il logique dans le contexte de la régression (par opposition à la classification)? Si oui, pourriez-vous donner un exemple de jouet via TensorFlow? Sinon, pourquoi pas?
Je lisais sur l'entropie croisée dans Neural Networks and Deep Learning par Michael Nielsen et cela semble être quelque chose qui pourrait naturellement être utilisé pour la régression ainsi que pour la classification, mais je ne comprends pas comment vous l'appliqueriez efficacement dans TensorFlow depuis le les fonctions de perte prennent des logits (que je ne comprends pas vraiment non plus) et elles sont répertoriées dans la classification ici
regression
entropy
tensorflow
cross-entropy
JacKeown
la source
la source
Réponses:
Non, cela n'a aucun sens d'utiliser les fonctions TensorFlow comme
tf.nn.sigmoid_cross_entropy_with_logits
pour une tâche de régression. Dans TensorFlow, «entropie croisée» est un raccourci (ou jargon) pour «entropie croisée catégorique». L'entropie croisée catégorielle est une opération sur les probabilités. Un problème de régression tente de prédire des résultats continus plutôt que des classifications.Le jargon "entropie croisée" est un peu trompeur, car il existe un certain nombre de fonctions de perte d'entropie croisée; cependant, c'est une convention dans l'apprentissage automatique de désigner cette perte particulière comme une perte «d'entropie croisée».
Si nous regardons au-delà des fonctions TensorFlow auxquelles vous vous connectez, alors bien sûr, il existe un certain nombre de fonctions d'entropie croisée possibles. En effet, le concept général d'entropie croisée concerne la comparaison de deux distributions de probabilité. Selon les deux distributions de probabilités que vous souhaitez comparer, vous pouvez arriver à une perte différente de la perte entropique catégorielle typique. Par exemple, l'entropie croisée d'une cible gaussienne avec une covariance diagonale moyenne mais fixe variable se réduit à une erreur quadratique moyenne. Le concept général de l'entropie croisée est décrit plus en détail dans ces questions:
Les réseaux de neurones apprennent-ils une fonction ou une fonction de densité de probabilité?
Comment construire une perte d'entropie croisée pour des cibles de régression générales?
la source
La réponse donnée par @Sycorax est correcte. Cependant, il convient de mentionner que l'utilisation de l'entropie croisée (binaire) dans une tâche de régression où les valeurs de sortie sont dans la plage [0,1] est une chose valide et raisonnable à faire. En fait, il est utilisé dans les encodeurs automatiques d'images (par exemple ici et dans ce document ). Vous pourriez être intéressé de voir une preuve mathématique simple de la raison pour laquelle cela fonctionne dans ce cas dans cette réponse .
la source
Les cadres d'apprentissage profond mélangent souvent les modèles et les pertes et font référence à l'entropie croisée d'un modèle multinomial avec une non-linéarité softmax par
cross_entropy
, ce qui est trompeur. En général, vous pouvez définir l' entropie croisée pour les modèles arbitraires .la source
Malheureusement, la réponse actuellement acceptée par @Sycorax, bien que détaillée, est incorrecte.
En fait, un excellent exemple de régression par entropie croisée catégorique - Wavenet - a été implémenté dans TensorFlow .
Le principe est que vous discrétisez votre espace de sortie et que votre modèle ne prédit que le bac respectif; voir la section 2.2 de l' article pour un exemple dans le domaine de la modélisation du son. Ainsi, alors que techniquement le modèle effectue une classification, la tâche finale résolue est la régression.
Un inconvénient évident est que vous perdez la résolution de sortie. Cependant, cela peut ne pas être un problème (au moins je pense que l'assistant artificiel de Google a parlé d'une voix très humaine ) ou vous pouvez jouer avec du post-traitement, par exemple en interpolant entre le bac le plus probable et ses deux voisins.
D'un autre côté, cette approche rend le modèle beaucoup plus puissant par rapport à la sortie habituelle à unité linéaire simple, c'est-à-dire permettant d'exprimer des prédictions multimodales ou d'évaluer sa confiance. Notez cependant que ce dernier peut être naturellement obtenu par d'autres moyens, par exemple en ayant une sortie de variance explicite (log) comme dans les encodeurs automatiques variationnels.
Quoi qu'il en soit, cette approche ne s'adapte pas bien à une sortie plus dimensionnelle, car la taille de la couche de sortie augmente alors de façon exponentielle, ce qui en fait à la fois un problème de calcul et de modélisation.
la source
J'ai revu cette question car je suis maintenant en désaccord avec la réponse que j'ai précédemment acceptée. La perte d'entropie croisée PEUT être utilisée dans la régression (bien qu'elle ne soit pas courante.)
Cela revient au fait que l'entropie croisée est un concept qui n'a de sens que lorsque l'on compare deux distributions de probabilité. Vous pourriez considérer un réseau de neurones qui produit une moyenne et un écart-type pour une distribution normale comme sa prédiction. Il serait alors puni plus sévèrement pour avoir plus confiance en de mauvaises prédictions. Alors oui, cela a du sens, mais seulement si vous produisez une distribution dans un certain sens. Le lien de @SiddharthShakya dans un commentaire à ma question d'origine montre cela.
la source