Training Data
Trainingsdaten sind die Menge an Beispielen, aus denen ein Modell seine Gewichte lernt. Erfahre, wie sie sich von Validierungs- und Testdaten unterscheiden und warum die Qualität der Kennzeichnungen ebenso wichtig ist wie der Umfang der Daten.
Trainingsdaten sind die Menge an Beispielen, aus denen ein Modell für maschinelles Lernen lernt. Während des Trainings passt ein Optimierer die Modellgewichte wiederholt an, um den Fehler bei diesen Beispielen zu verringern. Die Beispiele bestimmen somit, was das Modell lernen kann. Beim überwachten Lernen ist jedes Beispiel einer korrekten Antwort zugeordnet, etwa ein Straßenfoto mit einem Begrenzungsrahmen und einem Klassennamen für jedes Auto und jeden Fußgänger. Selbstüberwachtes und unüberwachtes Lernen arbeiten mit rohen Eingaben ohne Beschriftungen. „Trainingssatz“ ist ein Synonym. In den meisten Projekten ist er die größte Aufteilung der verfügbaren Daten und umfasst häufig 70 bis 80 Prozent davon.
So verwenden Modelle Trainingsdaten#
Ein Modell verarbeitet seine Trainingsdaten in Batches. Für jeden Batch erstellt es Vorhersagen, eine Verlustfunktion misst deren Abweichung von den Beschriftungen, die Rückwärtspropagierung berechnet den Beitrag jedes Gewichts zum Fehler, und der Optimierer passt die Gewichte an, um den Fehler zu verringern. Ein vollständiger Durchlauf des Trainingssatzes heißt Epoche. Das Training umfasst üblicherweise einige Dutzend bis mehrere Hundert Epochen.
Da das Modell anhand genau dieser Beispiele optimiert wird, überschätzt sein Ergebnis auf ihnen, wie gut es mit neuen Daten zurechtkommt. Zwei zurückgehaltene Datensätze gleichen dies aus. Validierungsdaten werden während der Entwicklung ausgewertet, um Hyperparameter und Prüfpunkte auszuwählen. Testdaten werden erst am Ende einmal ausgewertet, um die Leistung in der realen Welt abzuschätzen. Ein großer Abstand zwischen den Ergebnissen für Training und Validierung weist auf Überanpassung hin: Das Modell merkt sich Trainingsbeispiele, statt verallgemeinerbare Muster zu lernen. Schlechte Ergebnisse bei beiden weisen auf Unteranpassung hin. Die Aufteilungen dürfen keine gemeinsamen Bilder enthalten: Nahezu identische Frames aus demselben Video oder Scans derselben Patientin bzw. desselben Patienten auf beiden Seiten der Aufteilung führen zu Datenleckage und lassen alle Ergebnisse mit zurückgehaltenen Daten zu gut aussehen.
Umfang, Qualität und Abdeckung#
Drei Eigenschaften eines Trainingssatzes bestimmen, wie gut ein Modell verallgemeinern kann:
- Umfang: Mehr Beispiele helfen, wobei der zusätzliche Nutzen mit zunehmender Anzahl abnimmt. Wenn du mit einem vortrainierten Modell startest und Transferlernen einsetzt, benötigt eine neue Aufgabe weniger beschriftete Beispiele.
- Qualität: Jede falsche, fehlende oder uneinheitlich gezeichnete Beschriftung lehrt das Modell etwas Falsches. Einheitliche Richtlinien für die Datenbeschriftung sind genauso wichtig wie die Anzahl der Beschriftungen.
- Abdeckung: Die Beispiele müssen die Bedingungen abdecken, denen das Modell ausgesetzt sein wird, etwa Lichtverhältnisse, Wetter, Kamerawinkel, Hintergründe und seltene Klassen. Ein nur mit Tagesbildern trainierter Detektor versagt nachts. Wenn Lücken an demografischen Merkmalen hängen, etwa fehlenden Hauttönen in einem Gesichtssatz, werden sie zum Datensatzbias.
Das folgende scikit-learn-Skript trainiert denselben Klassifikator mit unterschiedlich großen Trainingssätzen auf dem mitgelieferten Datensatz handgeschriebener Ziffern und bewertet jedes Modell anhand derselben festen Testaufteilung:
import numpy as np
from sklearn.datasets import load_digits
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# 1,797 labeled 8x8 digit images; hold out 30% to score every model
X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, stratify=y)
# Reassign 30% of the training labels at random to simulate careless labeling
rng = np.random.default_rng(0)
y_noisy = y_train.copy()
flip = rng.random(len(y_train)) < 0.3
y_noisy[flip] = rng.integers(0, 10, flip.sum())
# Train the same model on three different training sets
for name, n, labels in [("50 clean", 50, y_train), ("1,257 clean", 1257, y_train), ("1,257 noisy", 1257, y_noisy)]:
model = LogisticRegression(max_iter=5000).fit(X_train[:n], labels[:n])
print(f"{name}: test accuracy {model.score(X_test, y_test):.3f}")Die Vergrößerung des sauberen Trainingssatzes von 50 auf 1,257 Bilder erhöht die Testgenauigkeit von 0.863 auf 0.961. Der Lauf mit verrauschten Daten, bei dem 315 der 1,257 Beschriftungen (25 %) falsch sind, erreicht 0.861 und ist damit nicht besser als das Modell, das mit 50 sauberen Bildern trainiert wurde.
Einen Trainingssatz erstellen#
Teams stellen Trainingsdaten aus öffentlichen Datensätzen, eigenen Kameras und Protokollen sowie zunehmend aus synthetischen Daten zusammen. Öffentliche Benchmarks bieten eine gute Ausgangsbasis: Der COCO-Datensatz enthält 118,287 Trainingsbilder mit Beschriftungen für Erkennung, Segmentierung und Bildbeschreibung. Anschließend werden die Rohsammlungen bereinigt, um Duplikate, beschädigte Dateien und unpassende Bilder zu entfernen (Datenbereinigung). Darauf folgen Beschriftung und Überprüfung. Datenerweiterung erhöht die Vielfalt der Daten während des Trainings durch Spiegelungen, Ausschnitte, Farbverschiebungen und Mosaike. Sie kann jedoch nur bereits gesammelte Daten neu kombinieren. Fehlende Bedingungen müssen daher weiterhin fotografiert werden.
Ultralytics YOLO liest die Trainingsdaten aus dem Pfad train einer Dataset-YAML-Datei und ordnet jedem Bild eine Beschriftungsdatei .txt zu. Diese enthält pro Objekt eine Zeile: einen Klassenindex, gefolgt von Mittelpunkt, Breite und Höhe der Box, normalisiert auf die Bildgröße. Dasselbe YOLO-Dataset-Format wird für alle Aufteilungen verwendet. Zum Neuausgleich der Aufteilungen müssen Bilder und zugehörige Beschriftungsdateien daher zwischen Ordnern verschoben werden.
from ultralytics import YOLO
# Ein vortrainiertes YOLO26-Nano-Modell laden
model = YOLO("yolo26n.pt")
# coco8.yaml listet die Trainingsbilder auf (train: images/train) und die Validierungsbilder (val: images/val)
results = model.train(data="coco8.yaml", epochs=5)Das YOLO26-Modell wird anhand der vier Trainingsbilder von COCO8 feinabgestimmt, einer winzigen Stichprobe, mit der geprüft wird, ob eine Trainingspipeline durchgängig funktioniert.
Trainingsdaten und verwandte Begriffe#
- Validierungsdaten: Eine zurückgehaltene Teilmenge, die Entscheidungen während der Entwicklung unterstützt, etwa den Zeitpunkt, an dem das Training beendet wird. Die Gewichte des Modells werden anhand dieser Daten nie aktualisiert.
- Testdaten: Eine zurückgehaltene Teilmenge, die nur am Ende einmal ausgewertet wird. Das Ergebnis liefert eine unverzerrte Einschätzung der Leistung bei neuen Daten.
- Grundwahrheit: Die korrekten Antworten, die Beispielen zugeordnet sind. Beim überwachten Lernen enthalten Trainingsdaten die Grundwahrheit; für die Auswertung benötigt sie jedoch jede Aufteilung.
- Goldstandard-Datensatz: Eine kleine, von Fachleuten geprüfte Datensammlung, die als verlässliche Referenz für die Evaluierung und Qualitätskontrollen der Annotation dient.
- Benchmark-Datensatz: Ein öffentlicher Datensatz mit festgelegten Aufteilungen, der zum Modellvergleich dient. Die Trainingsaufteilung wird häufig zugleich als Vortrainingsdaten verwendet, und die zurückgehaltene Aufteilung bildet die Rangliste, wie etwa die 5.000 Bilder umfassende COCO-val2017-Aufteilung, anhand derer viele Veröffentlichungen zur Objekterkennung mAP angeben.










