Kursus Matematika untuk AI · Pelajaran 41 dari 180
Hasil Kali Dalam Mengukur Keselarasan dalam Attention
Hitung hasil kali titik, pahami tanda dan besarnya secara geometris, lalu lihat bagaimana skor query-key menjadi bobot attention.
Saat Transformer membandingkan query milik satu token dengan key milik token lain, perhitungannya adalah hasil kali titik. Satu angka ini membantu menentukan seberapa banyak informasi yang diambil dari value milik key tersebut. Untuk vektor real, tandanya dapat menunjukkan apakah dua vektor secara umum mengarah ke sisi yang sama atau berlawanan, sedangkan besarnya juga bergantung pada panjang masing-masing. Memisahkan kedua pengaruh ini membuat skor attention lebih mudah dipahami.
Di akhir pelajaran, Anda akan dapat menghitung hasil kali dalam, menafsirkan tanda dan besarnya dalam geometri Euclidean yang lazim, serta menelusuri skor query-key melalui penskalaan dan softmax.
Tujuan pembelajaran: Menghitung hasil kali dalam dan menghubungkan tanda serta besarnya dengan keselarasan.
Pelajaran ini dibangun di atas jumlah berbobot vektor dari Pelajaran 017. Bagian 3.2 dari Mathematics for Machine Learning memperkenalkan hasil kali dalam sebagai cara untuk memahami panjang, sudut, dan ortogonalitas. Contoh numerik, penelusuran attention, visualisasi, dan asesmen di sini adalah karya orisinal.
Kalikan koordinat yang bersesuaian untuk mengukur keselarasan
Untuk dua vektor real dengan jumlah koordinat yang sama, dan , hasil kali titik didefinisikan sebagai
Pasangkan koordinat pertama lalu kalikan, kemudian jumlahkan hasil kali dari semua pasangan koordinat. Hasilnya adalah sebuah skalar. Hasil kali titik merupakan salah satu jenis hasil kali dalam; secara lebih umum, hasil kali dalam adalah aturan bernilai real pada pasangan vektor yang linear terhadap setiap masukan, simetris, dan bernilai positif ketika vektor nonnol dipasangkan dengan dirinya sendiri. Di sini kita menggunakan hasil kali titik standar pada .
Sebagai contoh konkret, ambil dan . Maka
Skor positif ini sesuai dengan gambarnya: kedua vektor mengarah ke bagian bidang yang sama. Panjang Euclidean keduanya adalah . Karena kedua vektor tidak nol dan geometrinya adalah Euclidean real biasa, sudut di antara keduanya memenuhi
Jadi, hasil kali titik bukan sekadar perbandingan arah. Nilai ini menggabungkan arah dengan panjang kedua vektor. Nilai kosinus mengisolasi keselarasan arah dengan membagi panjang-panjang tersebut; besaran ternormalisasi ini disebut kemiripan kosinus dan akan dibahas pada pelajaran berikutnya.
- Vektor query: q = (2, 1)
- Arah key: k = (1, 2)
- Vektor proyeksi: projₖ(q)
- Sisa tegak lurus: q − projₖ(q)
q · k = 2(1) + 1(2) = 4
projₖ(q) = (4/5)k = (0.8, 1.6)
Proyeksi skalar bertanda: 4/√5 ≈ 1.79
Proyeksi menunjukkan bagian yang mengarah sepanjang vektor lain
Memproyeksikan ke arah vektor tak nol berarti bertanya: seberapa banyak bagian yang berada sepanjang ? Panjang skalarnya yang bertanda adalah
Tandanya dipertahankan: hasil negatif berarti komponennya mengarah berlawanan dengan . Untuk contoh kita, . Vektor proyeksinya adalah panjang skalar itu dikalikan dengan vektor satuan searah :
Vektor sisanya adalah . Periksa bahwa vektor ini tegak lurus terhadap :
Dekomposisi ini menjelaskan geometrinya: hasil kali titik mengukur besaran bertanda sepanjang setelah memperhitungkan panjang itu sendiri, sedangkan sisa yang tegak lurus tidak berkontribusi pada hasil kali tersebut.
Untuk vektor real tak nol dalam koordinat Euclidean standar, hasil kali dalam positif berarti sudutnya di bawah , nilai nol berarti vektornya tegak lurus, dan hasil kali negatif berarti sudutnya di atas . Vektor nol adalah kasus batas: hasil kali titiknya dengan setiap vektor bernilai nol, tetapi vektor nol tidak memiliki arah sehingga tidak ada sudut yang dapat ditafsirkan. Secara lebih umum, pernyataan tentang sudut ini mengasumsikan hasil kali dalam Euclidean real yang lazim. Hasil kali dalam lain dapat menentukan geometri yang berbeda.
Attention menggunakan skor sebelum mengubahnya menjadi bobot
Dalam attention, query menggambarkan apa yang dicari suatu posisi, sedangkan setiap key menggambarkan apa yang dapat dicocokkan dari posisi lain. Proyeksi yang dipelajari menghasilkan vektor query dan key dari representasi token. Makalah Transformer asli menjelaskan kompatibilitasnya sebagai hasil kali titik, lalu membagi setiap skor dengan , dengan sebagai jumlah koordinat pada setiap query dan key. Softmax pada key yang diizinkan mengubah skor berskala itu menjadi bobot bagi vektor value terkait (Vaswani dkk., Attention Is All You Need).
Untuk satu query dan matriks key , skornya setelah diskalakan adalah . Jika hanya ada satu query, setiap entri merupakan satu skor query-key. Dengan beberapa query, perkalian matriks menghitung banyak skor seperti ini sekaligus. Setelah itu, softmax diterapkan sepanjang posisi-posisi key untuk setiap query, dan bobotnya membentuk jumlah berbobot dari value.
Coba contoh kecil dengan , , dan . Kedua key memiliki dimensi :
Hasil kali titik dan adalah skor kompatibilitas mentah. Setelah diskalakan, dan adalah logit. Nilai dan adalah bobot softmax; tanpa dropout, jumlahnya satu pada dua key yang tidak dimask. Ketiganya saling terkait tetapi merupakan besaran yang berbeda. Untuk query ini, bobot tersebut membentuk distribusi ternormalisasi, tetapi bukan probabilitas terkalibrasi bahwa setiap key relevan secara semantik. PyTorch scaled_dot_product_attention mengikuti urutan ini: kalikan query dengan key yang ditranspos, terapkan skala, tambahkan mask jika ada, terapkan softmax, lalu kalikan bobot dengan value. Skala default-nya adalah .
Skala ini bukan normalisasi kosinus. Nilai tersebut membagi dengan faktor yang bergantung pada dimensi, bukan panjang query dan key masing-masing. Makalah Transformer menjelaskan bahwa, dengan asumsi yang dinyatakan di sana—koordinat query dan key saling independen, bernilai tengah nol, dan bervarians satu—hasil kali titik yang belum diskalakan memiliki varians . Membaginya dengan menjaga rentang skor agar tidak bertambah seiring dimensi menurut asumsi tersebut. Langkah ini tidak memaksa setiap query dan key memiliki panjang satu atau menjadikan skor sebagai kemiripan kosinus.
Pisahkan besarnya skor dari keselarasan arah
Hasil kali titik positif yang besar dapat muncul karena arah yang sangat selaras, vektor yang panjang, atau keduanya. Misalnya, memiliki kemiripan kosinus , sedangkan memiliki kemiripan kosinus . Skor mentah yang sama tidak berarti sudutnya sama. Demikian pula, mengalikan sebuah vektor dengan skalar positif memperbesar hasil kali titik tanpa mengubah arahnya; mengalikannya dengan membalik tanda dan arahnya.
Dalam attention head, panjang query dan key dipelajari sebagai bagian dari representasi model. Skor digunakan sebagai logit kompatibilitas, lalu softmax membandingkannya dengan skor lain yang tersedia untuk query tersebut. Skor ini bukan probabilitas tersendiri ataupun ukuran universal kemiripan semantik. Jika suatu sistem menormalisasi setiap vektor tak nol menjadi panjang satu, skornya berubah menjadi kemiripan kosinus dan pengaruh besar masing-masing vektor dihilangkan. Cara ini dapat berguna untuk tugas seperti membandingkan embedding dokumen, tetapi operasinya berbeda dari scaled dot-product attention standar di atas.
Anda dapat memeriksa aritmetikanya dengan NumPy:
import numpy as np
q = np.array([2.0, 1.0])
k = np.array([1.0, 2.0])
dot = np.dot(q, k)
scalar_projection = dot / np.linalg.norm(k)
vector_projection = dot / np.dot(k, k) * k
cosine_similarity = dot / (np.linalg.norm(q) * np.linalg.norm(k))
print(dot) # 4.0
print(scalar_projection) # 1.7888543819998317
print(vector_projection) # [0.8 1.6]
print(cosine_similarity) # 0.8
Perkalian yang sama kini dapat dibaca dalam dua konteks: sebagai ukuran geometris keselarasan bertanda dan sebagai skor kompatibilitas untuk membandingkan query dengan key. Langkah berikutnya adalah membaca hasil kali titik sebagai skor berbobot fitur, tempat setiap koordinat memberi kontribusi bertandanya sendiri.
Uji pemahaman
Question 1
Show the step-by-step solution
Hitung . Apa arti tandanya bagi sudut antara kedua vektor tak nol ini dalam ruang Euclidean real standar?
Kalikan koordinat yang bersesuaian lalu jumlahkan:
Hasil kali titiknya negatif. Untuk dua vektor real tak nol dengan hasil kali dalam Euclidean standar, hasil kali negatif berarti sudutnya lebih dari . Nilai tersebut tidak menentukan sudut tepat tanpa menggunakan panjang vektornya juga.
Question 2
Show the step-by-step solution
Untuk dan , hitung dan kosinus sudut di antara keduanya.
Hasil kalinya adalah
Panjang keduanya adalah , sehingga rumus sudut Euclidean memberikan
Hasil kali titiknya ; kemiripan kosinusnya . Keduanya bukan besaran yang sama.
Question 3
Show the step-by-step solution
Proyeksikan ke . Cari panjang skalar bertanda dan vektor proyeksinya.
Pertama, dan . Proyeksi skalar bertanda adalah
Untuk proyeksi vektornya, bagi hasil kali titik dengan lalu kalikan dengan :
Question 4
Show the step-by-step solution
Hasil kali titik standar dari dua vektor real tak nol adalah nol. Apa yang dapat disimpulkan, dan kehati-hatian tambahan apa yang diperlukan jika salah satu vektor adalah nol?
Untuk vektor tak nol dalam ruang Euclidean, . Karena kedua panjangnya positif, hasil kali nol mengharuskan , sehingga kedua vektor tegak lurus. Jika salah satu vektor adalah nol, hasil kalinya tetap nol, tetapi vektor nol tidak memiliki arah dan tidak membentuk sudut dengan vektor lain.
Question 5
Show the step-by-step solution
dan sama-sama bernilai . Mengapa hasil kali yang sama tidak menunjukkan keselarasan arah yang sama?
Pasangan pertama mengarah tepat ke arah yang sama, jadi kemiripan kosinusnya . Pada pasangan kedua, panjang masing-masing vektor adalah , jadi kemiripan kosinusnya . Kedua hasil kali kebetulan bernilai , tetapi panjang vektor pada kedua pasangan berbeda. Hasil kali titik mentah menggabungkan panjang dan arah, sehingga tidak dapat menentukan sudut dengan sendirinya.
Question 6
Show the step-by-step solution
Untuk , , dan , hitung skor mentah, logit berskala, dan bobot softmax untuk . Key mana yang memperoleh bobot lebih besar?
Hasil kali titiknya adalah dan . Membaginya dengan menghasilkan logit sekitar dan . Softmax memberikan
Key menerima bobot lebih besar. Bobot softmax berjumlah satu pada dua posisi yang tidak dimask ini, sedangkan hasil kali titik dan logit berskala adalah skor, bukan probabilitas.
Question 7
Show the step-by-step solution
Anggap query attention adalah vektor nol dan ada dua key yang tidak dimask. Dalam perhitungan softmax biasa dengan dropout dinonaktifkan, bobot apa yang dihasilkan? Apakah sudut antara query dan masing-masing key terdefinisi?
Query nol memiliki hasil kali titik nol dengan setiap key. Penskalaan mempertahankan kedua logit pada nol, sehingga
Karena itu, kedua key menerima bobot yang sama. Sudutnya tidak terdefinisi karena query nol tidak memiliki arah. Skor yang sama di sini tidak berarti query secara geometris selaras dengan salah satu key.
Question 8
Show the step-by-step solution
Sebuah implementasi mengganti setiap hasil kali titik query-key dengan kemiripan kosinus sebelum softmax. Apa yang berubah untuk dan , dan mengapa ini tidak sama dengan skala attention standar?
Hasil kali titik mentahnya adalah . Panjang kedua vektor adalah , sehingga kemiripan kosinusnya . Normalisasi kosinus membagi dengan panjang setiap vektor dan menghilangkan pengaruh besar vektor dari skor. Sebaliknya, scaled dot-product attention standar membagi dengan , faktor yang sama untuk semua vektor dalam dimensi head tersebut. Skala standar tetap mempertahankan pengaruh besarnya vektor pada logit dan bukan kemiripan kosinus.