Ist es üblich, die Datenerweiterung nur auf Trainingssätze oder sowohl auf Trainings- als auch auf Testsätze anzuwenden?
machine-learning
deep-learning
regularization
data-augmentation
Rodrigo-Silveira
quelle
quelle
Antworten:
In Bezug auf das Konzept der Erweiterung, dh die Vergrößerung des Datensatzes aus irgendeinem Grund, tendieren wir dazu, nur den Trainingssatz zu erweitern. Wir würden das Ergebnis verschiedener Augmentationsansätze an einem Validierungssatz bewerten.
Wie @ Łukasz Grad jedoch betont, müssen wir möglicherweise ein ähnliches Verfahren wie beim Testsatz durchführen, wie es beim Trainingssatz durchgeführt wurde. Dies ist normalerweise so, dass die Eingabedaten aus dem Testsatz so weit wie möglich denen des Trainingssatzes ähneln. Zum Beispiel weist @ Łukasz Grad auf das Beispiel des Zuschneidens von Bildern hin, bei dem wir auch die Testbilder zuschneiden müssten, damit sie dieselbe Größe wie die Trainingsbilder haben. Im Fall der Trainingsbilder können wir jedoch jedes Trainingsbild mehrmals verwenden, mit Zuschnitten an verschiedenen Orten / Versätzen. Zur Testzeit würden wir wahrscheinlich entweder eine einzelne zentrierte Ernte machen oder zufällige Ernten machen und einen Durchschnitt nehmen.
Das Ausführen des Augmentationsverfahrens für Testdaten dient nicht dazu, die Testdaten größer / genauer zu machen, sondern nur dazu, dass die Eingabedaten aus dem Testsatz denen der Eingabedaten aus dem Trainingssatz ähneln, damit wir sie in dasselbe Netz einspeisen können (zB gleiche Abmessungen). Wir würden niemals in Betracht ziehen, dass der Testsatz in irgendeiner Weise "besser" ist, wenn wir ein Augmentationsverfahren anwenden. Zumindest habe ich das noch nie gesehen.
Andererseits besteht der Sinn der Erweiterung für das Trainingsset darin, die Überanpassung während des Trainings zu reduzieren. Und wir bewerten die Qualität der Erweiterung, indem wir das trainierte Modell anhand unseres mehr oder weniger festen Test- / Validierungssatzes ausführen.
quelle
Typischerweise wird die Datenerweiterung zum Trainieren von Faltungs-Neuronalen Netzen nur für den Trainingssatz durchgeführt. Ich bin mir nicht sicher, welchen Nutzen eine Erweiterung der Testdaten haben würde, da der Wert der Testdaten in erster Linie für die Modellauswahl und -bewertung bestimmt ist und Sie Ihrer Messung dieser Größen Rauschen hinzufügen.
quelle
Als Ergänzung zu den Antworten möchte ich meine 2 Cent für die Erweiterung der Testzeitdaten hinzufügen.
Die Datenerweiterung kann auch während der Testzeit durchgeführt werden, um die Varianz zu verringern. Dies kann durchgeführt werden, indem der Durchschnitt der Vorhersagen modifizierter Versionen des Eingabebildes genommen wird.
Es ist eine sehr übliche Praxis, die Testzeit zu verlängern. AlexNet und ResNet tun dies mit der 10-Crop-Technik (indem Patches aus den vier Ecken und der Mitte des Originalbilds entnommen und auch gespiegelt werden). Inception geht noch weiter und generiert 144 Patches anstelle von nur 10. Wenn Sie Kaggle und andere Wettbewerbe überprüfen, wenden die meisten Gewinner auch eine Verlängerung der Testzeit an.
Ich bin der Autor eines Artikels über Datenerweiterung ( Code ), in dem wir mit dem Training und Testen der Augmentation für die Klassifizierung von Hautläsionen experimentiert haben (eine Aufgabe mit geringen Datenmengen). In einigen Fällen ist die Verwendung einer starken Datenerweiterung allein für das Training geringfügig besser als die Nichtverwendung einer Datenerweiterung, während die Verwendung einer Zug- und Testerweiterung die Leistung des Modells um einen sehr signifikanten Vorsprung erhöht.
quelle