Apa itu multi-head attention?
Multi-head attention menjalankan beberapa operasi self-attention, yang disebut head, secara paralel pada input yang sama, lalu menggabungkan hasilnya. Setiap head punya proyeksi query, key, dan value sendiri ke subspace yang lebih kecil, sehingga masing-masing bisa mempelajari pola berbeda tentang kata mana yang perlu diperhatikan. Output tiap head digabung dengan concatenation, lalu melewati linear projection terakhir, W_O, untuk menghasilkan satu vector per token.
Setiap layer Transformer memakai multi-head attention, dari model terjemahan aslinya sampai GPT, BERT, Llama, dan vision transformer. Satu head hanya bisa membentuk satu rata-rata berbobot per query, sehingga berbagai jenis konteks tercampur jadi kabur. Membagi lebar model ke beberapa head membuat satu layer bisa melacak posisi, sintaksis, dan hubungan jarak jauh sekaligus, dengan biaya komputasi kira-kira sama dengan satu head lebar.
Ide utama
- Multi-head attention menjalankan h attention head secara paralel pada input yang sama.
- Setiap head bekerja di subspace berukuran d_k = d_model / h.
- Output tiap head digabung dengan concatenation kembali ke lebar d_model.
- Output projection W_O mencampur informasi dari semua head.
- Total biayanya kira-kira sama dengan satu attention head selebar penuh.
- Banyak head pada model terlatih bersifat redundan dan bisa di-prune.
Pertanyaan umum
Berapa jumlah attention head yang sebaiknya dimiliki Transformer?
Sebagian besar model memilih ukuran head 64 atau 128, lalu menetapkan jumlah head sebagai d_model dibagi ukuran itu. Hasilnya 12 head di BERT-base (lebar 768) dan 32 head di model selebar 4.096. Ukuran head yang sangat kecil merugikan, karena dot product tiap head menjadi terlalu low-rank untuk memisahkan key dengan baik.
Apakah lebih banyak head selalu membuat attention lebih baik?
Tidak. Dengan d_model tetap, menambah head membuat tiap head lebih sempit, dan setelah titik tertentu kualitasnya turun. Eksperimen di makalah Transformer asli menemukan 8 head lebih baik daripada 1, tetapi 16 dan 32 sedikit lebih buruk daripada 8 pada lebar yang sama.
Apa bentuk output multi-head attention?
Sama dengan input-nya: satu vector selebar d_model untuk tiap token, atau (batch, length, d_model) untuk satu batch. Di dalamnya, tensor berbentuk (batch, heads, length, d_k), dan matriks weight tiap head berukuran (length × length).
Apakah multi-head attention sama dengan menumpuk attention layer?
Tidak. Head berjalan berdampingan di dalam satu layer dan semuanya membaca input yang sama, sedangkan layer berjalan berurutan dan masing-masing membaca output layer sebelumnya. Model memakai keduanya: misalnya, 12 layer dengan masing-masing 12 head di BERT-base.
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"
- Cross-Attention · Attention antar-sequence dan antar-modalitas
- Positional Encoding · Cara transformer mengetahui urutan kata
- Decoder-Only Transformer · Arsitektur di balik GPT dan LLM modern
- BERT dan Masked Language Modeling · Sembunyikan satu kata, prediksi dari dua sisi: cara BERT mempelajari representasi bidirectional yang dalam
Referensi
- Vaswani et al. (2017), "Attention Is All You Need", NeurIPS
- Michel, Levy & Neubig (2019), "Are Sixteen Heads Really Better than One?", NeurIPS
- Voita et al. (2019), "Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned", ACL
- Olsson et al. (2022), "In-context Learning and Induction Heads"
Terakhir diperbarui