Fine-Tuning Pre-Trained Transformer-based Language Model

Tirana Fatyanosa
4 min readDec 22, 2020

--

Apa itu fine-tuning?

Fine-tuning artinya training model dengan task yang spesifik menggunakan model yang sudah dilatih dengan dataset yang besar. Biasanya untuk training language model menggunakan unsupervised learning.

Mengapa perlu fine-tuning?

Pre-trained language model seperti BERT dan GPT telah dilatih menggunakan dataset yang sangat besar. Model yang dihasilkan mampu memahami model bahasa yang dilatih.

Lebih cepat

Jika tidak menggunakan pre-trained language model, maka kita perlu training dari awal yang pasti membutuhkan banyak waktu dan resource.

Jika menggunakan pre-trained language model, maka dengan mudah kita dapat menggunakan model yang sudah dilatih dengan data besar dan tinggal di fine-tuning sesuai dengan dataset atau task spesifik. Dengan kata lain, dengan menggunakan pre-trained language model, kita dapat lebih cepat mendapatkan hasil yang lebih baik tanpa harus dilatih dari awal.

Butuh data yang lebih sedikit

Biasanya dataset untuk supervised learning sangat terbatas jumlahnya. Jika deep learning dilatih dengan data yang sedikit, ada kemungkinan performanya rendah. Karena pre-trained language model sudah dilatih dengan dataset yang besar, maka saat fine-tuning hanya perlu dataset yang jumlahnya lebih sedikit.

Performa lebih baik

Sebelum muncul pre-trained language model, arsitektur model dibuat sedemikian rupa hingga menghasilkan performa yang lebih tinggi untuk task tertentu. Namun saat ini, model-model tersebut telah dikalahkan oleh pre-trained language model seperti BERT dan GPT di berbagai task spesifik NLP.

Downstream Task

Downstream task adalah supervised-learning task yang memanfaatkan pre-trained model. Ada beberapa downstream task yang biasanya menggunakan pre-trained language model BERT atau GPT, yaitu sequence classification, question answering, text generation, named entity recognition, summarization, dan translation.

Fine-Tuning dengan BERT

NLP Task yang dapat di fine-tuning

Sebelum belajar bagaimana cara fine-tuning menggunakan BERT, akan lebih baik jika mengetahui NLP task mana yang bisa di fine-tuning menggunakan BERT.

BERT dapat diaplikasikan untuk klasifikasi, named entity recognition (NER), part-of-speech (POS) tagging, language modeling, dan question answering (QA). Perlu diperhatikan bahwa QA yang dimaksud disini adalah task untuk menentukan apakah suatu jawaban sesuai dengan pertanyaan.

Namun, BERT tidak bisa diaplikasikan untuk text generation dan translation. Hal ini dikarenakan BERT dilatih dengan masked language model (MLM), sehingga model hanya dapat memprediksi token yang ditutupi (masked). Untuk memprediksi token yang ditutupi, BERT dilatih dengan self-attention yang menggunakan seluruh bagian dari input (token sebelum dan token setelah masked token). Sehingga akan sangat sulit untuk melatih BERT untuk memprediksi kata selajutnya (casual language model).

HuggingFace pytorch sudah ada implementasi interface untuk fine-tuning NLP task menggunakan BERT. Masing-masing interface dibangun di atas pre-trained BERT model. Perbedaan antara interface yang satu dengan yang lain adalah layer di paling atas dan output dari model yang disesuaikan dengan task. Daftar class dari HuggingFace untuk fine-tuning menggunakan BERT dapat dilihat disini.

Fine-tuning dengan BERT dapat dilakukan hanya dengan menyesuaikan representasi input sebelum dimasukkan ke pre-trained model dan menambahkan satu untrained output layer yang dilatih kembali dengan task spesifik.

Sumber: https://arxiv.org/pdf/1810.04805.pdf

Fine-Tuning dengan OpenAI GPT

Fine-tuning dengan OpenAI GPT dapat dilakukan dengan mengubah input sebelum masuk ke pre-trained model dan menambahkan satu layer linear + softmax.

Sumber: http://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf

Untuk NLP task yang outputnya adalah text generation seperti machine translation, summarization, atau paraphraser, maka tidak perlu ada penambahan layer setelah pre-trained model. Cukup dengan mengubah input sebelum masuk ke pre-trained model sesuai dengan task spesifik dan GPT akan menghasilkan token satu per satu.

Alur NLP task dengan output text generation. Source: https://arxiv.org/pdf/1905.08836.pdf

Sumber:

Acknowledgements

Terima kasih kepada Alham Fikri Aji dan Made Nindyatama karena telah memberikan feedback pada versi sebelumnya dari postingan ini.

--

--