Tutorial ini diberikan pada 2 Juni di NAACL 2019 di Minneapolis, MN, AS oleh Sebastian Ruder, Matthew Peters, Swabha Swayamdipta dan Thomas Wolf.
Berikut adalah halaman web tutorial NAACL untuk informasi lebih lanjut.
Slide untuk tutorial dapat ditemukan di sini: https://tinyurl.com/naacltransfer.
Notebook Google Colab dengan semua kode untuk tutorial dapat ditemukan di sini: https://tinyurl.com/naacltransfercolab.
Repositori saat ini juga dapat diakses dengan URL pendek berikut: https://tinyurl.com/naacltransfercode
Paradigma pembelajaran mesin yang diawasi klasik didasarkan pada pembelajaran secara isolasi model prediktif tunggal untuk tugas menggunakan dataset tunggal. Pendekatan ini membutuhkan sejumlah besar contoh pelatihan dan berkinerja terbaik untuk tugas-tugas yang terdefinisi dengan baik dan sempit. Transfer Learning mengacu pada serangkaian metode yang memperluas pendekatan ini dengan memanfaatkan data dari domain atau tugas tambahan untuk melatih model dengan sifat generalisasi yang lebih baik.
Selama dua tahun terakhir, bidang pemrosesan bahasa alami (NLP) telah menyaksikan munculnya beberapa metode dan arsitektur pembelajaran transfer, yang secara signifikan meningkat pada canggih pada berbagai tugas NLP.
Perbaikan ini bersama -sama dengan ketersediaan luas dan kemudahan integrasi metode ini mengingatkan pada faktor -faktor yang menyebabkan keberhasilan embedding kata pretrain dan pretraining imagenet dalam penglihatan komputer, dan menunjukkan bahwa metode ini kemungkinan akan menjadi alat umum dalam lanskap NLP serta arah penelitian yang penting.
Kami akan menyajikan gambaran umum tentang metode pembelajaran transfer modern di NLP, bagaimana model dilatih sebelumnya, informasi apa yang representasi yang mereka pelajari menangkap, dan meninjau contoh dan studi kasus tentang bagaimana model ini dapat diintegrasikan dan diadaptasi dalam tugas NLP hilir.
Basis kode ini mencoba menyajikan dengan cara yang paling sederhana dan paling kompak beberapa teknik pembelajaran transfer utama, yang telah muncul selama beberapa tahun terakhir. Kode dalam repositori ini tidak berusaha menjadi canggih. Namun, upaya telah dilakukan untuk mencapai kinerja yang wajar dan dengan beberapa modifikasi untuk bersaing dengan keadaan saat ini.
Upaya khusus telah dilakukan
Saat ini basis kode terdiri dari:
pretraining_model.py : Model transformator dengan arsitektur seperti GPT-2 sebagai model pretrained dasar;pretraining_train.py : skrip pretraining untuk melatih model ini dengan tujuan pemodelan bahasa pada pilihan kumpulan data besar (wikuxt-103, SimpleBooks-92) menggunakan pelatihan terdistribusi jika tersedia;finetuning_model.py : Beberapa arsitektur berdasarkan model transformator untuk menyempurnakan (dengan kepala klasifikasi di atas, dengan adaptor);finetuning_train.py : skrip yang menyempurnakan untuk menyempurnakan arsitektur ini pada tugas klasifikasi (IMDB). Untuk menggunakan basis kode ini, cukup klon Repositori GitHub dan instal persyaratan seperti ini:
git clone https://github.com/huggingface/naacl_transfer_learning_tutorial
cd naacl_transfer_learning_tutorial
pip install -r requirements.txt Untuk pra-pelatihan transformator, jalankan skrip pretraining_train.py seperti ini:
python ./pretraining_train.pyatau menggunakan pelatihan terdistribusi seperti ini (untuk server 8 GPU):
python -m torch.distributed.launch --nproc_per_node 8 ./pretraining_train.pySkrip pra-pelatihan akan:
wikitext-103 untuk pra-pelatihan (default),./runs ,Pretraining ke validasi kebingungan ~ 29 di wikuxt-103 akan memakan waktu sekitar 15 jam pada 8 V100 GPU (dapat dihentikan lebih awal). Jika Anda tertarik pada SOTA, ada beberapa alasan validasi kebingungan sedikit lebih tinggi dari transformator yang setara-xl kebingungan (sekitar 24). Alasan utamanya adalah penggunaan kosakata terbuka (sub-kata untuk Bert tokenizer) alih-alih kosakata tertutup (lihat posting blog ini oleh Sebastian Mielke untuk beberapa penjelasan)
Berbagai opsi pra-pelatihan tersedia, Anda dapat mencantumkannya dengan:
python ./pretraining_train.py --help Untuk menyempurnakan transformator pra-terlatih, jalankan skrip finetuning_train.py seperti ini:
python ./finetuning_train.py --model_checkpoint PATH-TO-YOUR-PRETRAINED-MODEL-FOLDER PATH-TO-YOUR-PRETRAINED-MODEL-FOLDER dapat menjadi misalnya ./runs/May17_17-47-12_my_big_server
atau menggunakan pelatihan terdistribusi seperti ini (untuk server 8 GPU):
python -m torch.distributed.launch --nproc_per_node 8 ./finetuning_train.py --model_checkpoint PATH-TO-YOUR-PRETRAINED-MODEL-FOLDERBerbagai opsi penyesuaian tersedia, Anda dapat mencantumkannya dengan:
python ./finetuning_train.py --help