ENSIKLOPEDIA
Transformator (pembelajaran mendalam)

| Bagian dari seri |
| Pembelajaran mesin dan penggalian data |
|---|
|
Diagnostik model |
Dalam pembelajaran mendalam, transformator adalah keluarga arsitektur jaringan saraf tiruan yang didasarkan pada mekanisme perhatian multi-kepala, di mana teks diubah menjadi representasi numerik yang disebut token, dan setiap token diubah menjadi vektor melalui pencarian dari tabel penyematan kata.[1] Pada setiap lapisan, setiap token kemudian dikontekstualisasikan dalam lingkup jendela konteks dengan token lain (yang tidak ditutupi) melalui mekanisme perhatian multi-kepala paralel, memungkinkan sinyal untuk token kunci diperkuat dan token yang kurang penting dikurangi. Karena perhatian diri sendiri saja bersifat invarian terhadap permutasi, transformer menyuntikkan informasi posisi, biasanya melalui pengkodean posisi atau penyematan posisi yang dipelajari, sehingga urutan token dapat memengaruhi output.[2]
Transformer memiliki keunggulan karena tidak memiliki unit berulang, sehingga membutuhkan waktu pelatihan yang lebih singkat daripada arsitektur saraf berulang (RNN) sebelumnya seperti memori jangka pendek panjang (LSTM).[3] Variasi selanjutnya telah banyak diadopsi untuk melatih model bahasa besar (LLM) pada dataset (bahasa) besar.[4] Desain transformer modern umumnya dikelompokkan menjadi varian hanya-enkoder, hanya-dekoder, dan encoder-decoder, tergantung pada apakah desain tersebut dioptimalkan untuk pembelajaran representasi, pembangkitan autoregresif, atau tugas sequence-to-sequence bersyarat.[5]
Versi asli arsitektur transformer diusulkan dalam makalah tahun 2017 berjudul "Attention Is All You Need" oleh para peneliti di Google.[1] Pendahulu transformer dikembangkan sebagai peningkatan dari arsitektur sebelumnya untuk penerjemahan mesin,[6][7] tetapi telah menemukan banyak aplikasi sejak saat itu. Transformer digunakan dalam pemrosesan bahasa alami skala besar, visi komputer (transformer visi), pembelajaran penguatan,[8][9] audio,[10] pembelajaran multimodal, robotika,[11] dan bermain catur.[12] Hal ini juga telah mengarah pada pengembangan sistem pra-terlatih, seperti transformer pra-terlatih generatif (GPT)[13] dan BERT[14] (representasi encoder dua arah dari transformer).
Pelatihan
Metode untuk menstabilkan pelatihan
Arsitektur transformer biasa mengalami kesulitan dalam konvergensi. Dalam makalah aslinya,[1] para penulis merekomendasikan penggunaan pemanasan laju pembelajaran. Artinya, laju pembelajaran harus meningkat secara linier dari 0 hingga nilai maksimal untuk bagian pertama pelatihan (biasanya direkomendasikan sebesar 2% dari total jumlah langkah pelatihan), sebelum menurun lagi.
Sebuah makalah tahun 2020 menemukan bahwa penggunaan normalisasi lapisan sebelum (bukan setelah) lapisan perhatian multihead dan feedforward menstabilkan pelatihan, tanpa memerlukan pemanasan laju pembelajaran.[15] Ini adalah "Pre-LN Transformer" dan lebih umum digunakan, dibandingkan dengan "Post-LN Transformer" asli.
Pelatihan Awal-Penyempurnaan
Transformer biasanya pertama kali dilatih awal dengan pembelajaran mandiri pada dataset generik besar, diikuti oleh penyempurnaan terawasi pada dataset kecil khusus tugas. Dataset pelatihan awal biasanya berupa korpus besar yang tidak berlabel, seperti The Pile. Tugas untuk pelatihan awal dan penyempurnaan umumnya meliputi:
- pemodelan bahasa[14]
- prediksi kalimat berikutnya[14]
- menjawab pertanyaan[4]
- pemahaman bacaan
- analisis sentimen[1]
- parafrase[1]
Laporan transformer T5 mendokumentasikan sejumlah besar tugas pelatihan awal bahasa alami. Beberapa contohnya adalah:
- Memulihkan atau memperbaiki teks yang tidak lengkap atau rusak. Misalnya, input, "Terima kasih ~~ aku ke pestamu ~~ pekan", mungkin menghasilkan output, "Terima kasih telah mengundang saya ke pesta anda minggu lalu".
- terjemahan antar bahasa alami (terjemahan mesin)
- Menilai keberterimaan pragmatis bahasa alami. Misalnya, kalimat berikut mungkin dinilai "tidak dapat diterima".,[16] Karena meskipun secara sintaksis terbentuk dengan baik, kalimat tersebut tidak lazim digunakan dalam percakapan sehari-hari: "Lintasan balapnya berjalan dengan baik."
Tugas
Secara umum, terdapat 3 kelas tugas pemodelan bahasa: "masked",[17] "autoregressive",[18] dan "prefixLM".[19] Kelas-kelas ini independen dari arsitektur pemodelan spesifik seperti transformer, tetapi sering dibahas dalam konteks transformer.
Dalam tugas masked,[17] satu atau lebih token disembunyikan, dan model akan menghasilkan distribusi probabilitas yang memprediksi token yang disembunyikan berdasarkan konteksnya. Fungsi kerugian untuk tugas ini biasanya merupakan jumlah log-perplexity untuk token yang disembunyikan:
dan model tersebut dilatih untuk meminimalkan fungsi kerugian ini. Seri model BERT dilatih untuk prediksi token bertopeng dan tugas lainnya.
Dalam tugas autoregresif,[18] seluruh urutan awalnya ditutupi (masked), dan model menghasilkan distribusi probabilitas untuk token pertama. Kemudian token pertama diungkapkan dan model memprediksi token kedua, dan seterusnya. Fungsi kerugian (loss function) untuk tugas ini biasanya tetap sama. Seri model GPT dilatih dengan tugas autoregresif.
Dalam tugas prefixLM,[19] urutan dibagi menjadi dua bagian. Bagian pertama disajikan sebagai konteks, dan model memprediksi token pertama dari bagian kedua. Kemudian token tersebut akan diungkapkan, dan model memprediksi token kedua, dan seterusnya. Fungsi kerugian untuk tugas ini biasanya tetap sama. Seri model T5 dilatih dengan tugas prefixLM.
Perhatikan bahwa "masked" seperti dalam "masked language modelling" bukanlah "masked" seperti dalam "masked attention", dan "prefixLM" seperti dalam "prefix language modeling" bukanlah "prefixLM" seperti dalam "prefix language model".
Arsitektur
Semua transformer memiliki komponen utama yang sama:
- Tokenizer, yang mengubah teks menjadi token.
- Lapisan penyematan, yang mengubah token dan posisi token menjadi representasi vektor.
- Lapisan transformer, yang melakukan transformasi berulang pada representasi vektor, mengekstrak informasi linguistik yang semakin banyak. Ini terdiri dari lapisan perhatian dan umpan maju yang bergantian. Ada dua jenis utama lapisan transformer: lapisan encoder dan lapisan decoder, dengan varian lebih lanjut.
- Lapisan pelepasan penyematan, yang mengubah representasi vektor akhir kembali menjadi distribusi probabilitas atas token.
Deskripsi berikut mengikuti persis transformer seperti yang dijelaskan dalam makalah asli. Ada varian, yang dijelaskan di bagian bagian berikut.
Sesuai konvensi, kita menulis semua vektor sebagai vektor baris. Misalnya, memasukkan vektor melalui lapisan linier berarti mengalikannya dengan matriks bobot di sebelah kanan, seperti .
Tokenisasi
Karena arsitektur transformer secara bawaan terdiri dari operasi pada angka (perkalian matriks, perkalian titik, fungsi aktivasi) dan bukan pada teks, maka pertama-tama harus ada pemetaan dari teks masukan apa pun ke representasi numerik. Ini terjadi dalam tiga langkah.
Pertama, teks masukan diproses oleh "preprocessor", yang melakukan transformasi tekstual dan membagi teks menjadi segmen-segmen kasar yang disebut "pretoken". Yang terakhir disebut sebagai "pretokenisasi". Kedua, setiap pretoken disegmentasikan lebih lanjut menjadi "token" oleh "tokenizer" yang hanya mengharapkan untuk melihat pretoken yang dihasilkan oleh preprocessor-nya. Setiap token yang dihasilkannya adalah string yang terdiri dari satu atau lebih karakter yang termasuk dalam himpunan string terbatas yang disebut "kosakata" . Ketiga, karena kosakata terbatas dan diketahui sebelumnya, setiap token dapat diberi pengidentifikasi bilangan bulat, dan pemetaan ini diterapkan pada urutan token untuk merepresentasikan teks masukan apa pun sebagai urutan numerik. Karena pemetaan ini bersifat bijektif, sisi keluaran dapat menghasilkan urutan pengidentifikasi bilangan bulat yang kemudian dapat diubah kembali menjadi token. Setelah membatalkan beberapa pra-pemrosesan, hasilnya kembali berupa teks yang dapat dibaca.
Melatih tokenizer (kadang-kadang disebut sebagai vokabulisasi) berarti menemukan kosakata yang sesuai , tetapi juga mempelajari cara menggunakannya, karena setiap string
dengan panjang
memiliki
segmentasi hipotetis, beberapa di antaranya berisi segmen yang tidak ada dalam kosakata. Parameter terpenting selama vokabulisasi adalah ukuran kosakata
: ketika ukurannya kecil, kosakata yang dipelajari umumnya terdiri dari karakter dan string yang lebih kecil, dan kata-kata akan disegmentasikan menjadi banyak token. Pada ukuran yang lebih besar, menjadi lebih terjangkau untuk mendedikasikan token untuk kata-kata lengkap, meskipun tergantung pada preprocessor dan tokenizer, tidak selalu benar bahwa kosakata besar akan selalu menggunakan token terbesar yang tersedia untuk mensegmentasi sebuah kata.
Karena token tidak selalu berupa kata lengkap, token juga dapat disebut sebagai "subkata" dan algoritma tokenisasi dapat disebut sebagai "tokenizer subkata". Hal ini juga untuk membedakan sistem ini dari terminologi tradisional yang digunakan dalam sistem pencarian informasi dan pemrosesan bahasa alami yang lebih lama, di mana "tokenisasi" digunakan untuk menunjukkan apa yang saat ini disebut "pretokenisasi" (secara kasar: pemisahan menjadi kata-kata). Dalam tokenizer yang menghasilkan token yang "bukan" bagian dari kosakata, token khusus yang memang termasuk dalam kosakata digunakan sebagai pengganti generik, ditulis sebagai "[UNK]" untuk "tidak diketahui". Pada prinsipnya, string apa pun dapat disembunyikan oleh [UNK] tersebut. Memang, dalam pencarian informasi, pretokenizer itu sendiri digunakan sebagai tokenizer (dan juga disebut "tokenizer") dengan kosakata tingkat kata yang berisi [UNK].
Algoritma tokenisasi subkata yang umum digunakan adalah byte pair encoding (BPE) dan model bahasa unigram (ULM), yang masing-masing mencakup algoritma kosakata dan algoritma segmentasi khusus. Terdapat juga beberapa algoritma segmentasi yang tidak memerlukan pembelajaran dan dapat diterapkan berdasarkan kosakata (yang dihasilkan oleh BPE atau ULM, misalnya), seperti mengenali token secara serakah dalam pretoken dengan bergerak dari kiri ke kanan. Implementasi perangkat lunak tokenisasi subkata yang terkenal adalah paket Python tokenizers dari Hugging Face yang diimplementasikan dalam Rust, dan paket Python sentencepiece yang diimplementasikan dalam C++. Paket yang terakhir dinamai demikian karena salah satu opsi konfigurasinya memungkinkan untuk menonaktifkan pretokenizer bawaan, sehingga secara efektif menjadikan seluruh kalimat sebagai pretoken dan dengan demikian tokenizer melihat seluruh kalimat, bukan kata-kata individual.
Penyematan
Setiap pengidentifikasi token bilangan bulat dikonversi menjadi vektor penyematan melalui tabel pencarian. Dengan kata lain, ia mengalikan representasi one-hot dari pengidentifikasi token dengan matriks penyematan . Misalnya, jika pengidentifikasi token masukan adalah
, maka representasi one-hot-nya adalah
, dan vektor penyematannya adalah
. Vektor penyematan token ditambahkan ke vektor pengkodean posisi masing-masing (lihat di bawah), menghasilkan urutan vektor masukan.
Dimensi vektor penyematan disebut ukuran tersembunyi atau ukuran penyematan dan ditulis sebagai .[20] Ukuran ini ditulis sebagai
dalam makalah transformer asli.[1]
Un-embedding
Lapisan un-embedding hampir merupakan kebalikan dari lapisan embedding. Jika lapisan embedding mengubah pengidentifikasi token menjadi vektor, lapisan un-embedding mengubah vektor menjadi distribusi probabilitas atas token.

