Datenerweiterung nur für Trainingssätze?

Antworten:

12

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.

Hugh Perkins
quelle
2

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.

MachineEpsilon
quelle
1
Ich stimme nicht zu, z. Die meisten Papiere, die einen Imagenet-Datensatz verwenden, trainieren und testen ihren Klassifikator mit zufälligem Zuschneiden, was eine Form der Erweiterung darstellt
Łukasz Grad
Ich könnte mich sicherlich irren. Stört es Sie, eine Referenz anzugeben? Eine kurze Auswahl einiger Artikel wie AlexNet nvidia.cn/content/tesla/pdf/machine-learning/… , Resnet arxiv.org/pdf/1512.03385.pdf und YOLO9000 arxiv.org/pdf/1612.08242.pdf und es scheint so Keiner von diesen erweitert das Test-Set (soweit ich das beurteilen kann).
MachineEpsilon
3
In gewissem Sinne haben Sie beide Recht: Wenn ein Netz mit zufälligem Zuschnitt trainiert wurde, werden die Testbilder in der Regel auch beschnitten. Aber sie sind möglicherweise keine zufällige Ernte: Sie sind möglicherweise eine zentrale Ernte. Aber nicht immer. Ich bin mir nicht sicher, ob dies eine "Erweiterung" des Testsatzes als solcher ist, sondern ob die Verteilung der Eingabedaten im Testsatz etwas mit der des Trainingssatzes übereinstimmt. Aber das ist wirklich Semantik: Aus technischer Sicht muss man möglicherweise etwas mit dem Test-Set tun, damit es dem Trainingsset ähnelt, ähnlich wie Dropout zur Testzeit funktioniert.
Hugh Perkins
1
Ja, das macht Sinn. Soweit ich sehen kann, ist das Zuschneiden ein Sonderfall, da es die Modellarchitektur beeinflusst, indem die Größe der Eingabeebene geändert wird und andere Augmentationstransformationen (wie das Hinzufügen von Rauschen, Reflexionen, Unschärfe) dies nicht tun.
MachineEpsilon
1
@Machineepsilon Hier ist das erste Beispiel, das ich von Anfang an finden konnte, Tabelle 4: arxiv.org/pdf/1512.00567.pdf
Łukasz Grad
0

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.

Fábio Perez
quelle
Ich möchte hier nur eines sagen. Wenn ich eine Drehung um 5 verschiedene Winkel und zufälliges Zuschneiden auf den gesamten Datensatz anwende und dann in Trainingstests und -validierung unterteilt. Wird es eine völlig falsche Auswertung des Datensatzes geben?
Aadnan Farooq A
@AadnanFarooqA Ja, Ihr Validierungssatz ist kontaminiert.
Fábio Perez
Also, was wird die beste Datenanordnung sein. Datenerweiterung auf Trainingsdaten. Validierung und Test verbleiben als Originaldaten. Wenn dies der Fall ist, nehmen wir an, dass die Trainingsdaten nach der Datenerweiterung 10000 Bilder und die Validierung und das Testen jeweils 500 Bilder betragen.
Aadnan Farooq A