Lensa ML

Cara Kerja Cross-Attention

Langkah 1 dari 6: Self vs Cross-Attention

Asal Q, K, dan V

Self
Cross
Sequencetok₁tok₂tok₃Sumber QSequencetok₁tok₂tok₃Sumber K, Vsequence yang sama

Q dari

Seq sama

K dari

Seq sama

V dari

Seq sama

Dalam self-attention, Q, K, dan V semuanya berasal dari sequence yang sama. Setiap token memperhatikan setiap token lain di sequence-nya sendiri.

Geser slider dari Self ke Cross, lalu perhatikan asal K dan V. Rumusnya tidak berubah: softmax(Q · Kᵀ / √d_k) · V. Yang berubah hanya input-nya: Q = X_dec · W_Q, sedangkan K = X_enc · W_K dan V = X_enc · W_V. Karena panjang kedua sequence bisa berbeda, matriks skornya m × n, bukan persegi, dengan satu baris per token decoder dan satu kolom per token sumber. Lebar kedua sisi bahkan boleh berbeda, selama W_Q dan W_K memproyeksikan keduanya ke d_k yang sama.

Langkah 2 dari 6: Encoder-Decoder Attention

Terjemahan dengan busur cross-attention

Kata sumber
"The"
EncoderDecoderThecatsatLe82%chat5%assis7%

Sumber

"The"

Le

82%

chat

5%

assis

7%

"The" sangat selaras dengan "Le", jadi cross-attention sudah menemukan pasangan terjemahannya.

Geser slider Kata sumber melewati "The", "cat", dan "sat". Setiap persentase dibaca menurun pada satu kolom matriks alignment: seberapa kuat tiap kata Prancis memperhatikan kata Inggris yang dipilih. Jumlah tiap baris harus 100%, tetapi jumlah kolom tidak, jadi sebuah kata sumber bisa sepenuhnya diabaikan atau dipakai oleh beberapa kata target. Di Transformer asli, masing-masing dari 6 decoder layer punya block cross-attention sendiri, dan semuanya membaca output akhir encoder yang sama.

Langkah 3 dari 6: Q dari Decoder

Decoder mengajukan pertanyaan ke encoder

Posisi decoder
"Le"
DecoderLechatassisQ →EncoderThe82%cat10%sat8%← K, V

Posisi dec

1

Q vec

[0.3, -0.1, 0.5]

Paling diperhatikan

"The"

Saat menghasilkan "Le": Q dari decoder mengajukan query ke encoder dan paling memperhatikan "The", artikel yang sepadan.

Geser slider Posisi decoder untuk menghasilkan "Le", "chat", dan "assis" secara bergantian. Query dari decoder berubah di setiap langkah, tetapi key dan value dari encoder tidak. Implementasinya menghitung K dan V untuk kalimat sumber sekali saja, lalu memakainya kembali untuk setiap token yang dihasilkan, sehingga cross-attention hanya menambah sedikit biaya per langkah. Query berasal dari output masked self-attention milik decoder, jadi sudah memuat kata-kata Prancis yang dihasilkan sejauh ini. Itulah sebabnya "assis" bisa bergantung pada "sat" sekaligus pada "chat" yang muncul lebih dulu.

Langkah 4 dari 6: Word Alignment

Attention sebagai matriks soft alignment

Sumber
"The"
Target
"Le"
ThecatsatLechatassis82%10%8%5%85%10%7%8%85%Sumber (Inggris)Target (Prancis)

Sumber

"The"

Target

"Le"

Attention

82%

Alignment kuat: "Le" adalah terjemahan langsung dari "The". Cross-attention mempelajari padanan kata seperti ini.

Geser slider Sumber dan Target untuk memilih satu sel matriks 3 × 3. Matriksnya hampir diagonal karena urutan kata bahasa Inggris dan Prancis sama pada frasa ini. Untuk "the black cat" dan "le chat noir", weight-nya akan bersilangan, karena bahasa Prancis menaruh kata sifat setelah kata benda. Sistem terjemahan statistik mempelajari hard alignment kata secara eksplisit, dimulai dari model IBM pada awal 1990-an. Attention mempelajari soft alignment sebagai efek samping training untuk terjemahan, tanpa label alignment.

Langkah 5 dari 6: Cross-Attention Multi-Modal

Gambar dan teks bertemu lewat attention

Area
Kucing
Kata
"cat"
Area gambarLangit5%Kucing80%Rumput5%Pagar10%Token teks"A""cat""outside"

Area

Kucing

Kata

"cat"

Attention

80%

Kata "cat" sangat memperhatikan area Kucing: cross-attention mengaitkan kata itu dengan konten visual.

Geser slider Area dan Kata untuk memasangkan sebuah kata dengan salah satu dari 4 area gambar. Pada text-to-image diffusion model seperti Stable Diffusion, perannya terbalik: feature gambar menjadi query, dan token embedding dari text encoder menyediakan key dan value, sehingga tiap patch gambar yang sedang dihasilkan mencari kata yang menggambarkannya. Metode penyuntingan seperti Prompt-to-Prompt mengubah gambar dengan menyunting cross-attention map ini. Flamingo menambahkan gated cross-attention layer ke model bahasa yang dibekukan agar model itu bisa membaca gambar.

Langkah 6 dari 6: Cross-Attention Antar-Layer

Attention makin tajam seiring kedalaman decoder

Layer
1
Ilustrasi: logit diatur dengan tangan, bukan dari model terlatihLayer 1 Cross-AttnThe 39%cat 32%sat 29%Layer 2 Cross-AttnLayer 3 Cross-AttnLayer 4 Cross-AttnLayer 5 Cross-AttnLayer 6 Cross-AttnOutput

Layer

1 / 6

Entropy

1.57

Keyakinan tertinggi

39%

Layer awal: attention masih menyebar, dan decoder mengumpulkan informasi dari semua posisi encoder.

Geser slider Layer dari 1 ke 6. Softmax dari logit layer 1 menghasilkan weight sekitar 39%, 32%, dan 29%, sedangkan layer 6 menaruh sekitar 99% pada satu token. Penajaman yang mulus ini adalah penyederhanaan. Pada model terjemahan yang sudah dilatih, alignment paling jelas sering muncul dari salah satu layer akhir, tetapi tidak selalu yang terakhir, dan sebagian layer tetap menyebar karena mengumpulkan konteks luas. Cross-attention map dipakai untuk memeriksa terjemahan dan, di Whisper, untuk memperkirakan kapan tiap kata yang ditranskripsi diucapkan.

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

Referensi

  1. Vaswani et al. (2017), "Attention Is All You Need", NeurIPS
  2. Rombach et al. (2022), "High-Resolution Image Synthesis with Latent Diffusion Models", CVPR
  3. Alayrac et al. (2022), "Flamingo: a Visual Language Model for Few-Shot Learning"
  4. Hertz et al. (2022), "Prompt-to-Prompt Image Editing with Cross Attention Control"
  5. Jaegle et al. (2021), "Perceiver: General Perception with Iterative Attention"

Terakhir diperbarui