Recherche de site Web

Fonctions de perte et de perte pour la formation des réseaux de neurones d'apprentissage profond


Les réseaux de neurones sont entraînés à l'aide de la descente de gradient stochastique et nécessitent que vous choisissiez une fonction de perte lors de la conception et de la configuration de votre modèle.

Il existe de nombreuses fonctions de perte parmi lesquelles choisir et il peut être difficile de savoir quoi choisir, ou même ce qu'est une fonction de perte et le rôle qu'elle joue lors de la formation d'un réseau neuronal.

Dans cet article, vous découvrirez le rôle des fonctions de perte et de perte dans la formation des réseaux de neurones d'apprentissage profond et comment choisir la fonction de perte adaptée à vos problèmes de modélisation prédictive.

Après avoir lu cet article, vous saurez :

  • Les réseaux de neurones sont formés à l'aide d'un processus d'optimisation qui nécessite une fonction de perte pour calculer l'erreur du modèle.
  • La vraisemblance maximale fournit un cadre pour choisir une fonction de perte lors de la formation des réseaux de neurones et des modèles d'apprentissage automatique en général.
  • L'entropie croisée et l'erreur quadratique moyenne sont les deux principaux types de fonctions de perte à utiliser lors de la formation de modèles de réseaux neuronaux.

Démarrez votre projet avec mon nouveau livre Better Deep Learning, comprenant des tutoriels étape par étape et les fichiers code source Python pour tous les exemples .

Commençons.

Aperçu

Ce didacticiel est divisé en sept parties ; ils sont:

  1. L'apprentissage des réseaux neuronaux comme optimisation
  2. Qu’est-ce qu’une fonction de perte et une perte ?
  3. Probabilité maximale
  4. Vraisemblance maximale et entropie croisée
  5. Quelle fonction de perte utiliser ?
  6. Comment implémenter des fonctions de perte
  7. Fonctions de perte et performances du modèle signalées

Nous nous concentrerons sur la théorie derrière les fonctions de perte.

Pour obtenir de l'aide sur le choix et la mise en œuvre de différentes fonctions de perte, consultez l'article :

  • Comment choisir les fonctions de perte lors de la formation des réseaux de neurones d'apprentissage profond

L'apprentissage des réseaux neuronaux comme optimisation

Un réseau neuronal d'apprentissage profond apprend à mapper un ensemble d'entrées à un ensemble de sorties à partir de données d'entraînement.

Nous ne pouvons pas calculer les poids parfaits pour un réseau neuronal ; il y a trop d'inconnues. Au lieu de cela, le problème de l’apprentissage est présenté comme un problème de recherche ou d’optimisation et un algorithme est utilisé pour naviguer dans l’espace des ensembles de poids possibles que le modèle peut utiliser afin de faire des prédictions bonnes ou suffisamment bonnes.

En règle générale, un modèle de réseau neuronal est formé à l'aide de l'algorithme d'optimisation de descente de gradient stochastique et les poids sont mis à jour à l'aide de l'algorithme de rétropropagation d'erreur.

Le « gradient » en descente de gradient fait référence à un gradient d'erreur. Le modèle avec un ensemble de poids donné est utilisé pour faire des prédictions et l'erreur de ces prédictions est calculée.

L'algorithme de descente de gradient cherche à modifier les poids afin que l'évaluation suivante réduise l'erreur, ce qui signifie que l'algorithme d'optimisation descend le gradient (ou la pente) de l'erreur.

Maintenant que nous savons que l’entraînement des réseaux neuronaux résout un problème d’optimisation, nous pouvons examiner comment l’erreur d’un ensemble de poids donné est calculée.

Qu’est-ce qu’une fonction de perte et une perte ?

