Penjelasan Multi-Head Attention: Soalan, Kunci, dan Nilai Dijelaskan Dengan Mudah
Pengenalan
Perhatian berbilang kepala ialah konsep asas di sebalik model berasaskan Transformer seperti BERT, GPT dan Vision Transformers. Ia membolehkan model memproses jujukan input dengan memfokuskan pada berbilang aspek data pada masa yang sama. Daripada membaca input secara berurutan, perhatian berbilang kepala membolehkan pemahaman selari tentang hubungan antara token, menjadikan model lebih pantas dan lebih berkesan dalam menangkap konteks. Mekanisme ini adalah sebab utama mengapa seni bina berasaskan perhatian mendominasi pembelajaran mendalam moden.
Perkara Penting
- Perhatian pelbagai kepala membolehkan model memberi tumpuan kepada bahagian yang berbeza dalam input secara serentak.
- Ia menggunakan pelbagai kepala perhatian untuk menangkap pelbagai hubungan dalam urutan yang sama.
- Setiap kepala perhatian beroperasi dalam subruang representasi yang dipelajari berbeza.
- Menyesuaikan skor perhatian meningkatkan kestabilan latihan.
- Perhatian berbilang kepala adalah teras kepada seni bina Transformer dalam NLP, visi, dan tugasan multimodal.
Konsep Penting untuk Diketahui dalam Perhatian Multi-Kepala
- Embedding adalah asas bagaimana transformer memahami teks. Daripada memproses perkataan sebagai rentetan biasa, model menukar setiap token kepada vektor nombor padat yang dipanggil embedding. Vektor-vektor ini menangkap maklumat semantik dan sintaksis, bermakna perkataan dengan maksud yang sama cenderung mempunyai embedding yang serupa. Sebagai contoh, embedding untuk “cat” dan “dog” akan lebih dekat dalam ruang vektor berbanding dengan “cat” dan “table.” Pada peringkat ini, embedding mewakili token, tanpa sebarang kesedaran tentang konteks sekeliling.
- Lapis perhatian bertanggungjawab untuk menambah konteks kepada penanaman ini. Lapis perhatian membenarkan setiap token dalam sesuatu urutan untuk melihat setiap token lain dan menentukan yang mana paling berkaitan. Daripada memproses teks langkah demi langkah seperti model berulang tradisional, lapis perhatian menganalisis keseluruhan urutan secara selari. Ini membantu model menangkap pergantungan jangka panjang, seperti bagaimana permulaan sesuatu ayat berkaitan dengan akhirnya, dan menjadikan model transformer lebih pantas dan lebih berkesan.
- Apabila embeddings melalui lapisan perhatian, mereka diubah menjadi embeddings kontekstual yang ditingkatkan. Embeddings yang dikemas kini ini tidak lagi mewakili token itu sahaja, tetapi juga termasuk maklumat daripada token di sekelilingnya. Inilah yang membolehkan model memahami bahawa perkataan seperti "bank" mempunyai maksud yang berbeza bergantung kepada sama ada ia muncul berhampiran perkataan seperti "sungai" atau "akaun". Setiap representasi token diperkaya dengan maklumat kontekstual, menjadikannya lebih ekspresif dan berguna untuk tugas-tugas seterusnya.
- Untuk mengira perhatian, setiap penjelmaan input diproyeksikan ke dalam tiga vektor berasingan yang dikenali sebagai pertanyaan, kunci, dan nilai. Vektor pertanyaan mewakili apa yang dicari oleh token, vektor kunci mewakili apa yang ditawarkan oleh token, dan vektor nilai mengandungi maklumat yang akan dikongsi jika token dianggap relevan. Pemisahan ini membolehkan model membandingkan token dengan cekap dan memutuskan bagaimana maklumat harus mengalir di antara mereka.
- Vektor pertanyaan, kunci, dan nilai dijana menggunakan matriks berat yang boleh dipelajari. Matriks ini menukar penjelmaan asal ke dalam ruang representasi yang berbeza yang sesuai untuk pengiraan perhatian. Oleh kerana berat ini dipelajari semasa latihan, model secara beransur-ansur menemui cara terbaik untuk memproyeksikan penjelmaan supaya hubungan yang bermakna muncul. Dalam perhatian pelbagai kepala, setiap kepala perhatian mempunyai set berat pertanyaan, kunci, dan nilai sendiri, membolehkan kepala yang berbeza menumpukan perhatian pada corak linguistik yang berbeza seperti sintaksis, semantik, atau hubungan kedudukan.
- Matriks berat yang digunakan sepanjang mekanisme perhatian adalah contoh parameter matriks yang boleh dipelajari. Transformer sangat bergantung pada pendaraban matriks yang besar, dan nilai di dalam matriks ini adalah apa yang sebenarnya dipelajari oleh model. Parameter ini menentukan bagaimana maklumat diubah, dibandingkan, dan digabungkan merentas token. Model transformer moden mengandungi berjuta-juta atau malah berbilion-bilion parameter seperti ini, itulah sebabnya mereka mampu menangkap corak kompleks dalam bahasa.
- Skor perhatian mengukur sejauh mana satu token perlu memberi perhatian kepada token lain. Skor ini dikira dengan mengambil hasil darab titik antara vektor pertanyaan dan vektor kunci dari semua token dalam urutan. Nilai yang terhasil menunjukkan kesamaan dan kepentingan, dan ia diukur serta melalui fungsi softmax untuk menghasilkan berat perhatian yang dinormalisasi. Token dengan skor perhatian yang lebih tinggi menyumbang lebih kuat kepada representasi akhir, manakala token yang kurang relevan menyumbang sangat sedikit.
Dalam perhatian berbilang kepala, keseluruhan proses perhatian ini diulang beberapa kali secara selari menggunakan set parameter boleh belajar yang berbeza. Setiap kepala belajar untuk memberi tumpuan kepada aspek yang berbeza dalam urutan input, seperti struktur tatabahasa, makna semantik, atau hubungan jarak jauh. Hasil daripada semua kepala kemudian digabungkan untuk membentuk representasi akhir yang lebih kaya dan lebih bermaklumat berbanding dengan apa yang boleh dihasilkan oleh satu mekanisme perhatian sahaja. Kehadiran selari ini adalah apa yang memberikan perhatian berbilang kepala kekuatan dan fleksibilitinya dalam seni bina transformer moden.
Memahami Perhatian dengan Istilah Mudah
Perhatian membantu model menentukan bahagian input yang paling penting apabila memproses token tertentu. Apabila model membaca ayat, kepentingan perkataan bergantung pada konteks. Sebagai contoh, maksud perkataan "bank " bergantung kepada perkataan sekeliling seperti "sungai " atau "wang. " Perhatian membolehkan model memberikan kepentingan secara dinamik berdasarkan konteks dan bukannya kedudukan sahaja.
Mekanisme ini dibina menggunakan tiga komponen yang dipanggil pertanyaan, kunci, dan nilai. Pertanyaan mewakili apa yang dicari oleh token semasa. Kunci mewakili maklumat apa yang terkandung dalam setiap token. Nilai membawa maklumat sebenar yang akan digabungkan. Model membandingkan pertanyaan dengan semua kunci untuk menentukan kesesuaian dan kemudian menggunakan nilai untuk membina representasi yang sedar konteks.
Mari kita ambil ayat yang sangat kecil: “Kucing duduk di atas tikar.”
Apabila ayat ini dimasukkan ke dalam model transformer, perkara pertama yang berlaku ialah pengecaman token dan penyematan. Setiap perkataan “Cat, sat, on, dan mat ” ditukar menjadi vektor berangka. Vektor-vektor ini dipanggil penyematan. Pada peringkat ini, setiap penyematan mewakili perkataan itu sendiri, tanpa memahami keseluruhan ayat. Sebagai contoh, penyematan bagi cat mengetahui ia merujuk kepada haiwan, tetapi ia masih tidak tahu apa yang dilakukan oleh kucing itu atau di manakah ia berada.
| Perkataan | Vektor Terbenam |
|---|---|
| kucing | [0.21, 0.85, 0.14, 0.62] |
| duduk | [0.45, 0.33, 0.71, 0.18] |
| hidup | [0.05, 0.12, 0.88, 0.09] |
| tikar | [0.19, 0.79, 0.22, 0.58] |
Dalam model sebenar, penanaman boleh mempunyai beratus-ratus atau ribuan dimensi, tetapi untuk pemahaman, kita akan menggunakan vektor 4-dimensi kecil.
Seterusnya, penanaman ini memasuki lapisan perhatian, di mana model cuba memahami hubungan antara perkataan. Untuk melakukan ini, setiap penanaman ditukar menjadi tiga vektor berbeza: pertanyaan, kunci, dan nilai. Vektor-vektor ini dihasilkan menggunakan pendaraban matriks dengan matriks berat yang boleh dipelajari. Walaupun ini kedengaran matematik, intuisinya mudah. Pertanyaan mewakili apa yang dicari oleh sesuatu perkataan, kunci mewakili apa yang ditawarkan oleh sesuatu perkataan, dan nilai mewakili maklumat yang dibawa oleh perkataan itu.
Embedding ini kemudian disusun bersama untuk membentuk matriks embedding bagi ayat tersebut:
Matriks ini menjadi input kepada lapisan perhatian. Daripada sini, model menggunakan pendaraban matriks untuk menghasilkan vektor pertanyaan, kekunci, dan nilai, membandingkan perkataan antara satu sama lain, dan mencipta penanaman konteks di mana kucing tahu ia duduk, dan tikar tahu sesuatu telah duduk di atasnya.
Seterusnya, penanaman ini memasuki lapisan perhatian, di mana model cuba memahami hubungan antara perkataan. Untuk melakukan ini, setiap penanaman ditukar menjadi tiga vektor berbeza: pertanyaan, kunci, dan nilai. Vektor-vektor ini dihasilkan menggunakan pendaraban matriks dengan matriks berat yang boleh dipelajari. Walaupun ini kedengaran matematik, intuisinya mudah. Pertanyaan mewakili apa yang dicari oleh sesuatu perkataan, kunci mewakili apa yang ditawarkan oleh sesuatu perkataan, dan nilai mewakili maklumat yang dibawa oleh perkataan itu.
Perbandingan ini menghasilkan skor perhatian, yang memberitahu model berapa banyak tumpuan yang perlu diberikan kepada setiap perkataan. Selepas menerapkan fungsi softmax, skor ini menjadi berat yang jumlahnya adalah satu. Vektor nilai kemudian didarab dengan berat ini dan dijumlahkan bersama. Ini menghasilkan representasi baru untuk sat yang mengandungi maklumat daripada cat dan mat, bukan hanya perkataan sat itu sendiri.
Selepas proses ini, penanam bagi sat menjadi penanam kontekstual. Ia tidak lagi bermaksud “duduk” secara umum tetapi kini ia bermaksud . Proses yang sama berlaku untuk cat, on, dan mat. Setiap perkataan melihat perkataan lain, memutuskan apa yang penting, dan mengemas kini perwakilannya mengikut kesesuaian.
Ini adalah idea teras perhatian: setiap perkataan menentukan perkataan lain yang penting dan sejauh mana ia penting. Perkalian vektor dan matriks hanyalah alat matematik yang menjadikan perbandingan ini cekap dan boleh dipelajari. Walaupun dengan ayat kecil yang mempunyai empat perkataan, perhatian membolehkan model membina makna dengan menghubungkan perkataan bersama, bukannya memperlakukannya secara terpencil.
Perhatian Skala Hasil Darab Titik
Operasi perhatian teras dipanggil perhatian hasil darab titik berskala dan didefinisikan sebagai:
Di sini, Q, K, dan V adalah matriks pertanyaan, kunci, dan nilai, dan dk adalah dimensi vektor kunci.
Hasil darab titik QKT mengukur kesamaan antara pertanyaan dan semua kunci. Nilai yang lebih tinggi bermakna keterkaitan yang lebih kuat. Membahagikan dengan dk mengelakkan skor kesamaan ini menjadi terlalu besar apabila dimensi vektor meningkat. Tanpa penskalaan ini, fungsi softmax akan menghasilkan taburan yang sangat mencolok, menyebabkan gradien menjadi sangat kecil dan latihan menjadi tidak stabil.
Selepas penskalaan, softmax menukar skor kepada kebarangkalian yang jumlahnya ialah satu. Kebarangkalian ini menentukan sejauh mana setiap nilai menyumbang kepada output akhir. Vektor yang terhasil adalah ringkasan berbobot maklumat yang relevan daripada keseluruhan urutan.
Mengapa Perhatian Kepala Tunggal Terhad
Perhatian kepala tunggal menerapkan proses ini sekali, menghasilkan satu perspektif tunggal terhadap input. Walaupun berkesan, pendekatan ini memaksa model untuk memampatkan semua hubungan ke dalam satu representasi. Ini menjadi satu had apabila data mengandungi pelbagai jenis pergantungan, seperti tatabahasa, makna, dan hubungan jarak jauh.
Dalam praktiknya, bahasa sering memerlukan pemahaman pelbagai hubungan sekaligus.
Sebagai contoh, satu perkataan boleh bergantung secara sintaksis kepada satu token sementara berkaitan secara semantik dengan yang lain. Satu kepala perhatian tunggal sukar untuk menangkap semua corak ini secara serentak.
Perhatian Pelbagai Kepala dalam Transformer
Dalam pengekod Transformer, perhatian kendiri pelbagai kepala membolehkan setiap token memberi perhatian kepada setiap token lain dalam input, menghasilkan penemuan konteks. Dalam penyahkod, perhatian kendiri berpenutup memastikan token tidak dapat memberi perhatian kepada posisi masa depan, yang penting untuk penjanaan autoregresif. Dalam perhatian pengekod–penyahkod, pertanyaan datang dari penyahkod manakala kunci dan nilai datang dari pengekod, membolehkan penjajaran antara urutan input dan output.
Penggunaan perhatian berbilang kepala yang berbeza ini membolehkan Transformers mengendalikan tugas seperti terjemahan, ringkasan dan penjanaan teks dengan ketepatan yang tinggi.
Bagaimana Perhatian Berbilang Kepala Berfungsi
Perhatian berbilang kepala menangani batasan ini dengan menjalankan beberapa mekanisme perhatian secara selari. Daripada menggunakan perhatian terus pada pengekodan asal, model terlebih dahulu memprojeknya ke dalam beberapa ruang berdimensi rendah menggunakan matriks yang dipelajari.
Bagi setiap kepala i, unjuran dikira sebagai:
Setiap kepala kemudian menggunakan perhatian hasil darab titik berskala secara berdikari:
Keluaran semua kepala digabungkan dan disalurkan melalui lapisan linear terakhir:
Secara intuitif, setiap kepala belajar untuk memberi tumpuan kepada aspek yang berbeza dalam urutan itu. Satu kepala mungkin menangkap susunan perkataan, satu lagi mungkin menumpukan perhatian pada kesamaan semantik, manakala satu lagi mungkin mengesan pergantungan jarak jauh. Proyeksi akhir menggabungkan perspektif ini menjadi satu perwakilan yang kaya.
Perhatian Berbilang Kepala dalam PyTorch (Dengan Bentuk Tensor)
Contoh berikut menunjukkan bagaimana perhatian berbilang kepala berfungsi secara dalaman menggunakan PyTorch. Kami bermula dengan satu set penyematan token dan melalui langkah-langkah utama, menekankan bagaimana bentuk tensor berubah sepanjang proses.
import torch
import torch.nn as nnKami menganggap satu kumpulan urutan yang ditokenkan, di mana setiap token diwakili oleh vektor penyerapan.
batch_size = 2
sequence_length = 4
embedding_dim = 8
num_heads = 2
head_dim = embedding_dim // num_headsDi sini, embedding_dim dibahagikan sama rata merentasi kepala perhatian. Setiap kepala akan beroperasi pada vektor saiz head_dim.
x = torch.randn(batch_size, sequence_length, embedding_dim)Pada tahap ini, bentuk tensor input ialah:
Langkah 1: Unjuran Linear untuk Pertanyaan, Kekunci, dan Nilai
Setiap penyerapan token diproyeksikan ke dalam pertanyaan, kunci, dan nilai menggunakan lapisan linear yang dipelajari.
W_q = nn.Linear(embedding_dim, embedding_dim)
W_k = nn.Linear(embedding_dim, embedding_dim)
W_v = nn.Linear(embedding_dim, embedding_dim)
Q = W_q(x)
K = W_k(x)
V = W_v(x)Selepas pemetaan, ketiga-tiga tensor mempunyai bentuk yang sama:
Langkah 2: Bahagikan Penyelenggaraan ke Dalam Pelbagai Kepala
Untuk mencipta pelbagai kepala perhatian, kami membentuk semula tensor supaya setiap kepala bekerja pada ruang sub yang lebih kecil.
Q = Q.view(batch_size, sequence_length, num_heads, head_dim)
K = K.view(batch_size, sequence_length, num_heads, head_dim)
V = V.view(batch_size, sequence_length, num_heads, head_dim)Bentuk baru menjadi:
(2,4,2,4)
Kami kemudian menukar posisi tensor untuk membawa dimensi num_heads ke hadapan.
Q = Q.transpose(1, 2)
K = K.transpose(1, 2)
V = V.transpose(1, 2)Sekarang setiap tensor mempunyai bentuk:
Langkah 3: Perhatian Dot-Produk Skala
Kami mengira skor perhatian dengan mengambil hasil darab titik antara queries dan keys.
scores = torch.matmul(Q, K.transpose(-2, -1))
scores = scores / (head_dim ** 0.5)Tensor skor perhatian mempunyai bentuk:
(2,2,4,4)
Ini menunjukkan sejauh mana setiap token memberi perhatian kepada setiap token lain di dalam setiap kepala.
Langkah 4: Softmax dan Jumlah Berwajaran
Kami menormalkan skor perhatian menggunakan softmax dan menerapkannya pada nilai-nilai tersebut.
attention_weights = torch.softmax(scores, dim=-1)
output = torch.matmul(attention_weights, V)Keluaran setiap kepala berbentuk:
(2,2,4,4)
Setiap token kini mengandungi representasi yang peka konteks berdasarkan perhatian.
Langkah 5: Gabungkan Kepala dan Unjuran Akhir
Kami menggabungkan semua kepala perhatian kembali menjadi satu penyerapan.
output = output.transpose(1, 2)
output = output.contiguous().view(batch_size, sequence_length, embedding_dim)Bentuk output yang digabungkan adalah:
(2,4,8)
Satu lapisan linear terakhir mencampurkan maklumat di antara kepala.
W_o = nn.Linear(embedding_dim, embedding_dim)
final_output = W_o(output)Tensor output akhir mempunyai bentuk:
(2,4,8)
Ini sepadan dengan dimensi pengembedding asal dan boleh dihantar ke lapisan Transformer seterusnya.
Menggunakan MultiHeadAttention Terbina Dalam PyTorch
PyTorch juga menyediakan pelaksanaan terbina dalam yang mengendalikan langkah-langkah ini secara dalaman.
mha = nn.MultiheadAttention(
embed_dim=embedding_dim,
num_heads=num_heads,
batch_first=True
)
output, attention_weights = mha(x, x, x)Di sini, output mempunyai bentuk (2, 4, 8), dan attention_weights mempunyai bentuk (2, 2, 4, 4) apabila average_attn_weights=False.
Apa Itu Perhatian Pelbagai Kepala Bersuai?
Perhatian Multi-Kepala Bertopeng adalah bentuk perhatian khas yang digunakan apabila model tidak boleh melihat perkataan masa depan.
Dalam bahasa mudah:
Perhatian Pelbagai Kepala Bertopeng menghalang sesuatu perkataan daripada melihat ke hadapan dalam ayat.
Ini adalah penting untuk model penjanaan teks seperti GPT, di mana model meramalkan perkataan seterusnya satu langkah pada satu masa.
Apabila menjana teks, model sepatutnya berkelakuan seperti seorang manusia yang menulis ayat. Pada bila-bila masa, anda hanya boleh menggunakan perkataan yang lalu, bukan perkataan masa depan. Jika model boleh melihat perkataan masa depan semasa latihan, ia akan menipu. Penyembunyian memastikan model belajar meramalkan perkataan seterusnya hanya menggunakan apa yang telah muncul sebelumnya.
Perhatian pelbagai kepala bermaksud menjalankan beberapa mekanisme perhatian secara selari supaya model dapat menangkap pelbagai jenis hubungan, seperti tatabahasa, makna, atau penekanan. Penutup bermaksud menyembunyikan perkataan masa depan supaya model tidak boleh menipu dengan melihat maklumat yang sepatutnya belum wujud.
Topeng itu adalah matriks segitiga:
Ini memastikan posisi masa depan disekat semasa pengiraan skor perhatian.
Setiap kepala perhatian terlebih dahulu mengira skor perhatian menggunakan pertanyaan dan kunci. Sebelum softmax diterapkan, topeng ditambahkan ke skor ini. Topeng memberikan nilai negatif yang sangat besar kepada posisi masa depan, menjadikan kebarangkalian softmax mereka sifar.
Proses ini diulang secara bebas untuk setiap kepala. Selepas itu, semua output kepala digabungkan dan dihantar melalui lapisan linear untuk menghasilkan output akhir.
Idea utama adalah bahawa penutup berlaku sebelum softmax dan secara bebas di setiap kepala.
Soalan Lazim
Mengapa perhatian berbilang kepala membahagikan pembenaman kepada dimensi yang lebih kecil?
Membahagikan penyerapan membolehkan setiap kepala perhatian beroperasi dalam subruang yang berbeza. Ini menghalang kepala daripada mempelajari corak yang sama dan menggalakkan kepelbagaian dalam hubungan yang ditangkap oleh setiap kepala.
Mengapa softmax digunakan dalam perhatian dan bukannya kaedah penormalan lain?
Softmax menukar skor kesamaan menjadi kebarangkalian yang jumlahnya sama dengan satu, menjadikan berat perhatian lebih mudah difahami dan stabil. Ia memastikan token yang lebih relevan menerima berat yang lebih tinggi sementara token yang kurang relevan menyumbang secara minimum.
Apa yang berlaku jika faktor penskalaan dikeluarkan daripada perhatian?
Tanpa penyesuaian skala, nilai hasil titik boleh menjadi besar apabila dimensi meningkat. Ini mendorong softmax ke kawasan tepu di mana kecerunan sangat kecil, memperlahankan pembelajaran dan menjejaskan prestasi model.
Adakah perhatian pelbagai kepala boleh ditafsirkan?
Sehingga tahap tertentu, ya. Berat perhatian boleh divisualisasikan untuk menunjukkan token mana yang mempengaruhi yang lain. Walau bagaimanapun, tafsiran menjadi lebih sukar apabila model menjadi lebih besar dan kepala berinteraksi dengan cara yang kompleks.
Mengapa perhatian kepala berganda berskala dengan buruk untuk urutan yang panjang?
Perhatian mengira interaksi berpasangan antara semua token, menghasilkan kerumitan masa dan memori yang kuadratik. Ini menjadikan pemprosesan urutan panjang mahal, mendorong penggunaan varian yang efisien seperti perhatian jarang dan FlashAttention.
Kesimpulan
Perhatian berbilang kepala memperluas mekanisme perhatian asas dengan membolehkan model memberi tumpuan kepada pelbagai aspek input secara selari. Melalui kepala perhatian yang berasingan, ia menangkap pelbagai hubungan yang tidak dapat diwakili secara berkesan oleh mekanisme perhatian tunggal. Dengan penskalaan yang stabil, pengiraan selari, dan pemodelan kontekstual yang kaya, perhatian berbilang kepala telah menjadi asas penting bagi seni bina pembelajaran mendalam moden. Memahami mekanisme ini memberikan pandangan mendalam tentang bagaimana model AI paling berkuasa pada hari ini memproses dan menganalisis data yang kompleks.
Sumber
- Perhatian Adalah Segalanya yang Anda Perlukan
- Panduan Mesra Pemula Mengenai Transformer
- Regresi vs Transformer: Perbezaan Utama dan Bila Menggunakan Setiap Model
- Vision Transformers (ViTs): Visi Komputer dengan Model Transformer
- Panduan Komprehensif kepada Seni Bina Transformer Latent Byte
Terima kasih kerana belajar bersama Komuniti Linux-Console.net.












