Une fonction de perte mesure à quel point un modèle se trompe. C’est le signal qui lui permet de corriger ses prédictions pendant l’entraînement. Je vais expliquer l’intuition, MSE, MAE, l’entropie croisée, puis la différence avec l’accuracy, sans partir dans les formules inutiles.
À quoi sert une fonction de perte ?
Une fonction de perte sert à mesurer l’écart entre ce qu’un modèle prédit et la vraie réponse, avec un nombre exploitable pour l’entraînement.
Je la vois comme le score d’erreur du modèle. Pas un jugement vague du genre “c’est bon” ou “c’est raté”, mais une valeur précise qui dit à quel point il s’est trompé. C’est exactement comme une fléchette sur une cible. Dire “j’ai raté le centre” ne suffit pas. Il faut savoir si je suis à 2 centimètres du centre ou à 80 centimètres. Dans les deux cas, j’ai raté, mais la correction à faire n’a rien à voir.
Plus la perte est élevée, plus la prédiction est mauvaise. Plus elle est faible, plus le modèle se rapproche de la bonne réponse. Ce score devient le signal qui permet d’ajuster le modèle pendant l’apprentissage. Le modèle teste, se trompe, reçoit une perte, puis modifie ses paramètres pour essayer de réduire cette perte au prochain passage.
Ce mécanisme passe souvent par une méthode comme la descente de gradient. Le nom peut faire peur, mais l’idée est simple : le modèle cherche la direction dans laquelle modifier ses réglages pour faire baisser l’erreur. Un peu comme si je corrigeais progressivement mon tir après chaque fléchette.
Le point important, c’est que le modèle n’a pas une intuition humaine de son erreur. Il ne se dit pas “ah oui, là j’étais presque bon”. Il reçoit juste un score numérique. Et ce score guide ses ajustements.
Un exemple très simple :
- Si la vraie valeur est 110 et que le modèle prédit 100, il est assez proche.
- Si la vraie valeur est 110 et qu’il prédit 10, l’erreur est beaucoup plus grave.
Dans les deux cas, la prédiction est fausse. Mais la fonction de perte permet de quantifier à quel point elle est fausse. C’est ça qui rend l’apprentissage possible.
Sur le terrain, dans les projets data, je vois souvent des équipes regarder uniquement la métrique finale, comme la précision ou le score métier. C’est utile, bien sûr. Mais la loss raconte déjà beaucoup plus tôt si le modèle apprend vraiment ou s’il tourne à vide. Et parfois, elle évite de perdre plusieurs jours sur un modèle qui n’est jamais parti dans la bonne direction.
Comment marche la MSE ?
La MSE, pour Mean Squared Error, ou erreur quadratique moyenne en français, mesure la moyenne des erreurs mises au carré. Je l’utilise surtout quand le modèle doit prédire une valeur numérique, pas une catégorie. Un prix, une durée, une température, une demande client, un chiffre d’affaires. Bref, de la régression.
Le calcul est assez simple. On prend chaque prédiction du modèle, on la compare à la vraie valeur, puis on regarde à quel point ça se trompe.
- On calcule l’écart entre la prédiction et la vérité.
- On met cet écart au carré.
- On fait la moyenne de toutes ces erreurs au carré.
Le carré a deux effets très utiles. D’abord, il évite que les erreurs positives et négatives s’annulent. Si je me trompe de +5 sur une prédiction et de -5 sur une autre, la moyenne simple dirait presque “tout va bien”. Alors que non, le modèle s’est bien trompé deux fois.
Ensuite, le carré pénalise beaucoup plus les grosses erreurs. Une erreur de 2 devient 4. Une erreur de 10 devient 100. Le modèle comprend vite que les gros écarts coûtent cher. Et dans certains business, c’est exactement ce qu’on veut. Si je prédis une demande produit avec 10 unités d’écart, ce n’est pas pareil que 10 000 unités d’écart. J’ai déjà vu ça sur des prévisions de stock, une grosse erreur peut coûter beaucoup plus qu’une série de petites imprécisions.
Voici une version Python très simple, sans NumPy, juste pour voir la logique :
def mse(y_true, y_pred):
# On vérifie que les deux listes ont la même taille
if len(y_true) != len(y_pred):
raise ValueError("Les deux listes doivent avoir la même longueur")
erreurs_au_carre = []
for vrai, prediction in zip(y_true, y_pred):
erreur = vrai - prediction
erreurs_au_carre.append(erreur ** 2)
return sum(erreurs_au_carre) / len(erreurs_au_carre)
print(mse([100, 200, 300], [110, 190, 330]))
La limite, c’est que la MSE devient très sensible aux valeurs aberrantes. Une donnée complètement anormale peut tirer le score vers le haut et donner l’impression que le modèle est mauvais partout, alors que le problème vient parfois d’un seul point extrême.
| Usage | Régression : prix, durée, température, demande, chiffre d’affaires. |
| Avantage | Pénalise fortement les grosses erreurs, utile quand elles coûtent cher. |
| Limite | Très sensible aux valeurs aberrantes et aux données anormales. |
Quand préférer la MAE ?
Je préfère la MAE quand je veux mesurer une erreur moyenne plus robuste, moins agressive avec les valeurs aberrantes que la MSE. C’est souvent mon choix quand je veux comprendre l’erreur “typique” d’un modèle, sans qu’une poignée de cas extrêmes prenne toute la place.
La MAE, pour Mean Absolute Error, ou erreur absolue moyenne, fait quelque chose de très simple. Elle prend l’écart entre la prédiction et la vraie valeur, elle garde la valeur absolue de cet écart, puis elle calcule la moyenne. Donc si le modèle prédit 90 au lieu de 100, l’erreur vaut 10. Si le modèle prédit 110 au lieu de 100, l’erreur vaut aussi 10.
La différence importante avec la MSE, c’est la punition. La MAE punit les erreurs de façon proportionnelle : une erreur de 10 coûte 10, pas 100. La MSE, elle, met l’erreur au carré. Une grosse erreur devient donc beaucoup plus lourde dans le calcul.
Ce n’est pas une histoire de “meilleure” ou “mauvaise” fonction de perte. C’est une histoire de comportement souhaité. Si les grosses erreurs sont vraiment critiques, la MSE peut être très utile. Si je veux éviter qu’un modèle soit trop influencé par quelques valeurs extrêmes, la MAE est souvent plus saine.
Un exemple simple. Sur un modèle de prévision de prix, si 98% des biens sont classiques et 2% sont des biens très atypiques, la MSE peut tirer l’apprentissage vers ces cas rares. La MAE va souvent mieux représenter l’erreur courante. Mais attention, et je l’ai vu chez un client dans l’assurance, un outlier n’est pas toujours un déchet statistique. Parfois, c’est justement le cas business qui coûte cher et qu’il faut absolument traiter.
def mae(y_true, y_pred):
# On calcule les écarts absolus entre vérité et prédiction
erreurs = [abs(vrai - pred) for vrai, pred in zip(y_true, y_pred)]
# On retourne la moyenne des erreurs
return sum(erreurs) / len(erreurs)
y_true = [100, 200, 300]
y_pred = [110, 190, 330]
print(mae(y_true, y_pred))
| Situation | Choix souvent adapté |
| Les grosses erreurs sont critiques et doivent être fortement pénalisées. | MSE |
| Je veux une mesure plus stable, moins sensible aux valeurs extrêmes. | MAE |
| Le bon choix dépend du coût réel de l’erreur dans le métier. | Analyse métier avant tout |
Pourquoi utiliser l’entropie croisée ?
L’entropie croisée, ou cross-entropy loss, est utilisée en classification parce qu’elle ne regarde pas seulement si le modèle choisit la bonne classe. Elle regarde aussi à quel point il est confiant dans cette prédiction. Et ça change tout.
En régression, le modèle prédit souvent une valeur numérique directe. Un prix, une température, un chiffre d’affaires. On compare la valeur prédite à la vraie valeur, et on mesure l’écart.
En classification, c’est différent. Le modèle produit souvent des probabilités pour plusieurs classes. Spam ou non spam. Client à risque ou non. Image de chat ou de chien. Il ne dit pas juste “chien”. Il peut dire “chien à 90 %” ou “chien à 51 %”. Les deux peuvent être considérés comme corrects si la vraie classe est chien, mais ils ne racontent pas du tout la même chose.
| Situation | Effet sur la perte |
| Bonne réponse avec forte confiance | Faible perte |
| Bonne réponse avec faible confiance | Perte moyenne |
| Mauvaise réponse avec forte confiance | Forte perte |
C’est cette dernière situation qui m’intéresse le plus en pratique. Un modèle qui se trompe, ça arrive. Un modèle qui se trompe avec une énorme certitude, c’est beaucoup plus dangereux. J’ai déjà vu ça chez un client sur un scoring commercial. Le modèle classait certains prospects comme “très chauds” avec une confiance énorme, alors qu’ils ne convertissaient presque jamais. Le problème n’était pas seulement l’erreur. Le problème, c’était la fausse certitude derrière l’erreur.
La cross-entropy pousse le modèle à éviter ce genre de comportement. Elle ne cherche pas seulement à obtenir le bon label. Elle l’encourage à produire des probabilités plus réalistes, mieux calibrées. “Calibrées”, ça veut dire que si le modèle annonce 90 % de confiance, on aimerait qu’il ait raison environ 9 fois sur 10. Pas qu’il balance des scores absurdes qui donnent une impression de maîtrise.
Si la vraie classe est chien, une prédiction “chien à 0,90” est bien meilleure qu’une prédiction “chien à 0,51”. Pourtant, côté accuracy, les deux peuvent compter comme correctes. C’est précisément pour ça que la loss donne souvent un signal beaucoup plus fin que l’accuracy.
Loss et accuracy disent quoi ?
La loss dit à quel point le modèle se trompe. L’accuracy dit combien de fois il tombe sur la bonne classe. C’est la différence la plus simple à garder en tête.
L’accuracy, ou précision au sens “taux de bonnes réponses”, est facile à lire. Si elle vaut 90 %, le modèle a répondu correctement 9 fois sur 10. C’est parlant, c’est rassurant, et c’est souvent ce que les équipes métier comprennent le plus vite.
Mais pour entraîner un modèle, c’est parfois trop grossier. L’accuracy compte souvent juste “correct” ou “incorrect”. Elle ne voit pas toujours la nuance. La loss, elle, garde cette nuance. Elle distingue une petite erreur d’une grosse erreur. Elle voit aussi la différence entre une bonne prédiction fragile et une bonne prédiction très confiante.
Prenons un exemple simple. Deux modèles classent des images de chats et de chiens. Les deux ont 80 % d’accuracy. Sur le papier, ils semblent équivalents. Sauf que le premier donne les bonnes réponses avec 0,99 de confiance, donc il est presque sûr de lui. Le second donne les bonnes réponses avec 0,51 de confiance, donc il passe tout juste au-dessus du seuil. Même score apparent, mais pas du tout la même qualité de probabilité.
C’est pour ça que la loss est très utile pendant l’optimisation. L’optimisation, c’est le moment où le modèle ajuste ses paramètres internes pour moins se tromper. La loss fournit un signal plus continu, plus exploitable. Elle permet de dire au modèle “Tu vas dans la bonne direction, mais pas assez” ou “Là, tu t’es vraiment planté”. L’accuracy, elle, sert plutôt à lire une performance finale ou intermédiaire. Elle aide à suivre, mais elle ne suffit pas toujours à guider l’apprentissage.
En projet, je regarde rarement une seule métrique. Je regarde la loss, l’accuracy quand elle a du sens, et surtout l’impact métier des erreurs. Une erreur acceptable en recommandation produit peut être critique en détection de fraude. J’ai déjà vu des modèles avec une belle accuracy, mais inutilisables parce qu’ils rataient précisément les cas qui coûtaient cher.
| Métrique | Définition | Avantage | Limite | Moment d’utilisation |
| Loss | Mesure à quel point le modèle se trompe. | Donne un signal fin et continu pour améliorer le modèle. | Moins intuitive à lire pour un non-technique. | Pendant l’entraînement et l’optimisation. |
| Accuracy | Mesure la proportion de bonnes classes prédites. | Simple à comprendre et à communiquer. | Peut masquer la confiance et le coût réel des erreurs. | Pour suivre ou résumer la performance. |
Alors quelle fonction de perte choisir pour votre modèle ?
Je choisis une fonction de perte selon le problème, pas par habitude. Pour une prédiction numérique, la MSE est utile quand les grosses erreurs doivent coûter cher. La MAE est souvent plus saine quand les valeurs aberrantes risquent de déformer la lecture. Pour une classification, l’entropie croisée donne un signal plus fin, surtout quand la confiance du modèle compte. L’accuracy reste pratique, mais elle ne raconte pas toute l’histoire. Le vrai bénéfice pour vous, c’est de mieux piloter l’entraînement, de comprendre les erreurs du modèle et d’éviter de valider une IA qui semble bonne mais apprend mal.
FAQ
- Qu’est-ce qu’une fonction de perte en machine learning ?
Une fonction de perte mesure l’écart entre la prédiction d’un modèle et la vraie réponse. Elle retourne un nombre : plus il est élevé, plus le modèle se trompe. Ce score sert ensuite de signal pour corriger le modèle pendant l’entraînement. - Quelle est la différence entre MSE et MAE ?
La MSE met les erreurs au carré, donc elle pénalise très fortement les grosses erreurs. La MAE prend la valeur absolue des erreurs, donc elle reste plus proportionnelle. En pratique, j’utilise plutôt la MSE quand les gros écarts sont coûteux, et la MAE quand je veux moins subir l’effet des valeurs aberrantes. - Pourquoi l’entropie croisée est utilisée en classification ?
Parce qu’elle tient compte de la bonne classe, mais aussi du niveau de confiance du modèle. Une prédiction juste mais hésitante n’a pas la même qualité qu’une prédiction juste et très confiante. Une prédiction fausse avec une forte confiance est fortement pénalisée. - Pourquoi ne pas utiliser seulement l’accuracy ?
L’accuracy dit combien de prédictions sont correctes, mais elle perd beaucoup de nuances. Deux modèles peuvent avoir la même accuracy alors que l’un est beaucoup plus fiable dans ses probabilités. La loss donne un signal plus fin pour comprendre et améliorer l’apprentissage. - Comment choisir la bonne fonction de perte ?
Je pars du type de problème. Pour une valeur numérique, je regarde MSE ou MAE selon la sensibilité aux grosses erreurs. Pour une classification, l’entropie croisée est souvent le choix naturel. Après, je vérifie toujours le sens business des erreurs, parce qu’une bonne loss sur le papier peut être mal alignée avec le vrai coût métier.
A propos de l’auteur
Je suis Franck Scandolera, expert et formateur en Data, IA, tracking avancé server-side, Analytics Engineering, automatisation No/Low Code avec n8n, SEO/GEO et intégration de l’IA en entreprise. J’accompagne des équipes sur des sujets très concrets : mesure, modèles, qualité des données, automatisation et usage business de l’IA. J’ai travaillé avec des références comme Logis Hôtel, Yelloh Village, BazarChic, la Fédération Française de Football ou Texdecor. Je dirige l’agence webAnalyste et l’organisme Formations Analytics. Si vous voulez cadrer ou industrialiser vos projets IA et data, contactez-moi.
⭐ Analytics engineer, Data Analyst et Automatisation IA indépendant ⭐
- Ref clients : Logis Hôtel, Yelloh Village, BazarChic, Fédération Football Français, Texdecor…
Mon terrain de jeu :
- Data Analyst & Analytics engineering : tracking avancé (GTM server, e-commerce, CAPI, RGPD), entrepôt de données (BigQuery, Snowflake, PostgreSQL, ClickHouse), modèles (Airflow, dbt, Dataform), dashboards décisionnels (Looker, Power BI, Metabase, SQL, Python).
- Automatisation IA des taches Data, Marketing, RH, compta etc : conception de workflows intelligents robustes (n8n, App Script, scraping) connectés aux API de vos outils et LLM (OpenAI, Mistral, Claude…).
- Engineering IA pour créer des applications et agent IA sur mesure : intégration de LLM (OpenAI, Mistral…), RAG, assistants métier, génération de documents complexes, APIs, backends Node.js/Python.