Lapisan un-embedding adalah lapisan linear-softmax:Matriks memiliki bentuk
. Beberapa arsitektur menggunakan transpose dari matriks embedding
sebagai matriks un-embedding
untuk menghindari kebutuhan dua kali lipat jumlah parameter terkait embedding dan untuk menghindari divergensi selama pelatihan. Praktik ini disebut weight tying.[21]
Pengkodean posisi

Pengkodean posisional adalah representasi vektor berukuran tetap dari posisi relatif token dalam suatu urutan: ini memberikan informasi kepada model transformer tentang "di mana" kata-kata tersebut berada dalam urutan masukan. Hal ini menimbulkan bias induktif terhadap urutan masukan, sehingga, misalnya, urutan masukan "man bites dog" diproses berbeda dari "dog bites man".
Pengkodean posisi didefinisikan sebagai fungsi tipe , di mana
adalah bilangan bulat genap positif. Pengkodean posisi lengkap yang didefinisikan dalam makalah asli[1] adalah:
di mana
.
Di sini, adalah parameter bebas yang seharusnya jauh lebih besar daripada
terbesar yang akan dimasukkan ke dalam fungsi pengkodean posisi. Makalah aslinya menggunakan
.
Fungsi ini dalam bentuk yang lebih sederhana ketika ditulis sebagai fungsi kompleks tipe di mana
.
Alasan utama penggunaan fungsi pengkodean posisi ini adalah karena dengan menggunakannya, pergeseran merupakan transformasi linier:di mana
adalah jarak yang ingin digeser. Hal ini memungkinkan transformator untuk mengambil posisi yang dikodekan, dan menemukan pengkodean posisi n langkah ke depan atau n langkah ke belakang, dengan perkalian matriks.
Dengan mengambil penjumlahan linier, setiap konvolusi juga dapat diimplementasikan sebagai transformasi linier:untuk konstanta apa pun
. Ini memungkinkan transformer untuk mengambil posisi terenkode apa pun dan menemukan penjumlahan linier dari lokasi terenkode tetangganya. Penjumlahan posisi terenkode ini, ketika dimasukkan ke dalam mekanisme perhatian, akan menciptakan bobot perhatian pada tetangganya, seperti yang terjadi dalam jaringan saraf konvolusional model bahasa. Dalam kata-kata penulis, "kami berhipotesis bahwa ini akan memungkinkan model untuk dengan mudah belajar memperhatikan berdasarkan posisi relatif."
Dalam implementasi umum, semua operasi dilakukan pada bilangan riil, bukan bilangan kompleks, tetapi karena perkalian kompleks dapat diimplementasikan sebagai perkalian matriks riil 2x2, ini hanyalah perbedaan notasi.
Encoder–decoder (gambaran umum)