Dans le contexte d'un algorithme d'optimisation, la fonction utilisée pour évaluer une solution candidate (c'est-à-dire un ensemble de poids) est appelée fonction objectif.

Nous pouvons chercher à maximiser ou à minimiser la fonction objectif, ce qui signifie que nous recherchons une solution candidate qui a respectivement le score le plus élevé ou le plus bas.

Généralement, avec les réseaux de neurones, nous cherchons à minimiser l'erreur. En tant que telle, la fonction objectif est souvent appelée fonction de coût ou fonction de perte et la valeur calculée par la fonction de perte est simplement appelée « perte ».

La fonction que nous voulons minimiser ou maximiser est appelée fonction objectif ou critère. Lorsque nous la minimisons, nous pouvons également l’appeler fonction de coût, fonction de perte ou fonction d’erreur.

— Page 82, Apprentissage profond, 2016.

La fonction de coût ou de perte a un rôle important dans la mesure où elle doit fidèlement distiller tous les aspects du modèle en un seul nombre de telle sorte que les améliorations de ce nombre soient le signe d'un meilleur modèle.

La fonction de coût réduit tous les bons et mauvais aspects d’un système éventuellement complexe à un seul nombre, une valeur scalaire, qui permet de classer et de comparer les solutions candidates.

— Page 155, Neural Smithing : apprentissage supervisé dans les réseaux de neurones artificiels à action directe, 1999.

Lors du calcul de l'erreur du modèle pendant le processus d'optimisation, une fonction de perte doit être choisie.

Cela peut être un problème difficile car la fonction doit capturer les propriétés du problème et être motivée par des préoccupations importantes pour le projet et les parties prenantes.

Il est donc important que la fonction représente fidèlement nos objectifs de conception. Si nous choisissons une mauvaise fonction d’erreur et obtenons des résultats insatisfaisants, c’est notre faute si nous avons mal spécifié le but de la recherche.

— Page 155, Neural Smithing : apprentissage supervisé dans les réseaux de neurones artificiels à action directe, 1999.

Maintenant que nous connaissons la fonction de perte et la perte, nous devons savoir quelles fonctions utiliser.

Probabilité maximale

De nombreuses fonctions pourraient être utilisées pour estimer l’erreur d’un ensemble de poids dans un réseau neuronal.

Nous préférons une fonction dans laquelle l'espace des solutions candidates correspond à un paysage lisse (mais de grande dimension) dans lequel l'algorithme d'optimisation peut raisonnablement naviguer via des mises à jour itératives des poids du modèle.

L'estimation du maximum de vraisemblance, ou MLE, est un cadre d'inférence permettant de trouver les meilleures estimations statistiques des paramètres à partir des données d'entraînement historiques : exactement ce que nous essayons de faire avec le réseau neuronal.

Le maximum de vraisemblance cherche à trouver les valeurs optimales pour les paramètres en maximisant une fonction de vraisemblance dérivée des données d'entraînement.

— Page 39, Réseaux de neurones pour la reconnaissance de formes, 1995.

Nous disposons d'un ensemble de données de formation avec une ou plusieurs variables d'entrée et nous avons besoin d'un modèle pour estimer les paramètres de pondération du modèle qui mappent au mieux les exemples des entrées à la variable de sortie ou cible.

Compte tenu des entrées, le modèle tente de faire des prédictions qui correspondent à la distribution des données de la variable cible. Sous vraisemblance maximale, une fonction de perte estime dans quelle mesure la distribution des prédictions faites par un modèle correspond à la distribution des variables cibles dans les données d'entraînement.

Une façon d'interpréter l'estimation du maximum de vraisemblance est de la considérer comme minimisant la dissimilarité entre la distribution empirique […] définie par l'ensemble d'apprentissage et la distribution du modèle, le degré de dissimilarité entre les deux étant mesuré par la divergence KL. […] Minimiser cette divergence KL correspond exactement à minimiser l'entropie croisée entre les distributions.

— Page 132, Apprentissage profond, 2016.

L'un des avantages de l'utilisation du maximum de vraisemblance comme cadre d'estimation des paramètres du modèle (poids) pour les réseaux de neurones et dans l'apprentissage automatique en général est qu'à mesure que le nombre d'exemples dans l'ensemble de données d'entraînement augmente, l'estimation des paramètres du modèle s'améliore. C'est ce qu'on appelle la propriété de « cohérence ».

Dans des conditions appropriées, l'estimateur du maximum de vraisemblance a la propriété de cohérence […], ce qui signifie que lorsque le nombre d'exemples d'apprentissage approche l'infini, l'estimation du maximum de vraisemblance d'un paramètre converge vers la vraie valeur du paramètre.

— Page 134, Apprentissage profond, 2016.

Maintenant que nous connaissons l’approche générale du maximum de vraisemblance, nous pouvons examiner la fonction d’erreur.

Vraisemblance maximale et entropie croisée

Dans le cadre du maximum de vraisemblance, l'erreur entre deux distributions de probabilité est mesurée à l'aide de l'entropie croisée.

Lors de la modélisation d'un problème de classification dans lequel nous souhaitons mapper des variables d'entrée à une étiquette de classe, nous pouvons modéliser le problème en prédisant la probabilité qu'un exemple appartienne à chaque classe. Dans un problème de classification binaire, il y aurait deux classes, nous pouvons donc prédire la probabilité que l'exemple appartienne à la première classe. Dans le cas d'une classification multi-classes, on peut prédire une probabilité pour l'exemple appartenant à chacune des classes.

Dans l'ensemble de données de formation, la probabilité qu'un exemple appartienne à une classe donnée serait de 1 ou 0, car chaque échantillon de l'ensemble de données de formation est un exemple connu du domaine. Nous connaissons la réponse.

Par conséquent, dans le cadre d’une estimation du maximum de vraisemblance, nous rechercherions un ensemble de pondérations de modèle qui minimisent la différence entre la distribution de probabilité prédite du modèle compte tenu de l’ensemble de données et la distribution des probabilités dans l’ensemble de données d’entraînement. C'est ce qu'on appelle l'entropie croisée.

Dans la plupart des cas, notre modèle paramétrique définit une distribution […] et nous utilisons simplement le principe du maximum de vraisemblance. Cela signifie que nous utilisons l'entropie croisée entre les données d'entraînement et les prédictions du modèle comme fonction de coût.

— Page 178, Apprentissage profond, 2016.

Techniquement, l’entropie croisée vient du domaine de la théorie de l’information et a l’unité de « bits ». Il est utilisé pour estimer la différence entre une distribution de probabilité estimée et prédite.

Dans le cas de problèmes de régression où une quantité est prédite, il est courant d'utiliser à la place la fonction de perte d'erreur quadratique moyenne (MSE).

Quelques fonctions de base sont très couramment utilisées. L'erreur quadratique moyenne est populaire pour les problèmes d'approximation de fonctions (régression) […] La fonction d'erreur d'entropie croisée est souvent utilisée pour les problèmes de classification lorsque les résultats sont interprétés comme des probabilités d'appartenance à une classe indiquée.

— Pages 155-156, Neural Smithing : apprentissage supervisé dans les réseaux de neurones artificiels à action directe, 1999.

Néanmoins, dans le cadre de l'estimation du maximum de vraisemblance et en supposant une distribution gaussienne pour la variable cible, l'erreur quadratique moyenne peut être considérée comme l'entropie croisée entre la distribution des prédictions du modèle et la distribution de la variable cible.

De nombreux auteurs utilisent le terme « entropie croisée » pour identifier spécifiquement la log-vraisemblance négative d'une distribution de Bernoulli ou softmax, mais c'est un terme abusif. Toute perte constituée d'une log-vraisemblance négative est une entropie croisée entre la distribution empirique définie par l'ensemble d'apprentissage et la distribution de probabilité définie par le modèle. Par exemple, l'erreur quadratique moyenne est l'entropie croisée entre la distribution empirique et un modèle gaussien.

— Page 132, Apprentissage profond, 2016.

Par conséquent, lorsque nous utiliserons le cadre d’estimation du maximum de vraisemblance, nous implémenterons une fonction de perte d’entropie croisée, ce qui signifie souvent en pratique une fonction de perte d’entropie croisée pour les problèmes de classification et une fonction de perte d’erreur quadratique moyenne pour les problèmes de régression.

Presque universellement, les réseaux neuronaux d’apprentissage profond sont formés dans le cadre du maximum de vraisemblance en utilisant l’entropie croisée comme fonction de perte.

La plupart des réseaux de neurones modernes sont formés en utilisant le maximum de vraisemblance. Cela signifie que la fonction de coût est […] décrite comme l'entropie croisée entre les données d'entraînement et la distribution du modèle.

— Pages 178-179, Apprentissage profond, 2016.

En fait, l’adoption de ce cadre peut être considérée comme une étape importante dans l’apprentissage profond, car avant d’être complètement formalisés, il était parfois courant que les réseaux de neurones utilisés pour la classification utilisent une fonction de perte d’erreur quadratique moyenne.

L’un de ces changements algorithmiques a été le remplacement de l’erreur quadratique moyenne par la famille de fonctions de perte d’entropie croisée. L'erreur quadratique moyenne était populaire dans les années 1980 et 1990, mais a été progressivement remplacée par les pertes d'entropie croisée et le principe du maximum de vraisemblance à mesure que les idées se répandaient entre la communauté des statistiques et la communauté de l'apprentissage automatique.

— Page 226, Apprentissage profond, 2016.

L’approche du maximum de vraisemblance a été adoptée presque universellement, non seulement en raison du cadre théorique, mais surtout en raison des résultats qu’elle produit. Plus précisément, les réseaux neuronaux de classification qui utilisent une fonction d'activation sigmoïde ou softmax dans la couche de sortie apprennent plus rapidement et de manière plus robuste à l'aide d'une fonction de perte d'entropie croisée.

L'utilisation de pertes d'entropie croisée a considérablement amélioré les performances des modèles avec des sorties sigmoïdes et softmax, qui souffraient auparavant de saturation et d'un apprentissage lent lors de l'utilisation de la perte d'erreur quadratique moyenne.

— Page 226, Apprentissage profond, 2016.

Quelle fonction de perte utiliser ?

Nous pouvons résumer la section précédente et suggérer directement les fonctions de perte que vous devriez utiliser dans un cadre de maximum de vraisemblance.

Il est important de noter que le choix de la fonction de perte est directement lié à la fonction d'activation utilisée dans la couche de sortie de votre réseau neuronal. Ces deux éléments de conception sont liés.

Considérez la configuration de la couche de sortie comme un choix concernant le cadrage de votre problème de prédiction, et le choix de la fonction de perte comme moyen de calculer l'erreur pour un cadrage donné de votre problème.

Le choix de la fonction de coût est étroitement lié au choix de l’unité de production. La plupart du temps, nous utilisons simplement l’entropie croisée entre la distribution des données et la distribution du modèle. Le choix de la manière de représenter la sortie détermine ensuite la forme de la fonction d'entropie croisée.

— Page 181, Apprentissage profond, 2016.

Nous passerons en revue les meilleures pratiques ou les valeurs par défaut pour chaque type de problème en ce qui concerne la couche de sortie et la fonction de perte.

Problème de régression

Un problème où vous prédisez une quantité à valeur réelle.

  • Configuration de la couche de sortie : un nœud avec une unité d'activation linéaire.
  • Fonction de perte : erreur quadratique moyenne (MSE).

Problème de classification binaire

Un problème où vous classez un exemple comme appartenant à l’une des deux classes.

Le problème est formulé comme prédire la probabilité qu'un exemple appartienne à la première classe, par ex. la classe à laquelle vous attribuez la valeur entière 1, tandis que l'autre classe reçoit la valeur 0.

  • Configuration de la couche de sortie : un nœud avec une unité d'activation sigmoïde.
  • Fonction de perte : entropie croisée, également appelée perte logarithmique.

Problème de classification multi-classes

Un problème où vous classez un exemple comme appartenant à l’une de plus de deux classes.

Le problème est formulé comme prédire la probabilité qu’un exemple appartienne à chaque classe.

  • Configuration de la couche de sortie : un nœud pour chaque classe utilisant la fonction d'activation softmax.
  • Fonction de perte : entropie croisée, également appelée perte logarithmique.

Comment implémenter des fonctions de perte

Afin de rendre concrètes les fonctions de perte, cette section explique comment fonctionne chacun des principaux types de fonctions de perte et comment calculer le score en Python.

Perte d'erreur quadratique moyenne

La perte d'erreur quadratique moyenne, ou MSE en abrégé, est calculée comme la moyenne des différences quadratiques entre les valeurs prédites et réelles.

Le résultat est toujours positif quel que soit le signe des valeurs prédites et réelles et une valeur parfaite est 0,0. La valeur de la perte est minimisée, bien qu'elle puisse être utilisée dans un processus d'optimisation de maximisation en rendant le score négatif.

La fonction Python ci-dessous fournit une implémentation fonctionnelle de type pseudocode d'une fonction permettant de calculer l'erreur quadratique moyenne pour une liste de quantités réelles et une liste de quantités réelles prédites.

# calculate mean squared error
def mean_squared_error(actual, predicted):
	sum_square_error = 0.0
	for i in range(len(actual)):
		sum_square_error += (actual[i] - predicted[i])**2.0
	mean_square_error = 1.0 / len(actual) * sum_square_error
	return mean_square_error

Pour une implémentation efficace, je vous encourage à utiliser la fonction scikit-learn Mean_squared_error().

Perte d'entropie croisée (ou perte de journal)

La perte d'entropie croisée est souvent simplement appelée « entropie croisée », « perte logarithmique », « perte logistique » ou « <log loss » pour faire court.

Chaque probabilité prédite est comparée à la valeur de sortie réelle de la classe (0 ou 1) et un score est calculé qui pénalise la probabilité en fonction de la distance par rapport à la valeur attendue. La pénalité est logarithmique, offrant un petit score pour de petites différences (0,1 ou 0,2) et un score énorme pour une grande différence (0,9 ou 1,0).

La perte d'entropie croisée est minimisée, les valeurs plus petites représentant un meilleur modèle que les valeurs plus grandes. Un modèle qui prédit des probabilités parfaites a une entropie croisée ou une perte logarithmique de 0,0.

L'entropie croisée pour un problème de prédiction binaire ou à deux classes est en fait calculée comme l'entropie croisée moyenne pour tous les exemples.

La fonction Python ci-dessous fournit une implémentation fonctionnelle de type pseudocode d'une fonction permettant de calculer l'entropie croisée pour une liste de valeurs réelles 0 et 1 par rapport aux probabilités prédites pour la classe 1.

from math import log

# calculate binary cross entropy
def binary_cross_entropy(actual, predicted):
	sum_score = 0.0
	for i in range(len(actual)):
		sum_score += actual[i] * log(1e-15 + predicted[i])
	mean_sum_score = 1.0 / len(actual) * sum_score
	return -mean_sum_score

Notez que nous ajoutons une très petite valeur (dans ce cas 1E-15) aux probabilités prédites pour éviter de calculer le log de 0,0. Cela signifie qu’en pratique, la meilleure perte possible sera une valeur très proche de zéro, mais pas exactement nulle.

L'entropie croisée peut être calculée pour la classification à plusieurs classes. Les classes ont été codées à chaud, ce qui signifie qu'il existe une fonctionnalité binaire pour chaque valeur de classe et que les prédictions doivent avoir des probabilités prédites pour chacune des classes. L'entropie croisée est ensuite additionnée pour chaque caractéristique binaire et moyennée pour tous les exemples de l'ensemble de données.

La fonction Python ci-dessous fournit une implémentation fonctionnelle de type pseudocode d'une fonction permettant de calculer l'entropie croisée pour une liste de valeurs réelles codées à chaud par rapport aux probabilités prédites pour chaque classe.

from math import log

# calculate categorical cross entropy
def categorical_cross_entropy(actual, predicted):
	sum_score = 0.0
	for i in range(len(actual)):
		for j in range(len(actual[i])):
			sum_score += actual[i][j] * log(1e-15 + predicted[i][j])
	mean_sum_score = 1.0 / len(actual) * sum_score
	return -mean_sum_score

Pour une implémentation efficace, je vous encourage à utiliser la fonction scikit-learn log_loss().

Fonctions de perte et performances du modèle signalées

Étant donné un cadre de maximum de vraisemblance, nous savons que nous souhaitons utiliser une fonction d'entropie croisée ou de perte d'erreur quadratique moyenne sous descente de gradient stochastique.

Néanmoins, nous pouvons ou non vouloir rendre compte des performances du modèle à l'aide de la fonction de perte.

Par exemple, la perte logarithmique est difficile à interpréter, en particulier pour les parties prenantes non praticiennes de l’apprentissage automatique. La même chose peut être dite pour l’erreur quadratique moyenne. Au lieu de cela, il peut être plus important de déclarer l’exactitude et l’erreur quadratique moyenne des modèles utilisés respectivement pour la classification et la régression.

Il peut également être souhaitable de choisir des modèles basés sur ces mesures plutôt que sur les pertes. Il s'agit d'une considération importante, car le modèle avec la perte minimale peut ne pas être le modèle avec la meilleure métrique importante pour les parties prenantes du projet.

Une bonne division à considérer consiste à utiliser la perte pour évaluer et diagnostiquer la qualité de l'apprentissage du modèle. Cela inclut toutes les considérations du processus d'optimisation, telles que le surajustement, le sous-ajustement et la convergence. Une métrique alternative peut ensuite être choisie qui a un sens pour les parties prenantes du projet pour à la fois évaluer les performances du modèle et effectuer la sélection du modèle.

  • Perte : utilisé uniquement pour évaluer et diagnostiquer l'optimisation du modèle.
  • Métrique : utilisé pour évaluer et choisir des modèles dans le contexte du projet.

La même métrique peut être utilisée pour les deux préoccupations, mais il est plus probable que les préoccupations du processus d'optimisation diffèrent des objectifs du projet et que des scores différents soient requis. Néanmoins, il arrive souvent que l’amélioration de la perte améliore ou, dans le pire des cas, n’ait aucun effet sur la métrique d’intérêt.

Lectures complémentaires

Cette section fournit plus de ressources sur le sujet si vous souhaitez approfondir.

Livres

  • Apprentissage profond, 2016.
  • Neural Smithing : apprentissage supervisé dans les réseaux de neurones artificiels Feedforward, 1999.
  • Réseaux de neurones pour la reconnaissance de formes, 1995.

Articles

  • Estimation du maximum de vraisemblance, Wikipédia.
  • Divergence Kullback-Leibler, Wikipédia.
  • Entropie croisée, Wikipédia.
  • Erreur quadratique moyenne, Wikipédia.
  • Perte de journal, FastAI Wiki.

Résumé

Dans cet article, vous avez découvert le rôle des fonctions de perte et de perte dans la formation des réseaux de neurones d'apprentissage profond et comment choisir la fonction de perte adaptée à vos problèmes de modélisation prédictive.

Concrètement, vous avez appris :

  • Les réseaux de neurones sont formés à l'aide d'un processus d'optimisation qui nécessite une fonction de perte pour calculer l'erreur du modèle.
  • La vraisemblance maximale fournit un cadre pour choisir une fonction de perte lors de la formation des réseaux de neurones et des modèles d'apprentissage automatique en général.
  • L'entropie croisée et l'erreur quadratique moyenne sont les deux principaux types de fonctions de perte à utiliser lors de la formation de modèles de réseaux neuronaux.

Avez-vous des questions ?
Posez vos questions dans les commentaires ci-dessous et je ferai de mon mieux pour y répondre.

Articles connexes