Underfitting
Le sous-apprentissage se produit lorsqu’un modèle est trop simple ou insuffisamment entraîné pour saisir les motifs présents dans ses données ; il commet alors des erreurs aussi bien sur les données d’entraînement que sur de nouvelles données. Signes et solutions.
Le sous-apprentissage survient lorsqu'un modèle de machine learning (ML) ne parvient pas à saisir les motifs présents dans ses données d'entraînement ; il commet alors de grosses erreurs aussi bien sur les exemples appris que sur les nouveaux exemples. Faire passer une droite par des points qui suivent une courbe, comme le fait une simple régression linéaire, en est l'exemple classique : aucun choix de pente et d'ordonnée à l'origine ne peut suivre la courbure. Un modèle en sous-apprentissage présente un biais élevé, ce qui signifie que ses hypothèses sont trop restrictives par rapport à la véritable relation entre les entrées et les sorties, et sa précision est faible sur l'ensemble d'entraînement comme sur les données de test.
Signes de sous-apprentissage#
Le signe le plus clair est une perte d’entraînement qui reste élevée. Lorsque la fonction de perte plafonne bien au-dessus d’un niveau acceptable et que la perte sur les données de validation reste proche, le modèle n’apprend pas suffisamment ; le faible écart entre les deux montre que la mémorisation n’est pas en cause. Les courbes d’apprentissage qui représentent l’erreur en fonction de la taille du jeu d’entraînement montrent un second signe : les deux courbes plafonnent à une erreur élevée, de sorte qu’ajouter davantage de données du même type aide à peine. En détection d’objets, un modèle qui obtient une faible précision moyenne moyenne (mAP) sur les images mêmes qui lui ont servi à s’entraîner est en sous-apprentissage ; c’est l’un des contrôles du guide de test des modèles Ultralytics. Comparer les deux pertes distingue le sous-apprentissage du surapprentissage :
Causes courantes#
- Capacité insuffisante : La famille de modèles ne peut pas représenter le motif, comme un modèle linéaire appliqué à des données courbes ou un très petit réseau utilisé pour une tâche de vision complexe.
- Pas assez d'époques : Arrêter l'entraînement trop tôt, ou utiliser un taux d'apprentissage trop faible pour progresser dans le temps imparti, interrompt l'optimiseur avant sa convergence.
- Trop de régularisation : Une forte décroissance des poids, des taux élevés de dropout ou un augmentement très agressif contraignent tellement le modèle qu'il ne peut pas ajuster le signal.
- Caractéristiques peu informatives : L'absence de variables ou le redimensionnement des images au point de faire disparaître les petits objets suppriment les informations dont le modèle a besoin.
- Disparition des gradients et autres échecs d'optimisation : Les premières couches d'un réseau profond cessent d'apprendre, même si le modèle a une capacité suffisante.
Le sous-apprentissage en code#
L'exemple suivant ajuste des échantillons bruités d'une courbe sinusoïdale avec une droite et un polynôme cubique à l'aide de scikit-learn, puis indique l'erreur quadratique moyenne (MSE) sur les points d'entraînement et de test :
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import PolynomialFeatures
# Noisy samples of a curved function
rng = np.random.default_rng(0)
x = rng.uniform(-3, 3, size=(200, 1))
y = np.sin(x).ravel() + rng.normal(0, 0.1, size=200)
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0)
# A straight line underfits; a cubic polynomial has enough capacity for the curve
for degree in (1, 3):
model = make_pipeline(PolynomialFeatures(degree), LinearRegression()).fit(x_train, y_train)
train_mse = mean_squared_error(y_train, model.predict(x_train))
test_mse = mean_squared_error(y_test, model.predict(x_test))
print(f"degree {degree}: train MSE {train_mse:.3f}, test MSE {test_mse:.3f}")La droite obtient une MSE d'entraînement de 0,193 et une MSE de test de 0,188 : elles sont élevées et presque égales, ce qui caractérise le sous-apprentissage. Le polynôme cubique réduit ces valeurs à 0,013 et 0,017, proches du seuil de 0,010 imposé par le bruit ajouté aux données.
Corriger le sous-apprentissage#
Les corrections visent la cause : un modèle plus grand ou plus expressif, un entraînement plus long avec un taux d’apprentissage adapté, une régularisation moins forte ou davantage d’augmentation des données, et des entrées plus riches, comme une résolution d’image supérieure. YOLO26 existe en tailles n, s, m, l et x, qui adaptent la profondeur et la largeur d’une même architecture. Passer de yolo26n.pt à une taille supérieure est donc la première étape habituelle lorsque les pertes d’entraînement et de validation de la results.csv d’une exécution restent élevées. Les petits objets sont un cas fréquent en vision par ordinateur : un détecteur qui traite des images de drone à faible résolution d’entrée manque les petits objets qu’une résolution supérieure préserverait.
Sous-apprentissage et surapprentissage#
Le sous-apprentissage et le surapprentissage sont les deux modes d'échec du compromis biais-variance. Un modèle en sous-apprentissage présente un biais élevé et se trompe de manière similaire sur les données d'entraînement et les nouvelles données, tandis qu'un modèle en surapprentissage présente une variance élevée, ajuste étroitement ses données d'entraînement, bruit compris, et généralise mal. La représentation classique est une courbe en U de l'erreur de test, avec le sous-apprentissage à gauche et le surapprentissage à droite. Les grands réseaux neuronaux compliquent cette représentation avec la double descente, où l'erreur de test peut de nouveau diminuer quand le modèle est assez grand pour ajuster parfaitement ses données d'entraînement, un phénomène observé en fonction de la taille du modèle et des époques d'entraînement.