Seperti model seq2seq sebelumnya, model transformer asli menggunakan arsitektur encoder–decoder. Encoder terdiri dari lapisan encoding yang memproses semua token input secara bersamaan satu lapisan demi satu, sedangkan decoder terdiri dari lapisan decoding yang secara iteratif memproses output encoder dan token output decoder sejauh ini.
Tujuan dari setiap lapisan encoder adalah untuk membuat representasi kontekstual dari token, di mana setiap representasi sesuai dengan token yang "mencampur" informasi dari token input lainnya melalui mekanisme self-attention. Setiap lapisan decoder berisi dua sublapisan perhatian: (1) cross-attention untuk menggabungkan output encoder (representasi token input kontekstual), dan (2) self-attention untuk "mencampur" informasi di antara token input ke decoder (yaitu token yang dihasilkan sejauh ini selama waktu inferensi).[22][23]
Baik lapisan encoder maupun decoder memiliki jaringan saraf feed-forward untuk pemrosesan tambahan outputnya dan berisi koneksi residual serta langkah normalisasi lapisan.[23] Lapisan feed-forward ini berisi sebagian besar parameter dalam model transformer.
Jaringan feedforward

Modul jaringan feedforward (FFN) dalam transformer adalah jaringan saraf feedforward 2 lapis: di mana
dan
adalah matriks bobot dan
dan
adalah vektor bias, dan
adalah fungsi aktivasinya. Transformator asli menggunakan aktivasi ReLU.
Jumlah neuron di lapisan tengah disebut ukuran menengah (GPT),[24] ukuran filter (BERT),[20] atau ukuran feedforward (BERT).[20] Biasanya lebih besar dari ukuran embedding. Misalnya, baik dalam seri GPT-2 maupun seri BERT, ukuran menengah suatu model adalah 4 kali ukuran embedding-nya: .
Perhatian produk titik yang diskalakan
Perhatian


