- Model bahasa bermasking seperti BERT dan RoBERTa juga dapat ditafsirkan sebagai konsep model difusi teks.
- Berbeda dari model autoregressive (misalnya GPT), dibuktikan kemungkinan penerapan generasi berbasis blok dan metode pemulihan bertahap.
- Dengan melatih sambil menyesuaikan tingkat masking per tahap, eksperimen menunjukkan RoBERTa juga mampu menghasilkan teks yang natural.
- Tanpa mengubah struktur yang ada, kemampuan generatif tetap dapat diperoleh hanya dengan menyesuaikan tujuan pelatihan.
- Dibandingkan GPT-2, model difusi berbasis RoBERTa juga menghasilkan hasil teks yang cukup konsisten.
Ikhtisar
Model Gemini Diffusion yang dipublikasikan oleh Google DeepMind berbeda dari keluarga GPT, karena ini adalah model bahasa berbasis difusi yang menghasilkan teks secara blok sekaligus. Pendekatan ini memproduksi teks dengan memurnikan noise acak secara bertahap. Setelah meninjau makalah terkait (Large Language Diffusion Models), ditemukan bahwa difusi bahasa diskrit memang merupakan generalisasi dari masked language modeling (MLM). Dengan kata lain, tulisan ini secara eksperimental mengeksplorasi apakah model-model keluarga BERT juga dapat menghasilkan teks menggunakan gagasan tersebut.
Catatan: Paper DiffusionBERT selanjutnya memeriksa secara lebih ketat ide yang serupa.
Sejarah Singkat Transformer
Transformer yang pertama kali diusulkan pada 2017 menggunakan struktur encoder-decoder. Pada 2018, muncul pemisahan antara encoder (BERT: bi-directional, berfokus pada pemulihan bermasking) dan decoder (GPT: autoregressive, berfokus prediksi sekuensial) yang akhirnya membentuk dua keluarga model khusus.
- Encoder murni (keluarga BERT)
- Menerima seluruh konteks sebagai input, menyembunyikan sebagian bagian dengan
<MASK>, lalu memulihkannya dari token lain - Kuat pada representasi kalimat, klasifikasi, dan seterusnya
- Menerima seluruh konteks sebagai input, menyembunyikan sebagian bagian dengan
- Decoder murni (keluarga GPT)
- Memprediksi token berikutnya dari urutan yang diberikan
- Menonjol pada tugas-tugas generasi, ringkasan, dan terjemahan
BERT langsung digunakan untuk klasifikasi dan sejenisnya, tetapi kemudian keluarga GPT menguat dengan peningkatan kemampuan generatifnya sehingga memperoleh lebih banyak kasus penggunaan.
Model Difusi Bahasa Diskrit
Model difusi semula menjadi populer pada generasi gambar.
Pada kasus gambar:
- Proses maju: Menambahkan Gaussian noise secara bertahap ke gambar bersih hingga mencapai keadaan noise murni
- Proses balik: Merevisi kembali data asli melalui denoising bertahap menggunakan model deep learning
Saat diterapkan pada teks, pendekatan paling sederhana adalah proses noise berbasis masking.
- Proses maju (masking)
- Pada t=0 dimulai dari teks asli; semakin tinggi langkah, semakin banyak token yang diganti acak dengan
<MASK> - Pada langkah akhir seluruh token terganti
<MASK>
- Pada t=0 dimulai dari teks asli; semakin tinggi langkah, semakin banyak token yang diganti acak dengan
- Proses balik (denoising)
- Transformer encoder dilatih untuk memulihkan token asli berdasarkan pengaturan masking yang diberikan
- Saat rasio masking rendah, pemulihan lebih mudah; semakin tinggi rasio, semakin sulit
- Dengan mengulang dari rasio masking tinggi ke rendah, urutan penuh dapat dihasilkan
Dalam kerangka difusi ini, model dilatih dengan menjumlahkan kerugian denoising pada setiap tahap rasio masking. Tujuan pemulihan masking milik BERT pada dasarnya merupakan bagian dari difusi teks. Dengan menggabungkan jadwal rasio masking dan denoising berulang, tujuan BERT dapat diperluas menjadi prosedur generasi bahasa alami.
Eksperimen RoBERTa Diffusion
RoBERTa diperkenalkan pada 2019 dengan karakteristik perluasan hiperparameter dan data dibanding BERT, serta tujuan pelatihan yang lebih sederhana (MLM Only).
Pada eksperimen ini, digunakan bobot dasar RoBERTa, tokenizer, dan Trainer melalui pustaka HuggingFace transformers dan datasets.
Fine-tuning pada dataset WikiText dilakukan dengan alur berikut:
- Dari jadwal difusi 10 langkah (mask_probs: 1.0~0.1), satu dipilih secara acak untuk setiap batch agar proses masking terjadi
- Dengan
diffusion_collatorkustom, setelah menentukan probabilitas masking,<MASK>diterapkan secara probabilistik pada setiap token - Untuk menjaga konteks prompt, 16 token pertama selalu dipertahankan
Data masking (collator kustom):
- Setelah padding setiap kumpulan token, probabilitas masking dipilih secara acak
- Terapkan
<MASK>secara probabilistik pada token selain 16 token pertama - Mengembalikan data termask dan label kebenaran
Generasi (inference):
- Input berupa urutan sepanjang 256 token: 16 token pertama sebagai prompt, sisanya
<MASK> - Pada setiap langkah, sampling token yang diprediksi model untuk mengisinya, lalu remasking beberapa token dengan persentase tertentu
- Ulangi dengan menurunkan rasio masking secara bertahap hingga akhirnya seluruh token dipulihkan
Contoh hasil generasi:
- Dengan prompt dan teks lanjutan yang natural, model menghasilkan teks yang cukup konsisten
- Beberapa keanehan disebabkan oleh format pra-pemrosesan dataset WikiText (misalnya bentuk tanda hubung
@-@)
Perbandingan dengan GPT-2
- GPT-2 sedikit lebih cepat dan konsistensinya lebih tinggi, namun RoBERTa Diffusion juga menunjukkan performa yang lebih baik dari yang diharapkan (terlihat potensi perbaikan bertahap yang tinggi)
- Pendekatan baru seperti AR-Diffusion dan Skip-Step Diffusion serta optimasi dapat meningkatkan kualitas dan kecepatan
Kesimpulan
- Model bahasa bermasking yang didesain seperti RoBERTa, jika dilatih sambil menyesuaikan rasio masking secara bertahap, dapat menjadi mesin generasi bahasa alami
- Hanya dengan skema pelatihan yang secara bertahap mendistorsi dan memulihkan teks menggunakan token
<MASK>, terbukti dimungkinkan untuk mengonversinya menjadi model yang sepenuhnya generatif - Tanpa mengubah struktur itu sendiri, kemampuan generatif dapat diperoleh dengan memodifikasi tujuan pelatihan saja
- Pada akhirnya, model keluarga BERT juga pada intinya merupakan satu model difusi teks
1 komentar
Opini Hacker News
Saat BERT pertama kali muncul, semua orang mencoba menghasilkan teks dengannya, tetapi umumnya tidak berjalan dengan baik; makalah rujukannya ada di sini. Savinov dkk. dari DeepMind menunjukkan bahwa jika hanya menerapkan dua langkah saat pelatihan dan mengacak probabilitas masking, pendekatan ini bisa bekerja cukup baik
Setelah mencoba berbagai cara minggu lalu agar BERT bisa digunakan untuk percakapan, saya baru mengetahui hal ini lewat tulisan ini. Saya masih punya beberapa ide lain yang ingin dicoba, jadi saya masih senang bereksperimen blog terkait
Saya termasuk dalam kelompok besar yang menganggap BERT hanya bisa dipakai sebagai encoder murni, bukan untuk generasi teks, misalnya untuk mengukur kemiripan semantik dan klasifikasi
Sepengetahuan saya, hubungan ini pertama kali ditunjukkan dalam makalah ini pada 2021 (halaman 5). Mereka mencoba pendekatan difusi teks yang mencemari kata dengan kata lain yang mirip secara semantik, tetapi ternyata lebih mudah membuat model menebak kata yang di-mask. Sejarah pendekatan ini sebenarnya mundur lebih jauh hingga makalah ini, yang membuat MLM generatif tanpa menjelaskannya dengan matematika difusi
Itu bahkan lebih lama lagi. Pada 2014, Li Yao dkk. dalam makalah ini menunjukkan kesetaraan antara model autoregresif (prediksi token berikutnya) dan generative stochastic networks (denoising autoencoder, pendahulu model difusi). Mereka berargumen bahwa sampling paralel dapat mengaproksimasi sampling sekuensial dengan baik, dan dalam riset saya pada 2016, Counterpoint by Convolution, tautan, saya juga menerapkan metode ini dan menjelaskan bahwa performanya justru lebih baik. Sayangnya, karena itu makalah aplikasi, ia tidak banyak mendapat sitasi dari dunia difusi. Saya rasa akarnya mungkin bahkan lebih tua lagi
Saya juga ingat makalah itu sebagai referensi pertama yang membahasnya secara formal (setelah melihat BERT, para peneliti NLP tampaknya akan langsung terpikir konsep difusi). Kumpulan referensi awal difusi teks yang saya susun 3 tahun lalu ada di sini
Sebagai catatan, makalah terkait juga bisa dilihat di sini
Pendekatan berbasis difusi terasa lebih mirip dengan apa yang terjadi di otak hewan. Saat berbicara, saya merasa saya tidak membentuk kata satu per satu berdasarkan kata sebelumnya, melainkan lebih dulu punya gagasan umum yang samar di kepala lalu menyusunnya menjadi bahasa
LLM autoregresif sebenarnya juga tidak sesederhana hanya memprediksi kata berikutnya. Memang token keluar satu per satu dalam satu forward pass, tetapi di ruang laten tampak jelas adanya perencanaan jangka panjang dan penalaran. Bahkan saat kita berbicara pun, kita membentuk gambaran umum di kepala lalu mengucapkannya secara berurutan, jadi belum tentu pendekatan difusi lebih mirip dengan kita
Secara pribadi, saya suka tulisan blog yang menjelaskan difusi sebagai semacam "autoregresi spektral". Difusi cenderung memprediksi fitur frekuensi rendah lebih dulu dan fitur frekuensi tinggi belakangan
Setiap kali saya mengedit pesan di Slack sekitar 5 kali, saya sering merasa diri saya adalah model difusi
Saat berbicara atau menulis, kita memang benar-benar mengeluarkan kata secara berurutan. Namun sebelum memulai kalimat, kita biasanya sudah memikirkan garis besar maksudnya di kepala. Itu mirip dengan LLM yang lebih dulu merencanakan arah umum di ruang laten sebelum mengeluarkan token
Riset interpretabilitas juga menunjukkan bahwa LLM autoregresif memang membuat rencana internal terlebih dahulu tentang apa yang akan dikatakannya
Secara pribadi, rasanya lebih alami jika tidak hanya mengizinkan masking dan pengisian, tetapi juga pengeditan gaya Levenshtein berupa penyisipan/penghapusan. Misalnya, jika pada tahap akhir ingin mengganti sebuah kata dengan sinonim yang lebih panjang, dalam struktur difusi seperti ini hal itu tidak mudah karena tidak bisa menggeser ke kanan
Eksperimen sederhana seperti ini menarik karena bisa cepat memahami prinsipnya. Hal yang agak disayangkan dari model difuser teks adalah token harus diperlakukan sebagai nilai diskret, bukan kontinu. Pada gambar, piksel bersifat kontinu sehingga noise bisa ditambahkan secara alami, tetapi token teks tidak demikian. Biasanya akhirnya ditangani dengan penggantian total, meskipun ada berbagai pendekatan seperti menambahkan noise di ruang embedding atau langsung mempelajari embedding, semuanya tetap lebih rumit daripada difusi gambar
Saya lebih menaruh harapan pada pendekatan seperti makalah ini. Ia menggabungkan difusi laten kontinu dengan generasi teks berbasis transformer autoregresif. Autoencoder dan transformer bisa dilatih secara bersamaan (atau terpisah)
Saat pertama kali melihat model difusi teks, saya berpikir, “Bukankah ini cuma MLM?” Hal yang saya perhatikan adalah MaskGIT. Suatu metode layak disebut difusi jika model dilatih untuk mengganti token yang salah menjadi token yang benar, karena kekuatan difusi kontinu adalah ketahanannya terhadap noise. Namun, ide menghasilkan token yang salah itu sendiri tidak mudah diwujudkan, jadi sepertinya belum banyak dicoba
Saya pernah bereksperimen dengan MLM pada level byte UTF8 sambil mencoba model terjemahan non-autoregresif. Saya memakai curriculum learning dan skema kontaminasi acak bertahap. Jika tujuannya sekadar menambahkan noise, cukup ganti indeks acak dengan nilai byte acak. Misalnya masukkan pola berikut
Seluruh sekuens target dievaluasi berulang kali agar saat tingkat kesulitan meningkat, tidak muncul perubahan diskontinu pada domain pelatihan. Pada akhirnya, saya jadi tidak terlalu peduli soal istilah atau kategorinya; yang penting bukan “apakah ini difusi”, melainkan “apakah ini benar-benar bekerja”
Saya juga penasaran bagaimana perbandingannya dengan electra
Saya ingin bereksperimen apakah dengan fine-tuning model inline code completion bisa didapat performa mirip cursor (meski kenyataannya mungkin sulit, tapi terdengar seru). Namun, belum ada model difusi terbuka yang benar-benar bisa dipakai sebagai basis, jadi saya menantikannya
Hal yang menarik dari model difusi gambar adalah ia bisa membuat gambar dari noise acak. Tapi saya penasaran kenapa model difusi teks memulai dari token kosong yang semuanya di-mask, bukan dari token acak
Itu tergantung tugas yang diinginkan. Untuk pelengkapan teks sederhana, kalimat input bisa diberikan tanpa masking, lalu model mengisi token-token mask setelahnya. Jika yang diinginkan adalah pengeditan kode dan sejenisnya, hanya bagian yang ingin diedit yang di-mask lalu diisi secara bertahap. Kekuatan model difusi teks adalah kemampuannya melakukan pengeditan nyata seperti pengeditan kode (LLM autoregresif memerlukan sistem terpisah yang mengedit lewat instruksi). Jika model dilatih dengan head pengeditan kode yang sangat sesuai, banyak pekerjaan pemrograman bisa menjadi lebih cepat dan efisien. Ke depan, fitur seperti ini tampaknya akan terintegrasi secara alami ke tempat seperti GPT Codex
Tidak semua orang hanya memakai pendekatan yang dimulai dari token kosong. Ada juga berbagai percobaan yang dimulai dari token acak, sebagian mask, atau vektor embedding