Kursus Matematika untuk AI · Pelajaran 16 dari 180
Perkalian Skalar untuk AI: Memperbesar, Memperkecil, atau Membalik Vektor
Skalakan vektor per koordinat, prediksi arah dan magnitudo, lalu hubungkan operasi yang sama dengan embedding, laju pembelajaran, dan NumPy.
Vektor arah dapat menunjukkan ke mana pembaruan model harus bergerak tanpa menunjukkan seberapa besar perpindahannya. Satu angka memasok keputusan kedua itu. Jika arahnya , mengalikannya dengan menghasilkan perpindahan yang lebih pendek, . Mengalikannya dengan mempertahankan panjangnya, tetapi mengarahkannya ke sisi sebaliknya.
Angka itu adalah skalar: satu nilai yang diterapkan pada setiap koordinat. Setelah menyelesaikan pelajaran ini, Anda akan mampu menghitung hasil kali skalar–vektor, memprediksi arah dan magnitudonya dari tanda serta nilai mutlak skalar, mengimplementasikannya dengan benar di NumPy, dan mengenali mekanisme yang sama dalam pembaruan berskala laju pembelajaran atau kontribusi embedding berbobot.
Hasil pembelajaran: Skalakan sebuah vektor dan prediksi perubahan arah serta magnitudonya.
Pelajaran 15: Penjumlahan Vektor untuk AI menjelaskan bahwa vektor digabungkan dengan menjumlahkan koordinat yang bersesuaian. Perkalian skalar menyiapkan salah satu vektor itu sebelum penjumlahan: operasi ini mengendalikan seberapa kuat kontribusi vektor tersebut. Situs pendamping resmi Mathematics for Machine Learning memperkenalkan perkalian dengan skalar dalam Bagian 2.2 buku tersebut. Contoh, kode, sinar interaktif, aplikasi AI, dan asesmen di bawah ini adalah karya orisinal.
Satu angka menjangkau setiap koordinat
Misalkan adalah vektor real dengan koordinat , dan adalah skalar real. Huruf Yunani (alpha) hanyalah nama untuk satu angka; simbol seperti , , atau dapat menjalankan peran yang sama.
Operasi ini mempertahankan dimensi dan urutan koordinat vektor. Skalar tidak menambahkan koordinat, memilih satu koordinat, atau mencampur koordinat yang berdekatan. Skalar mengubah semua nilai melalui aturan perkalian yang sama.
Skala negatif membalik setiap koordinat tak nol
Ambil vektor pembaruan
dan pilih . Simbol menamai keseluruhan pembaruan tiga koordinat. Gunakan definisinya, bukan mencoba menebak jawaban hanya dari tanda minus.
Perhitungan ini memisahkan dua efek. Nilai mutlak—jarak skalar dari nol—adalah , sehingga ukuran vektor menjadi 1,5 kali ukuran semula. Tanda negatif membalik arahnya. Tidak satu pun dari kedua efek ini mengubah fitur atau parameter yang direpresentasikan oleh setiap koordinat.
Tanda memilih sinar; nilai mutlak memilih jangkauan
Dalam dua dimensi, gambarkan sebagai panah dari titik asal. Setiap kelipatan skalar tak nol berada pada garis tak berhingga yang sama melalui panah tersebut. Skalar positif berada pada sinar yang sama, skalar negatif pada sinar berlawanan, dan nol meruntuhkan panah ke titik asal.
Dalam pelajaran ini, magnitudo berarti panjang panah Euclidean. Untuk , definisikan
Subskrip 2 membedakan aturan panjang ini dari aturan magnitudo lain yang akan dibahas di pelajaran berikutnya. Perkalian skalar mengubah magnitudo ini dengan faktor , bukan :
Nilai mutlak penting karena magnitudo tidak boleh negatif. Tanda berkaitan dengan arah; nilai mutlak berkaitan dengan ukuran.
| Skalar | Arah untuk | Magnitudo |
|---|---|---|
| Arah sama | Lebih panjang dengan faktor | |
| Arah sama | Tidak berubah | |
| Arah sama | Lebih pendek dengan faktor | |
| Tidak ada arah: hasilnya | Nol | |
| Arah berlawanan | Lebih pendek dengan faktor | |
| Arah berlawanan | Tidak berubah | |
| Arah berlawanan | Lebih panjang dengan faktor |
Seret skalar di bawah melalui ketujuh kasus. Vektor tetapnya adalah , dengan magnitudo . Panah berskala, kalimat status, dan tabel semuanya dimulai dari keadaan yang dirender server, , lalu diperbarui bersama setelah komponen terlihat.
Gaya garis dan teks membedakan panah tanpa mengandalkan warna. Saat α = 0, cincin putus-putus di titik asal menggantikan panah berskala karena vektor nol tidak memiliki arah.
| Vektor | Skala | Koordinat pertama | Koordinat kedua | Magnitudo Euclidean | Arah relatif terhadap v |
|---|---|---|---|---|---|
| Vektor dasar v — panah solid | +1 | +4 | -3 | 5 | arah referensi |
| Vektor berskala αv — panah putus-putus | +1,5 | +6 | -4,5 | 7,5 | sama dengan v |
Gambar ini hanya dua dimensi, tetapi aturannya tidak demikian. Dalam embedding dengan 768 koordinat, satu skalar tetap mengalikan seluruh 768 koordinat, dan magnitudo tetap berubah sebesar menurut aturan panjang Euclidean.
Menskalakan sebelum menjumlahkan mengendalikan sebuah kontribusi
Perkalian skalar sangat berguna di samping penjumlahan vektor. Misalkan model memiliki keadaan konteks
dan kontribusi embedding kandidat
Dengan bobot , skalakan dahulu lalu jumlahkan:
Bobot mengubah seberapa kuat berkontribusi pada jumlah ini. Bobot menghapus kontribusi tersebut; bobot negatif berkontribusi ke arah berlawanan. Inilah makna aritmetika yang tepat dari “kekuatan embedding”. Hal ini tidak menjamin keluaran jaringan saraf lengkap akan berubah sebanding langsung dengan : transformasi, normalisasi, dan operasi nonlinier berikutnya dapat mengubah efek hilirnya.
Aturan distributif menjelaskan mengapa penskalaan sinyal gabungan dapat dihitung sebelum atau sesudah bagian-bagiannya dijumlahkan:
Pada koordinat , kedua sisi sama-sama bernilai . Karena setiap koordinat sama, kedua vektor tersebut sama. Aturan pendamping akan membantu menggabungkan beberapa vektor berbobot secara efisien di pelajaran berikutnya.
Laju pembelajaran menskalakan arah yang diusulkan optimizer
Pertimbangkan langkah stochastic gradient descent (SGD) paling sederhana, tanpa momentum atau weight decay. Misalkan adalah vektor parameter dan adalah vektor gradien yang menunjuk ke arah kenaikan loss. Laju pembelajaran positif menskalakan arah sebelum pengurangan:
Kalkulus yang diperlukan untuk menghitung akan muncul nanti dalam kursus; untuk saat ini, anggap ia sebagai vektor yang sudah diberikan dan periksa skalanya secara langsung.
Ini adalah perkalian skalar yang diikuti penjumlahan vektor . Dokumentasi PyTorch SGD saat ini menyatakan langkah parameter akhirnya dalam bentuk ini, setelah modifikasi apa pun pada arah pembaruan akibat weight decay, momentum, atau Nesterov yang dikonfigurasi. Klaim yang sempit ini penting: bila opsi tersebut diaktifkan, laju pembelajaran dapat menskalakan arah yang sudah dimodifikasi, bukan gradien mentah yang belum disentuh.
Untuk langkah numerik kecil, misalkan
Maka
Mengganti dengan akan menggandakan magnitudo pembaruan yang diusulkan kali ini, sambil mempertahankan arahnya. Fakta aritmetika itu sendiri tidak mengatakan apakah laju pembelajaran yang lebih besar akan memperbaiki pelatihan atau tetap stabil; pertanyaan tersebut bergantung pada permukaan loss dan perilaku optimizer, dan termasuk dalam modul optimasi berikutnya.
NumPy mengalikan array; list Python mengulang
multiply milik NumPy mengalikan argumen secara elementwise, dan * adalah singkatan operatornya untuk array. Aturan broadcasting NumPy memungkinkan satu skalar berlaku pada array tanpa membuat array penuh berisi skalar yang diulang.
import numpy as np
vector = np.array([4.0, -3.0, 2.0])
alpha = -1.5
scaled_with_operator = alpha * vector
scaled_with_function = np.multiply(alpha, vector)
print("vector shape:", vector.shape)
print("operator result:", scaled_with_operator)
print("function result:", scaled_with_function)
print("same values:", np.array_equal(
scaled_with_operator, scaled_with_function
))
Output yang telah diverifikasi adalah
vector shape: (3,)
operator result: [-6. 4.5 -3. ]
function result: [-6. 4.5 -3. ]
same values: True
List Python biasa mengubah makna *. Dokumentasi sequence Python mendefinisikan perkalian dengan bilangan bulat sebagai pengulangan:
coordinates = [4.0, -3.0, 2.0]
print(2 * coordinates)
print(2 * np.array(coordinates))
[4.0, -3.0, 2.0, 4.0, -3.0, 2.0]
[ 8. -6. 4.]
Hasil pertama memiliki enam entri dan bukan . Konversikan koordinat numerik menjadi array NumPy sebelum memakai aritmetika array. Nilai non-integer seperti 0.5 * coordinates menimbulkan TypeError, bukan menskalakan entri.
Skalar kini memiliki dua tugas: tandanya memilih apakah vektor tak nol mempertahankan atau membalik arah, sedangkan nilai mutlaknya mengendalikan magnitudo. Setelah beberapa vektor berskala seperti itu dijumlahkan, perkalian skalar dan penjumlahan vektor menjadi kombinasi linear—konstruksi yang akan digunakan pada pelajaran berikutnya.
Uji pemahaman
Pertanyaan 1
Misalkan v = [−2, 5, 1]ᵀ dan α = 3. Hitung αv per koordinat, lalu nyatakan dimensinya dan arahnya relatif terhadap v.
Tampilkan solusi langkah demi langkah
Terapkan skalar yang sama pada setiap dari tiga koordinat:
Jadi
Dimensinya tetap tiga. Karena positif, hasilnya mengarah sama dengan vektor asal yang tak nol; magnitudonya tiga kali magnitudo asal.
Pertanyaan 2
Untuk v = [6, 8]ᵀ, hitung −0.5v dan bandingkan magnitudo Euclidean serta arahnya dengan v.
Tampilkan solusi langkah demi langkah
Skalakan koordinat terlebih dahulu:
Magnitudo asal adalah . Hasilnya memiliki
Magnitudonya setengah dari semula karena . Arahnya berlawanan karena skalarnya negatif.
Pertanyaan 3
Seorang siswa berkata bahwa 0v mengarah sama dengan v karena nol bukan negatif. Diagnosis klaim itu dan hitung 0v untuk v = [7, −2]ᵀ.
Tampilkan solusi langkah demi langkah
Perkalian per koordinat memberikan
Aturan tanda memiliki tiga kasus, bukan dua: skalar positif mempertahankan arah dan skalar negatif membaliknya. Nol meruntuhkan setiap koordinat menjadi vektor nol, yang panahnya tidak memiliki panjang dan karena itu tidak memiliki arah. Penalaran siswa keliru karena memperlakukan nol sebagai skalar positif.
Pertanyaan 4
Mulai dari rumus magnitudo Euclidean, tunjukkan mengapa ‖αv‖₂ menggunakan |α| alih-alih α untuk v = [v₁, v₂]ᵀ.
Tampilkan solusi langkah demi langkah
Substitusikan dua koordinat berskala ke definisi magnitudo:
Untuk skalar real, . Menulis tanpa nilai mutlak akan secara keliru menghasilkan magnitudo negatif ketika .
Pertanyaan 5
Sebuah konteks adalah c = [2, 0, −1]ᵀ dan kontribusi embedding adalah e = [−2, 4, 2]ᵀ. Dengan α = 0.25, hitung c + αe dan jelaskan tepat apa yang dikendalikan α.
Tampilkan solusi langkah demi langkah
Skalakan kontribusinya sebelum menjumlahkannya:
Kemudian jumlahkan koordinat yang bersesuaian:
Skalar membuat kontribusi vektor embedding ini menjadi seperempat magnitudo asalnya sambil mempertahankan arahnya. Skalar itu mengendalikan bobot aritmetika dalam jumlah ini; dengan sendirinya, ia tidak menjamin perubahan yang sebanding pada keluaran setiap lapisan model berikutnya.
Pertanyaan 6
Untuk θ = [3, −1]ᵀ, gradien g = [2, 4]ᵀ, dan laju pembelajaran η = 0.1, hitung pembaruan SGD sederhana θnext = θ − ηg dalam tiga langkah eksplisit.
Tampilkan solusi langkah demi langkah
Pertama, skalakan gradien:
Kedua, balik arah berskala itu untuk langkah descent:
Ketiga, tambahkan pembaruan ke parameter:
Perhitungan ini mengasumsikan pembaruan biasa yang ditampilkan dalam soal. Momentum, weight decay, atau aturan optimizer lain dapat mengubah arah sebelum langkah parameter yang diskalakan oleh laju pembelajaran.
Pertanyaan 7
Mengapa 3 * [1, −2] gagal menghitung kelipatan skalar [3, −6] di Python, dan ekspresi NumPy apa yang menjalankan operasi yang dimaksud?
Tampilkan solusi langkah demi langkah
[1, -2] adalah list Python, yaitu sebuah sequence. Perkalian dengan integer 3 mengulang sequence itu tiga kali:
3 * [1, -2]
# [1, -2, 1, -2, 1, -2]Hasilnya memiliki enam entri, sehingga tidak mungkin sama dengan vektor dua koordinat . Buat array NumPy numerik, lalu kalikan:
import numpy as np
3 * np.array([1, -2])
# array([ 3, -6])NumPy menerapkan 3 secara elementwise melalui broadcasting skalar, sesuai dengan definisi matematika.
Pertanyaan 8
Misalkan v = [2, −1]ᵀ. Verifikasi (2 + (−0.5))v = 2v + (−0.5)v dengan menghitung kedua sisi, lalu sebutkan propertinya.
Tampilkan solusi langkah demi langkah
Di sisi kiri, jumlahkan skalar terlebih dahulu:
Di sisi kanan, skalakan dua kali lalu jumlahkan:
Kedua jalur menghasilkan vektor yang sama. Ini adalah distributivitas penjumlahan skalar terhadap perkalian skalar: .