Unbewegte Datenvergrößerung oder UDA ist eine halbüberwachende Lernmethode, die hochmoderne Ergebnisse zu einer Vielzahl von Sprach- und Visionsaufgaben erzielt.
Mit nur 20 beschrifteten Beispielen übertrifft UDA den vorherigen hochmodernen auf IMDB, der auf 25.000 beschrifteten Beispielen geschult wurde.
| Modell | Anzahl der beschrifteten Beispiele | Fehlerrate |
|---|---|---|
| Gemischte Mehrwertsteuer (vorher. SOTA) | 25.000 | 4.32 |
| Bert | 25.000 | 4.51 |
| Uda | 20 | 4.20 |
Es reduziert mehr als 30% der Fehlerrate der hochmodernen Methoden auf CIFAR-10 mit 4.000 markierten Beispielen und SVHN mit 1.000 markierten Beispielen:
| Modell | CIFAR-10 | Svhn |
|---|---|---|
| IKT (PREV. SOTA) | 7,66 ± .17 | 3,53 ± 0,07 |
| Uda | 4,31 ± 0,08 | 2,28 ± .10 |
Dies führt zu signifikanten Verbesserungen der ImageNet mit 10% markierten Daten.
| Modell | Top-1-Genauigkeit | Top-5-Genauigkeit |
|---|---|---|
| Resnet-50 | 55.09 | 77,26 |
| Uda | 68.78 | 88.80 |
UDA ist eine Methode zum semi-überprüften Lernen , die die Notwendigkeit beschrifteter Beispiele verringert und besser unbezeichnete verwendet wird.
Wir veröffentlichen Folgendes:
Der gesamte Code in diesem Repository arbeitet mit GPU und Google Cloud TPU außerhalb des Boxs.
Der Code wird auf Python 2.7 und TensorFlow 1.13 getestet. Führen Sie nach der Installation von TensorFlow den folgenden Befehl aus, um Abhängigkeiten zu installieren:
pip install --user absl-pyWir generieren 100 erweiterte Beispiele für jedes ursprüngliche Beispiel. Um alle erweiterten Daten herunterzuladen, gehen Sie zum Bildverzeichnis und führen Sie aus
AUG_COPY=100
bash scripts/download_cifar10.sh ${AUG_COPY}Beachten Sie, dass Sie 120 g Speicherplatz für alle erweiterten Daten benötigen. Um Platz zu sparen, können Sie Aug_Copy auf eine kleinere Zahl wie 30 einstellen.
Alternativ können Sie die erweiterten Beispiele selbst durch Laufen generieren
AUG_COPY=100
bash scripts/preprocess.sh --aug_copy= ${AUG_COPY}GPU -Befehl:
# UDA accuracy:
# 4000: 95.68 +- 0.08
# 2000: 95.27 +- 0.14
# 1000: 95.25 +- 0.10
# 500: 95.20 +- 0.09
# 250: 94.57 +- 0.96
bash scripts/run_cifar10_gpu.sh --aug_copy= ${AUG_COPY} # UDA accuracy:
# 4000: 97.72 +- 0.10
# 2000: 97.80 +- 0.06
# 1000: 97.77 +- 0.07
# 500: 97.73 +- 0.09
# 250: 97.28 +- 0.40
bash scripts/run_svhn_gpu.sh --aug_copy= ${AUG_COPY} Die Movie Review -Texte in IMDB sind länger als viele Klassifizierungsaufgaben, sodass die Verwendung einer längeren Sequenzlänge zu besseren Leistungen führt. Die Sequenzlängen werden durch die Verwendung von Bert durch den TPU/GPU-Speicher begrenzt (siehe die Out-of-Memory-Probleme von Bert). Daher stellen wir Skripte zur Verfügung, die mit kürzeren Sequenzlängen und kleineren Chargengrößen ausgeführt werden.
Wenn Sie UDA mit Bert Base auf einer GPU mit 11 GB Speicher ausführen möchten, gehen Sie zum Textverzeichnis und führen Sie die folgenden Befehle aus:
# Set a larger max_seq_length if your GPU has a memory larger than 11GB
MAX_SEQ_LENGTH=128
# Download data and pretrained BERT checkpoints
bash scripts/download.sh
# Preprocessing
bash scripts/prepro.sh --max_seq_length= ${MAX_SEQ_LENGTH}
# Baseline accuracy: around 68%
bash scripts/run_base.sh --max_seq_length= ${MAX_SEQ_LENGTH}
# UDA accuracy: around 90%
# Set a larger train_batch_size to achieve better performance if your GPU has a larger memory.
bash scripts/run_base_uda.sh --train_batch_size=8 --max_seq_length= ${MAX_SEQ_LENGTH}
Die beste Leistung in der Arbeit wird durch die Verwendung einer max_seq_length von 512 erzielt und mit Bert großer Finetuned-Domänen-Daten initialisiert. Wenn Sie Zugriff auf Google Cloud TPU V3-32 POD haben, versuchen Sie es mit:
MAX_SEQ_LENGTH=512
# Download data and pretrained BERT checkpoints
bash scripts/download.sh
# Preprocessing
bash scripts/prepro.sh --max_seq_length= ${MAX_SEQ_LENGTH}
# UDA accuracy: 95.3% - 95.9%
bash train_large_ft_uda_tpu.shInstallieren Sie zunächst die folgenden Abhängigkeiten:
pip install --user nltk
python -c " import nltk; nltk.download('punkt') "
pip install --user tensor2tensor==1.13.4Der folgende Befehl übersetzt die angegebene Beispieldatei. Es spaltet automatisch Absätze in Sätze, übersetzt englische Sätze in Französisch und übersetzt sie dann wieder ins Englische. Schließlich komponiert es die paraphrasierten Sätze in Absätze. Gehen Sie zum Verzeichnis back_translate und rennen Sie:
bash download.sh
bash run.shIn der BASH -Datei befindet sich eine variable Sample_Temp . Es wird verwendet, um die Vielfalt und Qualität der Paraphrasen zu kontrollieren. Die Erhöhung der Probenahme_Temp führt zu einer erhöhten Vielfalt, aber einer schlechteren Qualität. Überraschenderweise ist die Vielfalt wichtiger als Qualität für viele Aufgaben, die wir ausprobiert haben.
Wir schlagen vor, zu versuchen, Sample_Temp auf 0,7, 0,8 und 0,9 festzulegen. Wenn Ihre Aufgabe für das Rauschen sehr robust ist, sollte Sample_Temp = 0,9 oder 0,8 zu einer verbesserten Leistung führen. Wenn Ihre Aufgabe nicht robust für das Rauschen ist, sollte es besser sein, die Abtemperatur auf 0,7 oder 0,6 zu setzen.
Wenn Sie die Übersetzung in eine große Datei zurückführen möchten, können Sie die Argumente Replicas und Worker_id in run.sh. Wenn beispielsweise Replicas = 3, teilen wir die Daten in drei Teile, und jeder Run.sh wird nur einen Teil gemäß der Worker_id verarbeiten.
UDA arbeitet außerhalb des Boxs und erfordert keine umfangreiche Hyperparameter-Abstimmung, aber um die Leistung wirklich voranzutreiben, finden Sie hier Vorschläge zu Hyperparamtern:
Ein großer Teil des Codes stammt aus Bert und Randaugment. Danke!
Bitte zitieren Sie dieses Papier, wenn Sie UDA verwenden.
@article{xie2019unsupervised,
title={Unsupervised Data Augmentation for Consistency Training},
author={Xie, Qizhe and Dai, Zihang and Hovy, Eduard and Luong, Minh-Thang and Le, Quoc V},
journal={arXiv preprint arXiv:1904.12848},
year={2019}
}
Bitte zitieren Sie dieses Papier auch, wenn Sie UDA für Bilder verwenden.
@article{cubuk2019randaugment,
title={RandAugment: Practical data augmentation with no separate search},
author={Cubuk, Ekin D and Zoph, Barret and Shlens, Jonathon and Le, Quoc V},
journal={arXiv preprint arXiv:1909.13719},
year={2019}
}
Dies ist kein offiziell unterstütztes Google -Produkt.