Mekanisme perhatian yang digunakan dalam arsitektur transformer adalah unit produk-titik perhatian yang diskalakan. Untuk setiap unit, model transformer mempelajari tiga matriks bobot: bobot kueri , bobot kunci
, dan bobot nilai
.
Modul ini menerima tiga urutan, yaitu urutan kueri, urutan kunci, dan urutan nilai. Urutan kueri adalah urutan dengan panjang , dan setiap entri adalah vektor dengan dimensi
. Demikian pula untuk urutan kunci dan nilai.
Untuk setiap vektor dalam urutan kueri, vektor tersebut dikalikan dengan matriks
untuk menghasilkan vektor kueri
. Matriks dari semua vektor kueri adalah matriks kueri:
Demikian pula, kita membangun matriks kunci
dan matriks nilai
.
Biasanya, semua adalah matriks persegi, artinya
, dan seterusnya.
Bobot perhatian dihitung menggunakan vektor kueri dan kunci: bobot perhatian dari token
ke token
adalah hasil perkalian titik antara
dan
. Bobot perhatian dibagi dengan akar kuadrat dari dimensi vektor kunci,
, yang menstabilkan gradien selama pelatihan, dan dilewatkan melalui fungsi Softmax yang menormalkan bobot. Fakta bahwa
dan
adalah matriks yang berbeda memungkinkan perhatian menjadi tidak simetris: jika token
memperhatikan token
(yaitu
besar), ini tidak selalu berarti bahwa token
akan memperhatikan token
(yaitu
bisa kecil). Keluaran dari unit perhatian untuk token
adalah jumlah tertimbang dari vektor nilai semua token, yang diberi bobot oleh
, yaitu perhatian dari token
ke setiap token.
Perhitungan perhatian untuk semua token dapat diekspresikan sebagai satu perhitungan matriks besar menggunakan fungsi softmax, yang berguna untuk pelatihan karena optimasi operasi matriks komputasi yang dengan cepat menghitung operasi matriks. Matriks-matriks tersebut ,
dan
didefinisikan sebagai matriks di mana baris
adalah vektor
,
, dan
secara berturut-turut. Kemudian kita dapat merepresentasikan perhatian sebagai
di mana softmax diterapkan pada setiap baris matriks.
Jumlah dimensi dalam vektor kueri adalah ukuran kueri dan demikian pula untuk ukuran kunci
dan ukuran nilai
. Dimensi keluaran dari attention head adalah dimensi kepala
. Mekanisme perhatian membutuhkan tiga persamaan berikut untuk dipenuhi:
tetapi selain itu tidak dibatasi.
Jika attention head digunakan dengan cara self-attention, maka . Jika attention head digunakan dengan cara cross-attention, maka biasanya
. Secara teoritis, ketiganya bisa berbeda, tetapi hal itu jarang terjadi dalam praktiknya.
Perhatian multihead


