Kursus Matematika untuk AI · Pelajaran 17 dari 180
Kombinasi Linear untuk AI: Bagaimana Vektor Berbobot Membentuk Representasi Baru
Skalakan dan gabungkan vektor, periksa setiap koordinat dengan NumPy, dan lihat mengapa keluaran attention adalah bentuk khusus representasi berbobot.
Sistem AI sering memiliki beberapa vektor kandidat tetapi membutuhkan satu hasil. Memilih hanya satu kandidat akan membuang kandidat lainnya. Menjumlahkannya tanpa perubahan akan memberi setiap kandidat kekuatan yang sama. Kombinasi linear menyediakan operasi yang lebih fleksibel: skalakan setiap vektor dengan koefisiennya sendiri, lalu jumlahkan kontribusi yang sudah diskalakan.
Misalnya, dua vektor dapat mengodekan bagian konteks yang berbeda. Koefisien dan membuat kandidat pertama berkontribusi tiga kali lebih kuat daripada kandidat kedua. Hasilnya tetap satu vektor dalam sistem koordinat yang sama, siap untuk perhitungan berikutnya.
Di akhir pelajaran ini, Anda akan mampu membangun kombinasi linear koordinat demi koordinat, menafsirkan perubahan yang dibuat setiap koefisien, mengimplementasikan operasi dengan pemeriksaan bentuk di NumPy, serta mengenali kondisi tambahan yang mengubah kombinasi linear umum menjadi keluaran attention yang menyerupai rata-rata berbobot.
Hasil pembelajaran: Bangun dan tafsirkan jumlah berbobot dari beberapa vektor.
Pelajaran 16: Perkalian Skalar untuk AI menunjukkan bagaimana satu skalar mengendalikan kekuatan dan arah satu vektor. Pelajaran 15 memperkenalkan penjumlahan vektor. Pelajaran ini menggabungkan kedua operasi tersebut. Situs pendamping Mathematics for Machine Learning yang resmi menempatkan operasi skalar dan matriks di Bagian 2.2 dan mendefinisikan kombinasi linear di Bagian 2.5 buku tersebut. Kisah fitur, perhitungan, kode, visual, dan asesmen di bawah ini adalah karya orisinal.
Beri setiap kandidat koefisiennya sendiri
Misalkan adalah vektor. Notasi berarti setiap vektor memiliki koordinat real. Misalkan adalah koefisien bilangan real. Koefisien adalah skalar yang diberikan kepada satu vektor.
Menyebutnya “jumlah berbobot” menjelaskan aritmetika yang sama: koefisien adalah bobotnya. Namun, “bobot” di sini tidak selalu berarti parameter model yang dipelajari atau probabilitas. Perannya sekadar menskalakan satu kontribusi.
Semua vektor masukan harus berada dalam ruang vektor yang sama agar penjumlahannya bermakna. Dalam perhitungan array, itu biasanya berarti bentuk yang sama dan makna koordinat yang sama. Vektor dua koordinat untuk [temperature, humidity] tidak dapat dijumlahkan secara bermakna dengan vektor dua koordinat untuk [height, age] hanya karena keduanya berbentuk (2,).
Lacak dua kontribusi sampai ke hasil
Misalkan sebuah representasi kecil menggunakan koordinat [topic, urgency]. Dua vektor kandidatnya adalah
Pilih koefisien dan . Kombinasi linear yang diminta adalah .
Contoh ini juga menunjukkan bahwa “koefisien lebih besar” tidak sama dengan “koordinat akhir lebih besar”. Koefisien menskalakan seluruh vektor. Tanda dan ukuran setiap koordinat vektor tetap menentukan apakah kontribusi tersebut menaikkan atau menurunkan koordinat hasil yang bersesuaian.
Aturan komponen menjelaskan operasi ini
Tuliskan vektor masukan berdasarkan koordinatnya:
Simbol berarti koordinat dari vektor . Penskalaan dan penjumlahan bekerja koordinat demi koordinat, sehingga koordinat dari hasilnya adalah
Identitas inilah alasan resep dua langkah tersebut bekerja. Perkalian skalar membuat kontribusi menjadi . Kemudian penjumlahan vektor menjumlahkan semua koordinat pertama untuk memperoleh , semua koordinat kedua untuk memperoleh , dan seterusnya. Karena setiap perhitungan koordinat adalah perhitungan bilangan real, hasilnya kembali memiliki koordinat real.
Aturan yang sama memberi pemeriksaan aljabar yang berguna. Mengelompokkan ulang kontribusi tidak mengubah hasil karena penjumlahan bilangan real bersifat asosiatif. Mengurutkannya ulang juga tidak mengubah hasil karena penjumlahan bersifat komutatif:
Itu tidak berarti koefisien dapat ditukar antarvektor. Biasanya karena vektor yang berbeda menerima skala yang berbeda.
Pindahkan koefisien, bukan makna koordinat
Explorer ini menetapkan dan sambil membuka dan untuk diubah. Panah solid dan putus-putus menunjukkan dua kontribusi berskala dari titik asal. Salinan bergeser dari dimulai di ujung , yang memperlihatkan jalur penjumlahan. Panah hasil bertitik menghubungkan titik asal secara langsung ke jumlah keduanya.
Pola garis dan label membedakan semua panah tanpa bergantung pada warna. Panah putus-putus yang bergeser memiliki panjang dan arah yang sama dengan bv; memindahkan titik awalnya menunjukkan penjumlahan tanpa mengubah kontribusinya. Jika hasilnya nol, cincin bertitik menandai titik asal.
| Besaran | Koefisien | Vektor asli | Kontribusi berskala |
|---|---|---|---|
| Kandidat pertama u | +0,75 | (+3, +1) | (+2,25, +0,75) |
| Kandidat kedua v | +0,25 | (-1, +3) | (-0,25, +0,75) |
| Hasil r | Tidak berlaku | Tidak berlaku | (+2, +1,5) |
Pada keadaan awal yang dirender server, dan , sehingga panah bertitik berakhir di , sesuai dengan contoh yang dihitung. Atur satu koefisien menjadi nol dan kontribusinya menghilang. Gerakkan koefisien ke bawah nol dan panahnya berbalik. Atur kedua koefisien menjadi nol dan semua kontribusi runtuh menjadi vektor nol. Tidak satu pun perubahan itu mengganti nama atau mengurutkan ulang koordinat.
Kombinasi linear lebih luas daripada rata-rata
Beberapa istilah terkait menggunakan operasi skala-dan-jumlah yang sama, tetapi menerapkan aturan berbeda pada koefisien.
| Jenis kombinasi | Syarat koefisien | Konsekuensi geometris untuk dua titik masukan |
|---|---|---|
| Kombinasi linear | Dapat bergerak melalui seluruh garis atau bidang yang dibangkitkan oleh vektor | |
| Kombinasi afin | Tetap pada garis atau bidang afin melalui titik masukan, tetapi dapat memanjang melampauinya | |
| Kombinasi konveks | dan | Tetap di antara masukan atau di dalam selubung konveksnya |
Dalam pelajaran ini, rata-rata berbobot berarti bentuk umum dengan bobot nonnegatif yang dinormalisasi, sehingga merupakan kombinasi konveks. Beberapa bidang menggunakan istilah “weighted mean” dengan konvensi berbeda, yang harus dinyatakan secara eksplisit. Contoh awal memenuhi konvensi ini karena dan kedua koefisien nonnegatif. Sebaliknya, adalah kombinasi linear dan afin yang valid, tetapi bukan kombinasi konveks: koefisien negatifnya dapat membawa hasil melewati ruas garis di antara kedua vektor.
Vektor nol selalu dapat dicapai sebagai kombinasi linear dengan mengatur semua koefisien menjadi nol. Fakta itu tidak mengatakan bahwa masukan itu sendiri nol. Fakta itu hanya mengatakan bahwa operasi ini mengizinkan kombinasi trivial tanpa kontribusi aktif.
Attention menggunakan jumlah berbobot nilai yang dibatasi
Makalah Transformer asli mendefinisikan keluaran attention sebagai jumlah berbobot dari vektor nilai. Setiap vektor nilai adalah representasi kandidat dengan dimensi fitur yang sama. Mekanisme attention menghitung seberapa banyak setiap nilai berkontribusi untuk posisi saat ini, lalu melakukan kombinasi linear. Persamaan scaled dot-product attention dalam makalah tersebut menuliskan banyak jumlah seperti ini secara ringkas sebagai operasi matriks.
Untuk satu keluaran ilustratif, misalkan bobot attention yang sudah dihitung adalah , , dan , sementara vektor nilainya adalah
Maka representasi bergaya attention tersebut adalah
Dalam operasi attention pada makalah tersebut, normalisasi untuk menghasilkan bobot ini membuat bobotnya nonnegatif dan membuat setiap himpunan berjumlah satu. Karena itu, jumlah akhirnya merupakan kombinasi konveks dari vektor nilai untuk keluaran attention tersebut. Pembatasan itu adalah bagian dari mekanisme attention ini, bukan definisi kombinasi linear.
Pelajaran ini sengaja dimulai setelah bobot dihasilkan. Pelajaran ini belum mengajarkan query, key, skor kompatibilitas, normalisasi, banyak head, atau proyeksi keluaran berikutnya. Inti matematisnya lebih sempit: setelah koefisien dan vektor nilai yang kompatibel tersedia, attention membangun representasi dengan menskalakan setiap nilai dan menjumlahkan kontribusinya.
NumPy seharusnya menyingkap sumbu vektor
Simpan dua vektor kandidat sebagai baris dari satu array. Array vectors kemudian berbentuk (2, 2): dua vektor, masing-masing dengan dua koordinat. Array koefisien berbentuk (2,), satu koefisien untuk setiap vektor.
import numpy as np
vectors = np.array([
[3.0, 1.0], # u
[-1.0, 3.0], # v
])
coefficients = np.array([0.75, 0.25])
if vectors.ndim != 2:
raise ValueError("vectors must have shape (number_of_vectors, coordinates)")
if coefficients.shape != (vectors.shape[0],):
raise ValueError("need exactly one coefficient per vector")
scaled = coefficients[:, np.newaxis] * vectors
result = scaled.sum(axis=0)
print(scaled)
print(result)
Keluaran yang diverifikasi adalah
[[ 2.25 0.75]
[-0.25 0.75]]
[2. 1.5]
coefficients[:, np.newaxis] mengubah bentuk koefisien dari (2,) menjadi (2, 1). NumPy kemudian dapat menyiarkan satu koefisien ke setiap baris vektor. Aturan broadcasting resmi membandingkan dimensi array dari kanan dan mengizinkan dimensi yang cocok atau berukuran satu. Setelah perkalian, sum(axis=0) menjumlahkan sepanjang sumbu baris vektor dan mempertahankan dua kolom koordinat.
Menulis hanya coefficients * vectors juga berhasil untuk contoh ini: bentuk akhir (2,) dan (2, 2) kebetulan menyelaraskan kedua koefisien dengan kolom koordinat, sehingga NumPy mengembalikan array yang tampak masuk akal tetapi maknanya salah. Baris pertama menjadi [2.25, 0.25], bukan [2.25, 0.75]. Broadcasting yang berhasil bukan bukti bahwa sumbu koefisien sudah benar.
Kecocokan bentuk diperlukan tetapi masih belum cukup. Jika satu kandidat memiliki tiga koordinat dan kandidat lain memiliki dua, tidak ada array vectors persegi panjang biasa berisi nilai numerik yang dapat direduksi dengan cara ini. Jika keduanya memiliki dua koordinat tetapi menggunakan definisi fitur yang berbeda, kode tetap berjalan sementara hasilnya tetap tidak valid secara semantik. Periksa bentuk array dan makna koordinat.
Koefisien menjawab “seberapa banyak”, bukan “apa maknanya”
Tiga kebiasaan mencegah sebagian besar kesalahan:
- Pasangkan setiap koefisien dengan vektor tertentu sebelum menghitung.
- Skalakan vektor lengkap, lalu jumlahkan koordinat yang bersesuaian.
- Nyatakan aturan koefisien tambahan apa pun—seperti nonnegativitas atau jumlah satu—alih-alih menganggap frasa “jumlah berbobot” sudah mencakupnya.
Koefisien negatif bukan kesalahan dalam kombinasi linear umum. Koefisien itu membalik kontribusi. Koefisien yang lebih besar dari satu juga valid; koefisien tersebut dapat memperluas hasil melampaui panah masukan. Pembatalan dapat terjadi ketika kontribusi saling berlawanan, dan koefisien nol menghapus kandidat tanpa mengubah bentuk vektor.
Langkah kursus berikutnya yang aman terhadap prasyarat, Pelajaran 18, mengatur angka ke dalam matriks. Pelajaran 19 kemudian akan memperlihatkan hasil kali matriks–vektor sebagai beberapa jumlah berbobot. Simpan resep saat ini—pasangkan, skalakan, jumlahkan—di dekat Anda; notasi matriks akan memadatkannya, bukan menggantikannya. Halaman kursus Math for AI menjaga jalur berurutan dan prasyarat yang telah diterbitkan.
Uji pemahaman Anda
Pertanyaan 1
Misalkan u = [2, −1]ᵀ dan v = [4, 3]ᵀ. Hitung 1.5u − 0.5v dan tafsirkan tanda kontribusi kedua.
Tampilkan solusi langkah demi langkah
Pasangkan koefisien dengan vektornya, lalu skalakan sebelum menjumlahkan:
Sekarang jumlahkan koordinat yang bersesuaian:
Koefisien negatif membalik sebelum penjumlahan. Koefisien itu bukan berarti “hanya mengurangkan koordinat negatif”; setiap koordinat dikalikan dengan .
Pertanyaan 2
Klasifikasikan setiap pasangan koefisien untuk au + bv: (0.4, 0.6), (1.2, −0.2), dan (2, 1). Mana yang merupakan kombinasi linear, afin, atau konveks?
Tampilkan solusi langkah demi langkah
Setiap pasangan berisi koefisien real, sehingga ketiganya menghasilkan kombinasi linear.
- Untuk , koefisiennya berjumlah dan nonnegatif. Kombinasi ini sekaligus afin dan konveks.
- Untuk , koefisiennya juga berjumlah , sehingga merupakan kombinasi afin. Koefisien negatif mencegahnya menjadi konveks.
- Untuk , koefisiennya berjumlah , bukan . Kombinasi ini bukan afin maupun konveks, meskipun tetap merupakan kombinasi linear yang valid.
Klasifikasi bergantung pada batasan koefisien, bukan pada koordinat tertentu dari dan .
Pertanyaan 3
Di explorer, apa yang harus terjadi pada au ketika a berubah dari 0.75 menjadi 0 lalu menjadi −0.75 sementara u tetap?
Tampilkan solusi langkah demi langkah
Saat , kontribusinya adalah . Saat ,
sehingga kontribusi pertama runtuh ke titik asal dan tidak memiliki arah. Saat ,
Panah akhir memiliki panjang yang sama dengan kontribusi saat , tetapi menunjuk ke arah berlawanan. Vektor dan makna koordinatnya tidak berubah; hanya koefisiennya yang berubah.
Pertanyaan 4
Operasi bergaya attention menggunakan bobot (0.2, 0.5, 0.3) dengan nilai x₁ = [1, 2]ᵀ, x₂ = [3, 0]ᵀ, dan x₃ = [−1, 4]ᵀ. Hitung keluaran dan jelaskan mengapa ini merupakan kombinasi konveks.
Tampilkan solusi langkah demi langkah
Hitung ketiga kontribusinya:
Jumlahkan koordinat demi koordinat:
Ketiga bobot nonnegatif, dan . Dua fakta tersebut membuat jumlah berbobot ini menjadi kombinasi konveks dari vektor nilai. Itu adalah syarat tambahan dari pengaturan bergaya attention yang dinyatakan, bukan persyaratan untuk setiap kombinasi linear.
Pertanyaan 5
Seorang developer mencoba menggabungkan vektor berbentuk (3,) dan (2,). Mengapa ekspresinya tidak valid, dan mengapa mengisi vektor yang lebih pendek dengan nol tidak otomatis memperbaiki maknanya?
Tampilkan solusi langkah demi langkah
Penjumlahan vektor memerlukan koordinat yang cocok. Vektor berbentuk (3,) memiliki tiga posisi koordinat, sedangkan vektor berbentuk (2,) hanya memiliki dua, sehingga tidak ada koordinat ketiga dari vektor kedua untuk dijumlahkan. Ekspresi karena itu tidak terdefinisi dalam satu bersama sebagaimana ditulis.
Padding dengan nol menciptakan bentuk array yang cocok, tetapi secara diam-diam menciptakan klaim koordinat: padding itu menyatakan bahwa nilai fitur ketiga yang hilang dari vektor yang lebih pendek tepat nol. Hal tersebut hanya valid jika spesifikasi encoding mendefinisikan fitur ketiga yang sama dan mendefinisikan ketiadaan sebagai nol. Memperbaiki bentuk tidak dapat menggantikan makna koordinat yang kompatibel.
Pertanyaan 6
Mengapa coefficients * vectors dapat diam-diam membobot koordinat, bukan baris vektor, di NumPy? Perubahan bentuk eksplisit apa yang memperbaiki perhitungannya?
Tampilkan solusi langkah demi langkah
Dengan vectors.shape == (2, 2) dan coefficients.shape == (2,), NumPy membandingkan dimensi dari kanan. Panjang koefisien 2 cocok dengan dimensi koordinat terakhir 2, sehingga broadcasting menerapkan kedua angka pada kolom. Operasi berhasil, tetapi koefisien 1 membobot koordinat 1 dan koefisien 2 membobot koordinat 2.
Sisipkan dimensi koordinat berukuran satu:
scaled = coefficients[:, np.newaxis] * vectors
result = scaled.sum(axis=0)Sekarang coefficients[:, np.newaxis].shape == (2, 1). Dimensi pertama memasangkan satu koefisien dengan setiap baris vektor, dan dimensi berukuran satu menyiarkan koefisien tersebut ke setiap koordinat dalam barisnya. Kemudian penjumlahan pada sumbu 0 menjumlahkan baris yang telah diskalakan koordinat demi koordinat.
Pertanyaan 7
Tunjukkan secara koordinat demi koordinat bahwa a(u + v) = au + av untuk dua vektor u, v ∈ ℝ².
Tampilkan solusi langkah demi langkah
Tuliskan dan . Sisi kiri adalah
Sifat distributif bilangan real memberikan
Koordinat pertama sama dan koordinat kedua juga sama, sehingga kedua vektor tersebut sama. Argumen yang sama berlaku untuk sejumlah koordinat berhingga.
Pertanyaan 8
Sebuah model memiliki vektor u dan v yang kompatibel. Bandingkan r = 2u + 0v dengan mengonkatenasi u dan v. Informasi dan bentuk apa yang dihasilkan setiap operasi?
Tampilkan solusi langkah demi langkah
Kombinasi linear pertama-tama menskalakan lalu menjumlahkan:
Jika , hasilnya tetap berada di . Vektor tidak berkontribusi karena koefisiennya nol, sedangkan setiap koordinat menjadi dua kali lipat.
Konkatenasi tidak menjumlahkan koordinat yang bersesuaian. Konkatenasi menempatkan semua koordinat di samping semua koordinat , sehingga menghasilkan objek dengan koordinat. Konkatenasi mempertahankan kedua blok masukan dan mengubah bentuk; kombinasi linear menggabungkan kontribusi berskala ke ruang koordinat semula. Keduanya menjawab pertanyaan representasi yang berbeda.