Kursus Matematika untuk AI · Pelajaran 18 dari 180
Matriks untuk AI: Membaca Baris, Kolom, dan Bentuk Jaringan Saraf
Pelajari cara membaca dimensi dan elemen matriks, memetakan baris dan kolom ke peran lapisan padat, serta menemukan kesalahan bentuk atau indeks di NumPy.
Sebuah lapisan padat menerima tiga fitur dan menghasilkan dua nilai keluaran. Keenam bobotnya dapat disimpan dalam satu daftar panjang, tetapi daftar itu akan menyembunyikan fakta debugging yang paling berguna: setiap aturan keluaran memiliki tiga bobot. Susun angka yang sama dalam dua baris dan tiga kolom, maka strukturnya terlihat:
Bentuk matriks, , adalah kontrak ringkas. Angka pertama menghitung aturan keluaran; angka kedua menghitung fitur masukan yang digunakan setiap aturan. Sebelum melakukan perkalian apa pun, kisi ini sudah memberi tahu kita apa arti setiap sumbu dan di mana setiap bobot berada.
Pada akhir pelajaran ini, Anda akan dapat membaca dimensi matriks, menemukan suatu elemen dari dua indeksnya, menafsirkan baris dan kolom dalam matriks bobot lapisan padat, mengulangi pemeriksaan tersebut di NumPy, serta mendiagnosis array yang nilainya tampak masuk akal tetapi sumbunya menjalankan tugas yang keliru.
Hasil pembelajaran: Membaca dimensi matriks dan menafsirkan baris serta kolom.
Pelajaran 14: Vektor sebagai Data AI menjelaskan bahwa daftar koordinat berurutan dapat merepresentasikan satu masukan AI. Matriks menambahkan sumbu kedua agar beberapa daftar terkait dapat mempertahankan organisasi yang sama. Situs pendamping resmi Mathematics for Machine Learning mendefinisikan notasi matriks, baris, kolom, dan elemen dalam Bagian 2.2 buku tersebut. Skenario lapisan padat, angka, diagram, kode, penjelasan, dan penilaian di bawah ini adalah karya orisinal.
Sebuah persegi panjang membawa dua hitungan terpisah
Dua indeks memiliki tugas yang berbeda. Indeks pertama bergerak secara vertikal di antara baris; indeks kedua bergerak secara horizontal di antara kolom. Untuk
, , dan . Matriks tersebut memiliki elemen. Menjumlahkan dimensi, , kebetulan menghasilkan angka yang sama di sini, tetapi itu hanya kebetulan: matriks memiliki elemen, bukan .
Matriks tidak harus persegi. Matriks sama sahnya dengan matriks . Notasi juga tidak menentukan apa yang direpresentasikan suatu sumbu. Baris dapat berupa sampel dalam dataset, aturan keluaran dalam lapisan, atau langkah waktu dalam urutan. Kontrak data-lah yang memberikan maknanya.
Dua aturan keluaran menjadi matriks 2 × 3
Misalkan sebuah lapisan pemeringkatan kecil membaca tiga fitur masukan:
- : kecocokan topik;
- : keterkinian; dan
- : kualitas sumber.
Lapisan itu menyimpan satu koefisien untuk setiap fitur dalam masing-masing dari dua aturan keluaran:
Aturan pertama akan menghasilkan nilai relevansi; aturan kedua akan menghasilkan nilai prioritas peninjauan. Pelajaran ini belum menghitung nilai tersebut. Tugasnya adalah menata koefisien tanpa kehilangan masukan dan keluaran yang dihubungkan oleh masing-masing koefisien.
Konstruksi ini berhasil karena label baris dan kolom tetap stabil. Jika urutan fitur berubah menjadi [source quality, topic match, recency] sementara angkanya tetap, matriks masih memiliki bentuk dan nilai yang sama tetapi akan menggambarkan aturan yang berbeda.
| Aturan keluaran (baris) | Kecocokan topik (kolom 1) | Keterkinian (kolom 2) | Kualitas sumber (kolom 3) | Interpretasi baris |
|---|---|---|---|---|
| baris 1 · relevansi | 0.8 (w₁₁) | −0.4 (w₁₂) | 0.2 (w₁₃) | Tiga bobot yang terkait dengan keluaran relevansi. |
| baris 2 · prioritas peninjauan | 0.1 (w₂₁) | 0.6 (w₂₂) | ★ −0.5 (w₂₃) | Tiga bobot yang terkait dengan keluaran prioritas peninjauan; w₂₃ adalah −0.5. |
Elemen yang diberi garis dalam visual diidentifikasi dengan dua cara yang terpisah: bintang dan garis putus-putus menandainya secara visual, sedangkan label dan tabel menyatakan secara langsung. Baris 2 memilih aturan prioritas peninjauan. Kolom 3 memilih kualitas sumber. Perpotongan keduanya mengidentifikasi satu hubungan dalam lapisan.
Sebuah sel mencatat hubungan baris–kolom
Elemen bukan sekadar angka yang berdiri sendiri. Berdasarkan konvensi di atas, menjawab pertanyaan yang tepat:
Bobot mana yang menghubungkan fitur masukan dengan aturan keluaran ?
Jawabannya mengikuti indeks, bukan hanya warna atau posisi. Misalnya, termasuk dalam aturan keluaran 2 dan fitur masukan 1. Seluruh baris kedua,
menyimpan koefisien untuk satu keluaran. Seluruh kolom kedua,
mengumpulkan koefisien keterkinian dari kedua keluaran.
Interpretasi baris ini berlaku untuk konvensi bobot dalam pelajaran ini; bukan hukum universal bahwa setiap baris matriks berarti “keluaran”. Matriks dataset, misalnya, dapat menempatkan satu observasi pada setiap baris. Selalu nyatakan kontrak sumbu sebelum menalar dari suatu bentuk.
NumPy membuat kedua sumbu dapat diperiksa
NumPy merepresentasikan kisi ini sebagai ndarray dua dimensi. Properti shape mengembalikan tuple panjang sumbu. ndarray indexing dasar menggunakan indeks mulai dari nol, sehingga posisi Python 0 berpadanan dengan indeks matematika .
import numpy as np
weights = np.array([
[0.8, -0.4, 0.2],
[0.1, 0.6, -0.5],
], dtype=float)
print("shape:", weights.shape)
print("number of axes:", weights.ndim)
print("number of entries:", weights.size)
print("row 2:", weights[1, :])
print("column 3:", weights[:, 2])
print("w_23:", weights[1, 2])
Keluaran terverifikasi:
shape: (2, 3)
number of axes: 2
number of entries: 6
row 2: [ 0.1 0.6 -0.5]
column 3: [ 0.2 -0.5]
w_23: -0.5
Tanda baca pada indeks penting:
| Pilihan yang dimaksud | Deskripsi matematika | Ekspresi NumPy | Hasil |
|---|---|---|---|
| Satu elemen | baris 2, kolom 3 | weights[1, 2] | -0.5 |
| Satu baris | setiap kolom pada baris 2 | weights[1, :] | [0.1, 0.6, -0.5] |
| Satu kolom | setiap baris pada kolom 3 | weights[:, 2] | [0.2, -0.5] |
Titik dua berarti “ambil setiap posisi sepanjang sumbu ini.” Bilangan bulat menetapkan satu sumbu. Ini membentuk urutan debugging yang berguna: periksa bentuk keseluruhan, lalu satu baris, lalu satu kolom, dan akhirnya elemen tepat yang maknanya dipertanyakan.
Pemeriksaan bentuk sebaiknya menyandikan kontrak model, bukan sekadar mencetaknya:
expected_shape = (2, 3) # two outputs, three input features
if weights.shape != expected_shape:
raise ValueError(
f"expected {expected_shape}, got {weights.shape}; "
"check the output and input axes"
)
Pemeriksaan ini dapat menangkap array yang ditransposisikan. Pemeriksaan ini tidak dapat menangkap perubahan urutan fitur yang diam-diam terjadi karena [topic match, recency, source quality] dan [recency, source quality, topic match] sama-sama memiliki panjang tiga. Nama dan asal data harus melindungi kontrak semantik.
Lapisan padat memperlihatkan kontrak masukan dan keluarannya
Jika masukan ditulis sebagai vektor kolom , lapisan dapat diringkas sebagai
Ukuran yang bersebelahan memberi petunjuk operasi berikutnya:
Tiga koordinat masukan cocok dengan tiga kolom ; dua baris menghasilkan dua koordinat keluaran. Pelajaran 19 akan menghitung hasil kali matriks-vektor itu sebagai jumlah berbobot. Untuk saat ini, dimensi saja sudah mengungkapkan apakah objek yang diajukan cocok dengan konvensi ini.
Dokumentasi torch.nn.Linear saat ini menggunakan tata letak bobot tersimpan yang sama: lapisan dengan in_features=3 dan out_features=2 memiliki tensor bobot berbentuk (out_features, in_features), atau (2, 3). PyTorch biasanya menulis masukan berkelompok dengan fitur pada sumbu terakhir dan menyatakan operasinya sebagai . Notasi batch berorientasi baris itu menjelaskan transposisi yang tampak; notasi itu tidak mengubah kontrak bobot tersimpan dua baris kali tiga kolom.
Bias bukan kolom matriks ketiga dalam definisi ini. Bias adalah vektor dua koordinat terpisah, satu offset untuk setiap keluaran. Karena itu, lapisan yang menggunakan bias dalam contoh ini memiliki enam skalar bobot ditambah dua skalar bias.
Tiga jalan pintas bentuk menghasilkan model mental yang keliru
Ada pula batas perangkat lunak yang sering dibiarkan tersirat oleh notasi kelas biasa. Pelajaran ini menetapkan , sehingga setiap matriks memiliki setidaknya satu baris dan satu kolom. Namun NumPy tetap dapat membuat array berbentuk (0, 3) atau (2, 0). Array semacam itu memiliki dua sumbu dan nol elemen, tetapi tidak dapat menjadi kisi bobot dua keluaran, tiga masukan di atas. Aturan bentuk framework dan makna model matematika harus sama-sama lolos.
Baris siap untuk operasi berikutnya
Matriks memperoleh keringkasannya dengan menjaga dua janji sekaligus. Sumbu pertamanya mempertahankan kumpulan aturan keluaran; sumbu keduanya menyelaraskan setiap aturan dengan fitur masukan berurutan yang sama. Organisasi itu membuat dapat dibaca sebelum aritmetika dimulai dan membuat transposisi yang salah terlihat sebelum mencapai proses pelatihan.
Pelajaran berikutnya yang aman terhadap prasyarat akan meletakkan sebuah vektor masukan di samping kisi ini. Setiap baris kemudian membentuk satu jumlah berbobot, mengubah organisasi menjadi hasil dua koordinat. Halaman kursus Math for AI menyatukan pelajaran berurutan dan prasyaratnya.
Uji pemahaman Anda
Question 1
Misalkan B = [[3, −1, 4], [0, 5, 2]]. Nyatakan dimensinya, jumlah total elemen, b₁₃, dan b₂₁.
Show the step-by-step solution
Hitung baris terlebih dahulu: memiliki dua baris horizontal, sehingga . Setiap baris memiliki tiga elemen, sehingga . Maka
Untuk , pilih baris 1 lalu kolom 3; nilainya adalah . Untuk , pilih baris 2 lalu kolom 1; nilainya adalah . Jadi dan . Urutan indeks adalah baris terlebih dahulu, kemudian kolom.
Question 2
Dua aturan keluaran menggunakan masukan x₁, x₂, dan x₃: s₁ = 2x₁ + 0x₂ − x₃ dan s₂ = 0.5x₁ + 3x₂ + 4x₃. Bangun matriks dengan satu aturan per baris dan verifikasi dua elemen.
Show the step-by-step solution
Ada dua aturan keluaran, jadi matriks membutuhkan dua baris. Setiap aturan menggunakan tiga masukan berurutan, jadi membutuhkan tiga kolom. Pertahankan koefisien setiap aturan dalam urutan :
Koefisien pada aturan 1 berada di baris 1, kolom 3, sehingga . Koefisien pada aturan 2 berada di baris 2, kolom 2, sehingga . Pemeriksaan tersebut sesuai dengan dua aturan semula.
Question 3
Untuk matriks bobot W dalam pelajaran ini, ekspresi NumPy mana yang memilih elemen matematika w₂₃, seluruh baris 2, dan seluruh kolom 3? Jelaskan pergeseran dari indeks satu ke indeks nol.
Show the step-by-step solution
Indeks matematika dalam pelajaran ini dimulai dari , sedangkan posisi NumPy dimulai dari 0. Kurangi satu dari setiap indeks matematika saat menulis pilihan NumPy langsung:
- menjadi
weights[1, 2]dan mengembalikan-0.5; - baris 2 menjadi
weights[1, :]dan mengembalikan[0.1, 0.6, -0.5]; dan - kolom 3 menjadi
weights[:, 2]dan mengembalikan[0.2, -0.5].
Titik dua membiarkan sumbu tersebut tidak dibatasi. Bilangan bulat menetapkan sumbu lainnya pada satu posisi berbasis nol.
Question 4
Sebuah lapisan padat memiliki lima fitur masukan, empat unit keluaran, dan satu bias per keluaran. Apa bentuk matriks bobotnya, dan berapa banyak skalar yang dapat dilatih dalam lapisan tersebut?
Show the step-by-step solution
Dengan konvensi (out_features, in_features), empat unit keluaran menyediakan baris dan lima fitur masukan menyediakan kolom:
Matriks bobot berisi skalar. Vektor bias memiliki satu elemen untuk masing-masing dari empat keluaran, sehingga menambah . Totalnya adalah
skalar yang dapat dilatih. Jumlah bias ditambahkan secara terpisah; itu tidak mengubah matriks dari menjadi .
Question 5
Seorang pengembang bermaksud membuat lapisan tiga masukan, dua keluaran tetapi menemukan weights.shape == (3, 2). Identifikasi kesalahan sumbunya dan nyatakan langkah aman berikutnya.
Show the step-by-step solution
Tata letak tersimpan yang dimaksud adalah (out_features, in_features). Dengan dua keluaran dan tiga masukan, bentuk yang diharapkan adalah (2, 3), bukan (3, 2).
Bentuk yang diamati menempatkan kelompok tiga fitur masukan pada sumbu baris dan kelompok dua keluaran pada sumbu kolom. Jika nilai-nilai itu memang sengaja dibangun dengan satu aturan keluaran per kolom, weights.T akan menghasilkan bentuk (2, 3). Namun, melakukan transposisi secara buta tidak aman: verifikasi label fitur dan keluaran terlebih dahulu, lalu transposisikan hanya jika label tersebut mengonfirmasi bahwa sumbu memang sengaja dibalik. Perbaikan bentuk harus mempertahankan makna semantik.
Question 6
Matriks C = [[1, 2, 3, 4]] dan D = [[1], [2], [3], [4]] memuat empat nilai yang sama. Mengapa keduanya tidak dapat dipertukarkan?
Show the step-by-step solution
memiliki satu baris dan empat kolom, sehingga . Matriks itu dapat menyimpan satu aturan yang menggunakan empat masukan berurutan. memiliki empat baris dan satu kolom, sehingga . Matriks itu dapat menyimpan empat baris satu elemen atau merepresentasikan vektor kolom.
Jumlah elemen keduanya sama-sama , tetapi panjang sumbunya berbeda dan dapat membawa makna yang berbeda. Transposisi menghubungkan keduanya, , tetapi operasi itu menukar baris dan kolom. Nilai dan jumlah elemen yang sama tidak menyiratkan bentuk atau kontrak matriks yang sama.
Question 7
NumPy dapat membuat np.empty((0, 3)). Apa bentuk dan ukurannya, dan mengapa array itu tidak dapat menggantikan matriks bobot dua keluaran, tiga masukan dalam pelajaran ini?
Show the step-by-step solution
Tuple yang diberikan kepada np.empty adalah bentuk array, sehingga hasilnya berbentuk (0, 3): nol baris dan tiga kolom. Jumlah elemennya adalah hasil kali panjang sumbu,
Lapisan dalam pelajaran ini memerlukan dua aturan keluaran, sehingga memerlukan dua baris. Array kosong itu tidak menyimpan apa pun. Sumbu tiga kolomnya kebetulan cocok dengan jumlah fitur masukan, tetapi sumbu keluaran yang hilang melanggar kontrak model. Array NumPy yang bentuknya valid tidak otomatis menjadi matriks yang berguna untuk lapisan tertentu.
Question 8
Dalam peta matriks, w₂₃ = −0.5. Nyatakan hubungan yang dinamainya. Apakah satu bobot negatif itu membuktikan keluaran akhir prioritas peninjauan akan negatif?
Show the step-by-step solution
Baca indeksnya sesuai urutan. Indeks pertama, , memilih baris 2: aturan keluaran prioritas peninjauan. Indeks kedua, , memilih kolom 3: fitur masukan kualitas sumber. Jadi adalah koefisien yang menghubungkan kualitas sumber dengan aturan prioritas peninjauan.
Koefisien tunggal itu tidak menentukan tanda keluaran akhir. Keluaran juga bergantung pada nilai aktual , dua kontribusi masukan berbobot lainnya, dan bias apa pun. Elemen matriks menamai satu hubungan; perhitungan jumlah berbobot pada pelajaran berikutnya menggabungkan seluruh kontribusi.