Satu set matriks disebut attention head, dan setiap lapisan dalam model transformer memiliki beberapa attention head. Meskipun setiap attention head memperhatikan token yang relevan dengan setiap token, beberapa attention head memungkinkan model untuk melakukan ini untuk definisi "relevansi" yang berbeda. Secara khusus, matriks proyeksi query dan key,
dan
, yang terlibat dalam perhitungan skor perhatian, mendefinisikan "relevansi". Sementara itu, matriks proyeksi nilai
, dikombinasikan dengan bagian dari matriks proyeksi output
, menentukan bagaimana token yang diperhatikan memengaruhi informasi apa yang diteruskan ke lapisan berikutnya dan pada akhirnya logit output. Selain itu, cakupan perhatian, atau rentang hubungan token yang ditangkap oleh setiap attention head, dapat meluas saat token melewati lapisan-lapisan berikutnya. Hal ini memungkinkan model untuk menangkap ketergantungan yang lebih kompleks dan jangka panjang di lapisan yang lebih dalam. Banyak attention head transformer mengkodekan relasi relevansi yang bermakna bagi manusia. Misalnya, beberapa attention head dapat lebih fokus pada kata berikutnya, sementara yang lain terutama fokus dari kata kerja ke objek langsungnya.[25] Perhitungan untuk setiap attention head dapat dilakukan secara paralel, yang memungkinkan pemrosesan yang cepat. Output untuk lapisan attention digabungkan untuk diteruskan ke lapisan feedforward neural network.
Secara konkret, misalkan beberapa attention head diindeks oleh , maka kita memiliki
di mana matriks
adalah penggabungan embedding kata, dan matriks
adalah "matriks proyeksi" yang dimiliki oleh masing-masing attention head
, dan
adalah matriks proyeksi akhir yang dimiliki oleh seluruh attention head multihead.
Secara teoritis dimungkinkan bagi setiap attention head untuk memiliki dimensi head yang berbeda , tetapi hal itu jarang terjadi dalam praktiknya.
Sebagai contoh, pada model GPT-2 terkecil, hanya terdapat mekanisme self-attention. Model ini memiliki dimensi sebagai berikut:Karena
, matriks proyeksi outputnya
adalah matriks persegi.
Perhatian terselubung
Arsitektur transformer dibangun untuk menghitung token keluaran secara iteratif. Dengan asumsi mengacu pada perhitungan token keluaran pertama
, untuk langkah
, token keluaran
akan tetap konstan. Ini memastikan properti model yang mirip dengan model autoregresif.[1] Oleh karena itu, pada setiap langkah waktu
, perhitungan untuk semua keluaran
seharusnya tidak memiliki akses ke token pada posisi
untuk
(seperti yang terjadi secara alami untuk langkah waktu
, ketika token
belum dihitung). Perilaku ini dapat dicapai sebelum tahap softmax dengan menambahkan matriks mask
yang bernilai
pada entri di mana tautan perhatian harus dipotong, dan
di tempat lain:
Matriks berikut ini umumnya digunakan dalam modul self-attention decoder, yang disebut "causal masking":
Dengan kata lain, ini berarti bahwa setiap token dapat memperhatikan dirinya sendiri, dan setiap token sebelumnya, tetapi tidak token setelahnya. Modul perhatian non-masked dapat dianggap sebagai modul perhatian masked di mana mask memiliki semua entri nol. Sebagai contoh penggunaan matriks mask yang tidak umum, XLNet menganggap semua mask berbentuk , di mana
adalah matriks permutasi acak.[26]
Enkoder

