Ist es üblich, die Datenerweiterung nur auf Trainingssätze oder sowohl auf Trainings- als auch auf Testsätze anzuwenden?
Ist es üblich, die Datenerweiterung nur auf Trainingssätze oder sowohl auf Trainings- als auch auf Testsätze anzuwenden?
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.
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.
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.
Die Erweiterung des Datensatzes kann nur als eine Möglichkeit zur Vorverarbeitung des Trainingssatzes angesehen werden. Die Dataset-Erweiterung ist eine hervorragende Möglichkeit, den Generalisierungsfehler der meisten Computer-Vision-Modelle zu reduzieren. Eine verwandte Idee, die zum Testzeitpunkt anwendbar ist, besteht darin, dem Modell viele verschiedene Versionen derselben Eingabe zu zeigen (z. B. dasselbe Bild an leicht unterschiedlichen Stellen zugeschnitten) und die verschiedenen Instanziierungen der Modellabstimmung zu haben, um die Ausgabe zu bestimmen. Diese letztere Idee kann als Ensemble-Ansatz interpretiert werden und hilft, Generalisierungsfehler zu reduzieren. ( Deep Learning Book, Kapitel 12 ).
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.