Pretraining & Finetuning
Catatan belajar dari slide W4 (adaptasi Stanford CS224N, Diyi Yang). Setiap bagian punya penjelasan sederhana, contoh, dan kotak Pikir kritis supaya kamu tidak sekadar menghafal.
0. Peta besar: satu cerita utuh
Bayangkan seorang siswa. Sebelum kuliah spesialis, ia membaca ribuan buku umum sampai paham bahasa, fakta, dan cara orang bernalar (pretraining). Lalu ia diberi sedikit latihan khusus untuk satu profesi (finetuning). Hasilnya jauh lebih baik daripada siswa yang langsung belajar profesi dari nol.
Urutan materi: (1) kenapa ini penting, (2) cara memotong kata, (3) dari embedding ke model utuh, (4) tiga jenis arsitektur, (5) model raksasa dan scaling, (6) apa yang dipelajari, termasuk sisi buruknya.
1. Mengapa pretraining? (Motivasi)
Slide menunjukkan grafik: di banyak benchmark (SQuAD, GLUE, SuperGLUE), skor model naik tajam dan menyusul manusia setelah model bahasa pretrained muncul sekitar 2018. Jadi pretraining bukan sekadar trik kecil, tetapi perubahan besar cara membangun sistem NLP.
Tiga ide kunci
- Model harus bisa memproses data besar dan beragam. Semakin luas bacaannya, semakin umum pengetahuannya.
- Jangan pakai data berlabel. Memberi label itu mahal dan lambat (manusia harus menandai satu per satu). Teks internet gratis dan tak terbatas, jadi bisa di-scale.
- Scaling sadar compute. Ukuran model dan jumlah data harus seimbang dengan komputasi yang tersedia (dibahas di bagian 9).
Universitas Gadjah Mada berlokasi di ___, Indonesia tidak butuh label manusia. Jawabannya (Yogyakarta) sudah ada di teks aslinya. Kalimat itu sendiri adalah "soal sekaligus kunci jawaban".2. Subword modeling dan Byte-Pair Encoding (BPE)
Masalah: kosakata tetap
Model lama memakai kosakata tetap (puluhan ribu kata dari data latih). Kata yang tidak dikenal diubah menjadi satu token UNK (unknown). Akibatnya:
| Kata | Jenis | Pada sistem lama |
|---|---|---|
| hat, learn | Kata umum | Punya embedding sendiri |
| taaaaasty | Variasi | UNK (informasi hilang, padahal mirip "tasty") |
| laern | Typo | UNK |
| Transformerify | Kata baru | UNK |
Solusi: pecah kata menjadi potongan (subword)
Kata umum tetap utuh, kata langka dipecah menjadi potongan yang dikenal. Contoh dari slide: taaaaasty → taa## aaa## sty, laern → la## ern##, Transformerify → Transformer## ify. Dalam kasus terburuk kata dipecah menjadi huruf per huruf, jadi tidak pernah ada UNK.
Algoritma BPE (langkah demi langkah)
- Mulai dengan kosakata berisi semua karakter (plus simbol akhir kata).
- Hitung pasangan simbol bertetangga yang paling sering muncul di korpus.
- Gabungkan pasangan itu menjadi simbol baru, tambahkan ke kosakata.
- Ulangi sampai ukuran kosakata yang diinginkan tercapai.
Contoh slide: korpus A B D C A B E C A B. Pasangan (A,B) paling sering, jadi digabung jadi AB. Lalu pasangan (C,AB) paling sering, jadi CAB.
Coba sendiri
Ketik kata-kata (pisahkan dengan spasi), pilih jumlah penggabungan, lalu lihat hasilnya.
## artinya "lanjutan dari potongan sebelumnya".3. Dari word embedding ke pretraining seluruh model
| Dulu (sekitar 2017) | Sekarang | |
|---|---|---|
| Yang dipretrain | Hanya lapisan embedding kata | Hampir semua parameter |
| Konteks | Embedding tanpa konteks; konteks dipelajari LSTM/Transformer saat latih tugas | Konteks sudah dipelajari saat pretraining |
| Parameter acak | Sebagian besar (di atas embedding) | Hampir tidak ada |
Dua masalah pendekatan lama
- Data tugas (misalnya QA) harus cukup besar untuk mengajarkan semua aspek konteks bahasa. Biasanya tidak cukup.
- Sebagian besar parameter mulai dari acak, jadi belajar dari nol.
Prinsip baru: sembunyikan sebagian input, latih model menebaknya. Hasilnya tiga hal: representasi bahasa yang kuat, inisialisasi parameter yang bagus, dan distribusi probabilitas bahasa yang bisa di-sampling (untuk menghasilkan teks).
4. Paradigma Pretrain → Finetune
Language modeling sebagai tugas pretraining
Model memprediksi kata berikutnya: p(wt | w1..t-1). Contoh slide: input "Iroh goes to make tasty tea" → output "goes to make tasty tea END". Datanya sangat melimpah (teks bahasa Inggris di internet).
| Langkah | Data | Tujuan |
|---|---|---|
| 1. Pretrain | Teks sangat banyak, tanpa label | Belajar hal umum tentang bahasa |
| 2. Finetune | Sedikit data berlabel (misalnya ulasan positif/negatif) | Menyesuaikan model ke tugas |
Pretraining itu mahal (BERT: 64 chip TPU selama 4 hari), tetapi finetuning murah dan bisa di satu GPU. Semboyannya: "pretrain sekali, finetune berkali-kali".
Dari mana datanya?
| Model | Data latih |
|---|---|
| BERT | BookCorpus, Wikipedia Inggris |
| GPT-1 | BookCorpus |
| GPT-3 | CommonCrawl, WebText, Wikipedia, 2 database buku |
| GPT-3.5+ | Tidak diungkap |
The Pile (di slide) adalah kumpulan data terbuka: akademik (PubMed, ArXiv), internet (Pile-CC, OpenWebText2), prosa/buku, dialog (subtitle, IRC), dan lain-lain (GitHub).
5. Tiga jenis arsitektur
Arsitektur menentukan cara pretraining dan penggunaan yang cocok. Kuncinya satu pertanyaan: apakah model boleh melihat kata di sebelah kanan (masa depan)?
| Arsitektur | Melihat masa depan? | Pretraining | Contoh | Cocok untuk |
|---|---|---|---|---|
| Encoder | Ya (dua arah) | Masked LM | BERT, RoBERTa, SpanBERT | Klasifikasi, memahami teks |
| Encoder-Decoder | Encoder ya, decoder tidak | Span corruption | T5 | Terjemahan, ringkasan, QA |
| Decoder | Tidak (kiri ke kanan) | Language modeling | GPT | Menghasilkan teks |
6. Encoder: BERT
Masalah: encoder tidak bisa language modeling biasa
Kalau model boleh melihat kata berikutnya, menebak kata berikutnya jadi "mencontek". Solusinya: Masked LM. Ganti sebagian kata dengan [MASK], lalu tebak kata asli. Loss hanya dihitung pada kata yang ditutup.
Rumus slide: h1..T = Encoder(w1..T), yi ~ A·hi + b. Artinya, tiap posisi punya vektor tersembunyi h, lalu satu lapisan linear (A, b) mengubahnya menjadi tebakan kata.
Aturan 15% dan 80/10/10
| Dari 15% token yang dipilih | Perlakuan | Alasan |
|---|---|---|
| 80% | Diganti [MASK] | Tugas utama menebak |
| 10% | Diganti kata acak | Model tidak boleh percaya semua kata di input benar |
| 10% | Dibiarkan asli (tetap ditebak) | Model harus membangun representasi bagus untuk semua kata |
Alasan penting: saat finetuning tidak ada [MASK]. Kalau model hanya pernah melihat [MASK] saat pretraining, ada ketidakcocokan antara pretraining dan penggunaan nyata. Trik 80/10/10 mengurangi masalah itu.
Simulasi masking
Karena kalimat pendek, 15% bisa jadi hanya 1 kata. Klik berkali-kali untuk melihat variasi 80/10/10.
Detail BERT
| BERT-base | BERT-large | |
|---|---|---|
| Layer | 12 | 24 |
| Hidden state | 768 | 1024 |
| Attention head | 12 | 16 |
| Parameter | 110 juta | 340 juta |
Data: BooksCorpus (800 juta kata) dan Wikipedia Inggris (2.500 juta kata). Input berupa dua potongan teks dengan token [CLS] dan [SEP], ditambah embedding segmen dan posisi. BERT juga dilatih Next Sentence Prediction (apakah potongan B mengikuti A atau acak).
Hasil
Setelah finetuning, BERT-large mencapai rata-rata 82,1 pada benchmark GLUE, di atas OpenAI GPT (75,1) dan SOTA sebelumnya (74,0). Tugasnya: QQP (pasangan pertanyaan mirip), QNLI/RTE/MNLI (inferensi bahasa), SST-2 (sentimen), CoLA (apakah kalimat gramatikal), STS-B (kemiripan makna), MRPC (parafrase).
Batasan dan turunan
- Tidak cocok untuk generasi kata per kata (autoregresif). Menutup satu kata menghasilkan banyak kandidat (make/brew/craft), bukan kalimat utuh.
- RoBERTa: latih lebih lama, data lebih banyak (16GB → 160GB), buang NSP. Skor naik tanpa mengubah arsitektur.
- SpanBERT: tutup rentang kata berurutan, tugas lebih sulit dan lebih berguna.
| Model | Data | Steps | SQuAD v1.1/2.0 | MNLI-m | SST-2 |
|---|---|---|---|---|---|
| BERT-large | 13GB | 1M | 90,9/81,8 | 86,6 | 93,7 |
| RoBERTa (Books+Wiki) | 16GB | 100K | 93,6/87,3 | 89,0 | 95,3 |
| RoBERTa + latih lebih lama | 160GB | 500K | 94,6/89,4 | 90,2 | 96,4 |
7. Encoder-Decoder: T5
Idenya menggabungkan kelebihan keduanya: encoder membaca input dua arah, decoder menghasilkan output kiri ke kanan sambil melihat hasil encoder.
Span corruption
Ganti potongan teks dengan placeholder unik (<X>, <Y>), lalu decoder harus menghasilkan potongan yang hilang.
Target: <X> for inviting <Y> last <Z>
Teks asli: Thank you for inviting me to your party last week.
Ini dilakukan saat preprocessing teks, sehingga di sisi decoder tetap terlihat seperti language modeling.
Temuan Raffel dkk.
- Encoder-decoder lebih baik daripada decoder saja (pada tugas mereka).
- Denoising (span corruption) lebih baik daripada language modeling biasa. Contoh GLUE: 83,28 (denoising) vs 79,56 (LM).
- Berbagi parameter encoder-decoder hampir sama bagusnya dengan separuh parameter.
T5 sebagai "pustakawan"
T5 yang difinetune menjawab pertanyaan terbuka ("Kapan Franklin D. Roosevelt lahir?" → "1882") hanya dari pengetahuan dalam parameternya, tanpa mencari dokumen. Semakin besar model, semakin baik: 220 juta → 11 miliar parameter menaikkan TriviaQA test dari 30,6 menjadi 52,5.
8. Decoder: GPT
Dua cara memakai decoder pretrained
| Cara | Mekanisme | Cocok untuk |
|---|---|---|
| Sebagai classifier | Ambil hidden state kata terakhir hT, tambah lapisan linear (A, b) baru yang acak; gradien mengalir ke seluruh jaringan | Sentimen, inferensi |
| Sebagai generator | Pakai kepala bahasa yang sudah pretrained (A, b dari pretraining), finetune p(wt|w1..t-1) | Dialog, ringkasan |
GPT-1 (2018)
- Decoder Transformer 12 layer, 117 juta parameter, hidden 768, feed-forward 3072.
- BPE dengan 40.000 merge; dilatih pada BooksCorpus (lebih dari 7000 buku). Buku berisi teks panjang yang menyambung, bagus untuk dependensi jarak jauh.
- Singkatan "GPT" tidak muncul di makalah aslinya.
Bagaimana format input untuk tugas finetuning?
Contoh Natural Language Inference (premis dan hipotesis diberi label entailment/kontradiksi/netral):
Lapisan linear dipasang pada representasi token
[EXTRACT] → hasil: entailment.Idenya cerdas: tugas apa pun diubah menjadi satu urutan token, jadi arsitektur tidak perlu diubah. GPT-1 mengalahkan banyak model khusus di MNLI, SNLI, SciTail, dan QNLI.
GPT-2
Versi lebih besar (1,5 miliar parameter) dengan data lebih banyak; menghasilkan teks yang relatif meyakinkan (contoh "unicorn di Pegunungan Andes" di slide).
9. GPT-3, in-context learning, dan scaling
In-context learning
Model sangat besar tampak belajar tanpa gradient step, hanya dari contoh di dalam prompt:
thanks => merci
hello => bonjour
mint => menthe
otter => → model menghasilkan loutreContoh di prompt "menentukan tugas", dan model menirunya. Jumlah parameter: T5 terbesar 11 miliar, GPT-3 175 miliar. Ini membuka cara ketiga memakai model: selain sampling dan finetuning, kini ada prompting.
Scaling laws
Grafik di slide berbentuk garis lurus pada skala log: saat compute, ukuran data, atau jumlah parameter dinaikkan, loss uji turun secara teratur. Artinya hasil bisa diprediksi sebelum mengeluarkan biaya besar.
Efisiensi scaling: Chinchilla
Biaya latih kira-kira sebanding dengan parameter × token. Dengan anggaran compute tetap, kita harus memilih: model besar dengan data sedikit, atau model lebih kecil dengan data lebih banyak?
| Model | Parameter | Token latih |
|---|---|---|
| LaMDA | 137 miliar | 168 miliar |
| GPT-3 | 175 miliar | 300 miliar |
| Jurassic | 178 miliar | 300 miliar |
| Gopher | 280 miliar | 300 miliar |
| MT-NLG | 530 miliar | 270 miliar |
| Chinchilla | 70 miliar | 1,4 triliun |
Kesimpulan: Chinchilla yang 4x lebih kecil lebih baik daripada model raksasa. Jadi model besar sebelumnya kekurangan data (undertrained).
10. Apa yang sebenarnya dipelajari pretraining?
Untuk menebak bagian yang disembunyikan, model harus belajar banyak hal. Contoh dari slide:
| Kalimat | Yang dipelajari |
|---|---|
| UGM berlokasi di ___, Indonesia | Pengetahuan fakta (trivia) |
| I put ___ fork down on the table | Sintaks (di sini butuh "the") |
| The woman walked across the street, checking for traffic over ___ shoulder | Koreferensi ("her" merujuk ke "the woman") |
| I went to the ocean to see the fish, turtles, seals, and ___ | Semantik leksikal/topik (hewan laut) |
| Overall, I barely managed to stay awake. The movie was ___ | Sentimen (membosankan) |
| Iroh went into the kitchen... Zuko left the ___ | Penalaran sederhana (lebih sulit) |
| 1, 1, 2, 3, 5, 8, 13, 21, ___ | Aritmetika dasar (tidak benar-benar memahami deret Fibonacci) |
Sisi gelapnya
- Bias: model mempelajari dan bisa memperkuat rasisme, seksisme, dan bias lain dari data.
- Memorisasi materi berhak cipta: memicu gugatan (Getty, Copilot, New York Times, penerbit musik).
- Kebocoran data pribadi: lewat membership inference, penyerang bisa mengetahui atau memancing data latih. Contoh GPT-2 yang memuntahkan alamat, email, dan nomor telepon nyata.
11. Kuis latihan
Klik jawaban. Skor tampil di bawah.
12. Rangkuman cepat
- Pretraining = belajar bahasa dari teks tanpa label, lalu finetuning = adaptasi ke tugas.
- Subword (BPE) menghilangkan masalah UNK dengan memecah kata langka.
- Encoder (BERT): Masked LM, dua arah, bagus untuk memahami. Tidak untuk generasi.
- Encoder-decoder (T5): span corruption; fleksibel untuk teks-ke-teks.
- Decoder (GPT): language modeling; bagus untuk generasi; model terbesar semuanya decoder.
- Skala + in-context learning memungkinkan prompting; Chinchilla mengingatkan pentingnya data.
- Pretraining juga membawa bias, hak cipta, dan risiko privasi.
Tips: jelaskan kembali tiap bagian dengan kata-katamu sendiri tanpa melihat catatan ini. Jika bisa, kamu sudah paham.