Arsitektur transformer adalah desain jaringan saraf yang dibangun di sekitar self-attention. Alih-alih terutama mengandalkan pemrosesan langkah demi langkah, arsitektur ini memungkinkan setiap token mengumpulkan informasi dari token lain yang relevan dalam urutan.
Itulah sebabnya transformer bekerja sangat baik untuk bahasa dan tugas urutan lainnya. Jika satu kata bergantung pada kata lain yang letaknya jauh, attention memberi model jalur langsung di antara keduanya.
Apa yang dimaksud dengan arsitektur transformer
Sebuah blok transformer melakukan lebih dari sekadar menerapkan satu rumus, tetapi self-attention adalah gagasan utamanya. Dalam self-attention, setiap token menghasilkan tiga vektor:
- query, yang merepresentasikan apa yang dicari token ini
- key, yang merepresentasikan apa yang ditawarkan token ini untuk dicocokkan
- value, yaitu informasi yang dapat diteruskan
Jika representasi token disusun dalam sebuah matriks , satu attention head biasanya membentuk
dengan , , dan adalah matriks yang dipelajari.
Rumus scaled dot-product attention standar adalah
Di sini adalah dimensi key. Penskalaan dengan membantu menjaga agar skor dot product mentah tidak menjadi terlalu besar saat dimensinya bertambah.
Softmax diterapkan per baris. Setiap baris menjawab pertanyaan satu token: "Seberapa besar attention yang harus saya berikan kepada token-token lain?"
Cara kerja self-attention dalam bahasa sederhana
Self-attention biasanya tidak memilih satu token lalu mengabaikan sisanya. Ia membangun rata-rata berbobot dari vektor-vektor value.
Jika satu token sangat cocok dengan key token lain, token itu mendapat bobot yang lebih besar. Jika kecocokannya lemah, bobotnya lebih kecil. Karena itu, keluaran untuk satu token menjadi campuran informasi dari urutan yang sudah mempertimbangkan konteks.
Ini membantu dalam kesesuaian subjek-predikat, rujukan kata ganti, dan hubungan jarak jauh lainnya. Model tidak perlu menunggu informasi melewati banyak langkah perantara sebelum informasi itu tersedia.
Contoh self-attention yang dikerjakan
Ambil satu query dan dua token kandidat dalam satu attention head. Agar perhitungannya sederhana, gunakan .
Misalkan token saat ini memiliki query
dan dua token kandidat memiliki
dengan value
Skor attention mentah adalah dot product:
Karena , faktor skalanya adalah , jadi skor yang sudah diskalakan tetap dan .
Sekarang terapkan softmax pada dua skor tersebut:
Keluaran attention adalah kombinasi berbobot
Gagasan utamanya sederhana: keluaran berada lebih dekat ke karena query lebih cocok dengan daripada dengan .
Ini adalah pola dasar di dalam model yang jauh lebih besar. Transformer nyata melakukan ini dalam dimensi yang lebih tinggi dan pada banyak token sekaligus, tetapi ide perhitungannya tetap sama.
Apa lagi yang ada di dalam blok transformer
Transformer lebih dari satu rumus attention. Sebuah blok standar biasanya berisi:
- multi-head attention, agar model dapat mempelajari beberapa jenis hubungan sekaligus
- jaringan feedforward per posisi, yang mentransformasikan setiap representasi token setelah attention
- residual connection, yang membantu mempertahankan dan menyempurnakan informasi di seluruh layer
- layer normalization, yang membantu menstabilkan pelatihan
Dalam arsitektur transformer asli untuk tugas sequence-to-sequence, model memiliki tumpukan encoder dan tumpukan decoder.
- Encoder menggunakan self-attention pada urutan masukan.
- Decoder menggunakan masked self-attention sehingga suatu posisi tidak dapat melihat token keluaran di masa depan.
- Decoder juga dapat menggunakan cross-attention, di mana query berasal dari decoder dan key serta value berasal dari keluaran encoder.
Banyak model bahasa modern hanya menggunakan sisi decoder. Gagasan inti attention tetap ada, tetapi arsitektur keseluruhannya dikhususkan untuk prediksi token berikutnya.
Mengapa transformer membutuhkan informasi posisi
Attention saja bersifat permutation-equivariant terhadap token masukan. Dalam bahasa sederhana, jika Anda hanya menerapkan attention pada himpunan vektor token yang sama tanpa menambahkan posisi, model secara bawaan tidak tahu token mana yang muncul lebih dulu.
Itulah sebabnya transformer menambahkan informasi posisi, seperti embedding posisi yang dipelajari atau positional encoding. Tanpa sinyal tambahan itu, tugas yang peka terhadap urutan seperti bahasa akan jauh lebih sulit dimodelkan dengan benar.
Kesalahan umum tentang arsitektur transformer
Mengira attention adalah keseluruhan transformer
Itu memang gagasan utamanya, tetapi arsitekturnya juga bergantung pada layer feedforward, jalur residual, normalisasi, dan informasi posisi.
Mencampuradukkan self-attention dan cross-attention
Dalam self-attention, , , dan berasal dari urutan yang sama. Dalam cross-attention, ketiganya tidak semuanya berasal dari sumber yang sama.
Melupakan peran masking
Model bahasa decoder-only memerlukan causal masking selama pelatihan dan inferensi agar suatu token tidak dapat memberi attention pada token-token masa depan.
Menganggap bobot attention sebagai penjelasan yang lengkap
Bobot attention bisa informatif, tetapi bukan bukti penuh tentang penalaran model. Perilaku akhir juga bergantung pada vektor value, layer berikutnya, dan transformasi nonlinier.
Kapan model transformer digunakan
Transformer banyak digunakan dalam language modeling, penerjemahan, peringkasan, pembuatan kode, ucapan, dan banyak tugas visi. Transformer bekerja sangat baik terutama ketika hubungan di seluruh urutan atau himpunan lebih penting daripada pola yang murni lokal.
Transformer bukan solusi ajaib untuk semua situasi. Untuk dataset yang sangat kecil, batasan real-time yang ketat, atau masalah yang paling bergantung pada struktur induktif lokal, arsitektur lain masih bisa lebih cocok.
Coba soal serupa
Ambil frasa tiga kata dan fokus pada satu kata. Tentukan kata lain mana yang seharusnya mendapat bobot attention tinggi dan mengapa, lalu buat contoh query-key-value kecil yang sesuai dengan intuisi itu.
Jika ingin melangkah sedikit lebih jauh, hitung satu keluaran attention kecil secara manual. Itu biasanya merupakan cara tercepat untuk beralih dari "Saya tahu rumusnya" ke "Saya paham apa yang dilakukan arsitektur ini."
Butuh bantuan mengerjakan soal?
Unggah pertanyaanmu dan dapatkan solusi terverifikasi langkah demi langkah dalam hitungan detik.
Buka GPAI Solver →