Sebuah enkoder terdiri dari lapisan penyematan, diikuti oleh beberapa lapisan enkoder.
Setiap lapisan encoder terdiri dari dua komponen utama: mekanisme self-attention dan lapisan feed-forward. Ia menerima input berupa urutan vektor input, menerapkan mekanisme self-attention untuk menghasilkan urutan vektor perantara, kemudian menerapkan lapisan feed-forward untuk setiap vektor secara individual. Secara skematis, kita memiliki:
di mana merupakan singkatan dari "feed-forward network". Kita dapat menuliskannya lebih ringkas sebagai
dengan konvensi implisit bahwa
diterapkan pada setiap baris matriks secara individual.
Lapisan encoder ditumpuk. Lapisan encoder pertama mengambil urutan vektor input dari lapisan embedding, menghasilkan urutan vektor. Urutan vektor ini diproses oleh encoder kedua, dan seterusnya. Output dari lapisan encoder terakhir kemudian digunakan oleh decoder.
Karena encoder memproses seluruh input sekaligus, setiap token dapat memperhatikan setiap token lainnya (perhatian seluruh-ke-seluruh), sehingga tidak perlu masking kausal.
Dekoder

Sebuah dekoder terdiri dari lapisan penyematan, diikuti oleh beberapa lapisan dekoder, diikuti oleh lapisan pelepasan penyematan.
Setiap dekoder terdiri dari tiga komponen utama: mekanisme perhatian diri yang ditutupi secara kausal, mekanisme perhatian silang, dan jaringan saraf umpan maju. Dekoder berfungsi dengan cara yang mirip dengan enkoder, tetapi mekanisme perhatian tambahan disisipkan yang mengambil informasi relevan dari pengkodean yang dihasilkan oleh enkoder. Mekanisme ini juga dapat disebut "perhatian enkoder-dekoder".[1][23]
Seperti halnya encoder pertama, decoder pertama menerima informasi posisi dan embedding dari urutan output sebagai inputnya, bukan encoding. Transformer tidak boleh menggunakan output saat ini atau di masa mendatang untuk memprediksi output, sehingga urutan output harus ditutupi sebagian untuk mencegah aliran informasi terbalik ini.[1] Hal ini memungkinkan pembangkitan teks autoregresif. Untuk decoding, perhatian all-to-all tidak tepat, karena sebuah token tidak dapat memperhatikan token yang belum dihasilkan. Dengan demikian, modul self-attention dalam decoder tertutupi secara kausal.
Sebaliknya, mekanisme perhatian silang (cross-attention) memperhatikan vektor keluaran dari encoder, yang dihitung sebelum decoder mulai melakukan decoding. Akibatnya, tidak diperlukan masking dalam mekanisme perhatian silang.
Secara skematis, kita memiliki:dimana
adalah matriks dengan baris-baris yang merupakan vektor keluaran dari encoder.
Dekoder terakhir diikuti oleh lapisan un-embedding akhir untuk menghasilkan probabilitas keluaran atas kosakata. Kemudian, salah satu token diambil sampelnya sesuai dengan probabilitas tersebut, dan dekoder dapat dijalankan lagi untuk menghasilkan token berikutnya, dan seterusnya, secara autoregresif menghasilkan teks keluaran.
Referensi
- 1 2 3 4 5 6 7 8 9 10 Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N; Kaiser, Łukasz; Polosukhin, Illia (2017). "Attention is All you Need" (PDF). Advances in Neural Information Processing Systems. 30. Curran Associates, Inc.
- ↑ Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N.; Kaiser, Lukasz; Polosukhin, Illia (2017). "Attention Is All You Need" (PDF). Advances in Neural Information Processing Systems. Diakses tanggal 2026-05-05.
- ↑ Hochreiter, Sepp; Schmidhuber, Jürgen (November 1997). "Long Short-Term Memory". Neural Computation. 9 (8): 1735–1780. doi:10.1162/neco.1997.9.8.1735. PMID 9377276.
- 1 2 "Better Language Models and Their Implications". OpenAI. 2019-02-14. Diarsipkan dari versi aslinya tanggal 2020-12-19. Diakses tanggal 2019-08-25.
- ↑ "Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer". arXiv. 2019-10-23. Diakses tanggal 2026-05-05.
- ↑ Bahdanau; Cho, Kyunghyun; Bengio, Yoshua (September 1, 2014). "Neural Machine Translation by Jointly Learning to Align and Translate". arΧiv:1409.0473 [cs.CL].
- ↑ Luong, Minh-Thang; Pham, Hieu; Manning, Christopher D. (August 17, 2015). "Effective Approaches to Attention-based Neural Machine Translation". arΧiv:1508.04025 [cs.CL].
- ↑
- ↑ Parisotto, Emilio; Song, Francis; Rae, Jack; Pascanu, Razvan; Gulcehre, Caglar; Jayakumar, Siddhant; Jaderberg, Max; Kaufman, Raphaël Lopez; Clark, Aidan; Noury, Seb; Botvinick, Matthew; Heess, Nicolas; Hadsell, Raia (2020-11-21). "Stabilizing Transformers for Reinforcement Learning". Proceedings of the 37th International Conference on Machine Learning (dalam bahasa Inggris). PMLR: 7487–7498.
- ↑ Radford, Alec; Jong Wook Kim; Xu, Tao; Brockman, Greg; McLeavey, Christine; Sutskever, Ilya (2022). "Robust Speech Recognition via Large-Scale Weak Supervision". arΧiv:2212.04356 [eess.AS].
- ↑ Monastirsky, Maxim; Azulay, Osher; Sintov, Avishai (February 2023). "Learning to Throw With a Handful of Samples Using Decision Transformers". IEEE Robotics and Automation Letters. 8 (2): 576–583. Bibcode:2023IRAL....8..576M. doi:10.1109/LRA.2022.3229266.
- ↑ Ruoss, Anian; Delétang, Grégoire; Medapati, Sourabh; Grau-Moya, Jordi; Wenliang, Li; Catt, Elliot; Reid, John; Genewein, Tim (2024-02-07). "Grandmaster-Level Chess Without Search". arΧiv:2402.04494v1 [cs.LG].
- ↑ Wolf, Thomas; Debut, Lysandre; Sanh, Victor; Chaumond, Julien; Delangue, Clement; Moi, Anthony; Cistac, Pierric; Rault, Tim; Louf, Remi; Funtowicz, Morgan; Davison, Joe; Shleifer, Sam; von Platen, Patrick; Ma, Clara; Jernite, Yacine; Plu, Julien; Xu, Canwen; Le Scao, Teven; Gugger, Sylvain; Drame, Mariama; Lhoest, Quentin; Rush, Alexander (2020). "Transformers: State-of-the-Art Natural Language Processing". Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations. hlm. 38–45. doi:10.18653/v1/2020.emnlp-demos.6.
- 1 2 3 "Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processing". Google AI Blog. 2 November 2018. Diarsipkan dari versi aslinya tanggal 2021-01-13. Diakses tanggal 2019-08-25.
- ↑ Xiong, Ruibin; Yang, Yunchang; He, Di; Zheng, Kai; Zheng, Shuxin; Xing, Chen; Zhang, Huishuai; Lan, Yanyan et al. (2020-06-29). "On Layer Normalization in the Transformer Architecture". arΧiv:2002.04745 [cs.LG].
- ↑ Raffel, Colin; Shazeer, Noam; Roberts, Adam; Lee, Katherine; Narang, Sharan; Matena, Michael; Zhou, Yanqi; Li, Wei et al. (2019). "Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer". arΧiv:1910.10683 [cs.LG].
- 1 2 "Masked language modeling". huggingface.co. Diakses tanggal 2023-10-05.
- 1 2 "Causal language modeling". huggingface.co. Diakses tanggal 2023-10-05.
- 1 2
- 1 2 3
- ↑ Press, Ofir; Wolf, Lior (2017-02-21), Using the Output Embedding to Improve Language Models, arXiv:1608.05859
- ↑ Lintz, Nathan (2016-04-18). "Sequence Modeling with Neural Networks (Part 2): Attention Models". Indico. Diarsipkan dari versi aslinya tanggal 2020-10-21. Diakses tanggal 2019-10-15.
- 1 2 3 Alammar, Jay. "The Illustrated transformer". jalammar.github.io. Diarsipkan dari versi aslinya tanggal 2020-10-18. Diakses tanggal 2019-10-15.
- ↑ Team, Keras. "Dokumentasi Keras: Model GPT2Backbone". keras.io (dalam bahasa Inggris). Diakses tanggal 2024-08-08.
- ↑ Clark, Kevin; Khandelwal, Urvashi; Levy, Omer; Manning, Christopher D. (August 2019). "What Does BERT Look at? An Analysis of BERT's Attention". Proceedings of the 2019 ACL Workshop BlackboxNLP: Analyzing and Interpreting Neural Networks for NLP. Florence, Italy: Association for Computational Linguistics: 276–286. arXiv:1906.04341. doi:10.18653/v1/W19-4828. Diarsipkan dari versi aslinya tanggal 2020-10-21. Diakses tanggal 2020-05-20.
- ↑ Yang, Zhilin; Dai, Zihang; Yang, Yiming; Carbonell, Jaime; Salakhutdinov, Russ R; Le, Quoc V (2019). "XLNet: Generalized Autoregressive Pretraining for Language Understanding". Advances in Neural Information Processing Systems. 32. Curran Associates, Inc. arXiv:1906.08237.
Bacaan lebih lanjut
- Alexander Rush, The Annotated transformer Diarsipkan 2021-09-22 di Wayback Machine., Harvard NLP group, 3 April 2018
- Phuong, Mary; Hutter, Marcus (2022). "Formal Algorithms for Transformers". arΧiv:2207.09238 [cs.LG].
- Ferrando, Javier; Sarti, Gabriele; Bisazza, Arianna; Costa-jussà, Marta R. (2024-05-01). "A Primer on the Inner Workings of Transformer-based Language Models". arΧiv:2405.00208 [cs.CL].
- Leech, Gavin (2024-11-06). "Transformer++". argmin gravitas. Diarsipkan dari asli tanggal 2025-02-26. Diakses tanggal 2025-05-08.
- US patent 10452978, Noam M. Shazeer; Aidan Nicholas Gomez; Lukasz Mieczyslaw Kaiser; Jakob D. Uszkoreit; Llion Owen Jones; Niki J. Parmar; Illia Polosukhin; Ashish Teku Vaswani, "Attention-based sequence transduction neural networks", dikeluarkan tanggal 2019-10-22, diberikan kepada Google LLC
- Raschka, Sebastian (2026-03-11). "The Big LLM Architecture Comparison: From DeepSeek V3 to GLM-5: A Look At Modern LLM Architecture Design". Sebastian Raschka’s AI Magazine. Diakses tanggal 2026-03-25.