يعد تكبير البيانات غير الخاضعة للإشراف أو UDA طريقة تعليمية شبه خاضعة للإشراف تحقق نتائج حديثة على مجموعة واسعة من مهام اللغة والرؤية.
مع 20 من الأمثلة المسمى فقط ، يتفوق UDA على أحدث أحدث على أحدث طراز على IMDB المدربين على 25000 من الأمثلة المسمى.
| نموذج | عدد الأمثلة المسمى | معدل الخطأ |
|---|---|---|
| ضريبة القيمة المضافة المختلطة (السابقة سوتا) | 25000 | 4.32 |
| بيرت | 25000 | 4.51 |
| أودا | 20 | 4.20 |
إنه يقلل من أكثر من 30 ٪ من معدل خطأ الأساليب الحديثة على CIFAR-10 مع 4000 من الأمثلة المسمى و SVHN مع 1000 أمثلة مسمى:
| نموذج | CIFAR-10 | SVHN |
|---|---|---|
| تكنولوجيا المعلومات والاتصالات (السابق سوتا) | 7.66 ± .17 | 3.53 ± .07 |
| أودا | 4.31 ± .08 | 2.28 ± .10 |
وهذا يؤدي إلى تحسينات كبيرة على ImageNet مع 10 ٪ البيانات المسمى.
| نموذج | أعلى 1 دقة | أعلى 5 دقة |
|---|---|---|
| RESNET-50 | 55.09 | 77.26 |
| أودا | 68.78 | 88.80 |
UDA هي وسيلة للتعلم شبه الخاضع للإشراف ، والتي تقلل من الحاجة إلى أمثلة تحمل علامات وتستخدم بشكل أفضل تلك غير المسماة.
نحن نطلق ما يلي:
تعمل جميع التعليمات البرمجية في هذا المستودع خارج الصندوق مع GPU و Google Cloud TPU.
يتم اختبار الرمز على Python 2.7 و TensorFlow 1.13. بعد تثبيت TensorFlow ، قم بتشغيل الأمر التالي لتثبيت التبعيات:
pip install --user absl-pyننشئ 100 مثال معزز لكل مثال أصلي. لتنزيل جميع البيانات المعززة ، انتقل إلى دليل الصور وتشغيله
AUG_COPY=100
bash scripts/download_cifar10.sh ${AUG_COPY}لاحظ أنك تحتاج إلى مساحة قرص 120 جرام لجميع البيانات المعززة. لتوفير المساحة ، يمكنك ضبط Aug_copy على عدد أصغر مثل 30.
بدلاً من ذلك ، يمكنك إنشاء الأمثلة المعززة بنفسك عن طريق التشغيل
AUG_COPY=100
bash scripts/preprocess.sh --aug_copy= ${AUG_COPY}أمر GPU:
# 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} تعد نصوص مراجعة الفيلم في IMDB أطول من العديد من مهام التصنيف ، لذا فإن استخدام طول تسلسل أطول يؤدي إلى عروض أفضل. تقتصر أطوال التسلسل على ذاكرة TPU/GPU عند استخدام BERT (انظر مشكلات BERT خارج الذاكرة). على هذا النحو ، فإننا نقدم البرامج النصية لتشغيلها بأطوال تسلسل أقصر وأحجام دفع أصغر.
إذا كنت ترغب في تشغيل UDA مع قاعدة Bert على وحدة معالجة الرسومات مع ذاكرة 11 جيجابايت ، فانتقل إلى دليل النص وتشغيل الأوامر التالية:
# 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}
يتم تحقيق أفضل أداء في الورقة باستخدام MAX_SEQ_LENGTH من 512 وتهيئة مع BERT كبيرة في البيانات غير الخاضعة للإشراف في المجال. إذا كان لديك إمكانية الوصول إلى جراب Google Cloud TPU V3-32 ، فحاول:
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.shبادئ ذي بدء ، قم بتثبيت التبعيات التالية:
pip install --user nltk
python -c " import nltk; nltk.download('punkt') "
pip install --user tensor2tensor==1.13.4يترجم الأمر التالي ملف المثال المقدم. يقوم تلقائيًا بتقسيم الفقرات إلى جمل ، وترجم الجمل الإنجليزية إلى الفرنسية ثم يترجمها إلى اللغة الإنجليزية. أخيرًا ، يتكون من الجمل المعاد صياغتها في فقرات. انتقل إلى دليل Back_translate وركض:
bash download.sh
bash run.shيوجد متغير sampling_temp في ملف bash. يتم استخدامه للسيطرة على تنوع وجودة إعادة صياغة. زيادة sampling_temp سيؤدي إلى زيادة التنوع ولكن جودة أسوأ. والمثير للدهشة أن التنوع أكثر أهمية من الجودة للعديد من المهام التي جربناها.
نقترح محاولة تعيين sampling_temp إلى 0.7 و 0.8 و 0.9. إذا كانت مهمتك قوية جدًا للضوضاء ، فيجب أن يؤدي sampling_temp = 0.9 أو 0.8 إلى تحسين الأداء. إذا لم تكن مهمتك قوية للضوضاء ، فيجب أن يكون تحديد درجة أخذ العينات إلى 0.7 أو 0.6 أفضل.
إذا كنت ترغب في القيام بالترجمة مرة أخرى إلى ملف كبير ، فيمكنك تغيير الوسائط النسخ المتماثلة والوسيطات في Run.Sh. على سبيل المثال ، عند النسخ المتماثلة = 3 ، نقسم البيانات إلى ثلاثة أجزاء ، وسيقوم كل تشغيل. sh معالجة جزء واحد فقط وفقًا لـ Worker_id.
تعمل UDA خارج الصندوق ولا تتطلب ضبطًا كبيرًا على مقياس فرطمي ، ولكن لدفع الأداء حقًا ، إليك اقتراحات حول المتقاعدين:
يتم أخذ جزء كبير من الكود من Bert و Randaugment. شكرًا!
يرجى الاستشهاد بهذه الورقة إذا كنت تستخدم UDA.
@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}
}
يرجى أيضًا الاستشهاد بهذه الورقة إذا كنت تستخدم UDA للصور.
@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}
}
هذا ليس منتج Google المدعوم رسميًا.