Apa itu cross-attention?
Cross-attention adalah operasi attention dengan query dari satu sequence, sedangkan key dan value dari sequence lain. Setiap token di sequence pertama, misalnya kata yang sedang dihasilkan decoder, memberi skor pada setiap token di sequence kedua, misalnya kalimat sumber yang sudah di-encode, lalu mengambil rata-rata berbobot dari value-nya. Ini scaled dot-product attention yang sama dengan self-attention; yang berubah hanya asal K dan V.
Cross-attention menghubungkan dua bagian model encoder-decoder untuk terjemahan, ringkasan, dan pengenalan suara, termasuk T5 dan Whisper. Lewat mekanisme ini pula text-to-image diffusion model seperti Stable Diffusion membuat prompt teks mengarahkan tiap bagian gambar, dan sebagian vision-language model membuat model bahasa bisa membaca feature gambar. Setiap kali satu aliran data harus mencari informasi di aliran lain, cross-attention adalah pilihan yang lazim.
Ide utama
- Cross-attention mengambil query dari satu sequence, serta key dan value dari sequence lain.
- Matematikanya sama dengan self-attention: softmax(Q · Kᵀ / √d_k) · V.
- Matriks skornya m × n, jadi panjang kedua sequence bisa berbeda.
- Key dan value encoder dihitung sekali, lalu dipakai kembali di setiap langkah decoding.
- Weight cross-attention berfungsi sebagai soft alignment antara kedua input.
- Mekanisme ini menghubungkan teks dengan gambar di diffusion model dan vision-language model.
Pertanyaan umum
Apa bedanya cross-attention dengan menggabungkan kedua input?
Model decoder-only bisa menyatukan kedua input menjadi satu sequence dan memakai self-attention di seluruhnya, seperti yang dilakukan banyak vision-language model dengan token gambar. Cross-attention justru memisahkan kedua aliran, jadi hanya satu sisi yang diperbarui dan sisi lain dibaca. Cara ini menghemat komputasi saat sumbernya panjang, dan encoder sumber bisa dibekukan atau dipakai ulang.
Kenapa key dan value berasal dari encoder?
Key menentukan apa yang bisa ditemukan dan value menentukan apa yang dikembalikan, jadi keduanya harus menggambarkan informasi yang dicari. Query menggambarkan apa yang dibutuhkan posisi saat ini. Jika perannya ditukar, kalimat sumber justru yang akan mengajukan pertanyaan ke output.
Berapa besar komputasi yang dibutuhkan cross-attention?
Untuk m query dan n token sumber, cross-attention menghitung m × n skor per head, yang linear terhadap masing-masing panjang. Karena key dan value sumber tetap, keduanya diproyeksikan sekali dan di-cache selama proses generation. Biayanya naik seiring panjang sumber, dan ini berpengaruh pada dokumen panjang dan gambar beresolusi tinggi.
Apa itu Perceiver?
Perceiver (Jaegle et al., 2021) memakai cross-attention dari sekumpulan kecil latent vector tetap yang dipelajari ke input yang sangat besar, seperti semua pixel sebuah gambar. Biayanya jadi sebanding dengan jumlah latent dikali ukuran input, bukan kuadrat ukuran input. Setelah itu, self-attention hanya berjalan di antara latent.
Penjelasan terkait
- Cara Kerja Self-Attention · Query, key, dan value, inti dari self-attention
- Arsitektur Transformer · Panduan visual untuk paper "Attention Is All You Need"
- Seq2Seq & Beam Search · Lakukan encode pada input sequence, lalu decode menjadi output: arsitektur di balik penerjemahan
- Multi-Head Attention · Attention head paralel yang mempelajari pola berbeda
- Diffusion Model · Hasilkan gambar dengan belajar membalik proses penambahan noise yang bertahap
- Decoder-Only Transformer · Arsitektur di balik GPT dan LLM modern
Referensi
- Vaswani et al. (2017), "Attention Is All You Need", NeurIPS
- Rombach et al. (2022), "High-Resolution Image Synthesis with Latent Diffusion Models", CVPR
- Alayrac et al. (2022), "Flamingo: a Visual Language Model for Few-Shot Learning"
- Hertz et al. (2022), "Prompt-to-Prompt Image Editing with Cross Attention Control"
- Jaegle et al. (2021), "Perceiver: General Perception with Iterative Attention"
Terakhir diperbarui