Kursus Matematika untuk AI · Pelajaran 22 dari 180
Transformasi Identitas dan Invers: Membalik Pemetaan Fitur
Gunakan matriks identitas dan invers kecil untuk membalik transformasi fitur 2D, mendeteksi kasus yang tidak aman, serta memahami mengapa solve lebih baik daripada invers eksplisit.
Bayangkan sebuah langkah prapemrosesan mencampurkan dua fitur sebelum keduanya masuk ke model AI. Setelah itu, Anda mungkin ingin memulihkan koordinat asli untuk debugging, laporan, atau model lain. Bagaimana Anda dapat mengetahui apakah transformasi tersebut benar-benar dapat dibalik, dan bagaimana membalikkannya tanpa membuat pilihan numerik yang rapuh?
Setelah menyelesaikan pelajaran ini, Anda akan dapat mengenali perilaku identitas, menghitung dan memverifikasi invers matriks kecil, membedakan invers dari transpose, mengidentifikasi kasus singular dan hampir singular, serta menjelaskan mengapa sistem linear biasanya diselesaikan secara langsung alih-alih dengan membentuk invers secara eksplisit.
Hasil pembelajaran: Mengenali perilaku identitas dan memverifikasi invers matriks kecil.
Pelajaran 20: Perkalian matriks-matriks menyusun transformasi dan batch menunjukkan bahwa suatu hasil kali dapat menyusun peta linear. Situs pendamping resmi Mathematics for Machine Learning mengembangkan operasi identitas, invers, dan transpose dalam Bagian 2.2 pada PDF buku, lalu menghubungkannya dengan sistem persamaan di Bagian 2.3. Notasi di sini mengikuti alur tersebut, tetapi angka, visual, skenario prapemrosesan, kode, dan pertanyaannya orisinal.
Identitas berarti “membiarkan koordinat tetap”
Untuk vektor kolom dua dimensi, matriks identitasnya adalah
Mengalikan dengan membuat setiap koordinat tetap tidak berubah. Jika , maka
Angka 1 pada diagonal mempertahankan setiap koordinat, sedangkan angka 0 di luar diagonal mencegah satu koordinat berkontribusi pada koordinat lain. Identitas adalah versi matriks dari bilangan : mengalikannya tidak mengubah apa pun, tetapi memberi kita target yang tepat untuk memeriksa apakah matriks lain sudah dibalik.
Kedua sisi itu penting. Perkalian matriks berurutan, jadi invers yang berguna harus mengembalikan identitas ketika dikalikan dari sisi mana pun, bukan hanya membuat satu vektor yang dipilih terlihat benar.
Invers membalik transformasi
Misalkan adalah matriks persegi. Invers, yang ditulis sebagai , adalah matriks yang memenuhi
Jika sebuah vektor fitur mula-mula menjadi , mengalikannya dengan akan memulihkan masukan:
Ini adalah aturan pembatalan untuk matriks. Ini bukan klaim bahwa setiap matriks memiliki invers. Sebuah matriks harus mempertahankan cukup banyak arah yang independen agar invers dapat ada; kita akan melihat apa yang gagal ketika syarat itu tidak terpenuhi.
| Titik | x asal | Setelah A: z = Ax | Setelah A⁻¹: x = A⁻¹z |
|---|---|---|---|
| p₀ | (0, 0) | (0, 0) | (0, 0) |
| p₁ | (1, 0) | (2, 1) | (1, 0) |
| p₂ | (1, 1) | (3, 2) | (1, 1) |
| p₃ | (0, 1) | (1, 1) | (0, 1) |
Jajaran genjang ini tidak berarti informasi hilang: keempat sudut tetap berkorespondensi satu-ke-satu dengan sudut asli karena determinan A pada contoh ini tidak nol.
Visual tersebut menggunakan
Persegi satuan menjadi jajaran genjang di bawah dan kembali ke sudut-sudut yang sama di bawah . Tabelnya menjadi catatan statis yang dapat dibaca teks mengenai korespondensi setiap sudut. Bentuk itu tetap satu-ke-satu karena determinan ini adalah 1, bukan nol.
Contoh kerja: mencari invers matriks 2 × 2
Untuk
determinan adalah
Jika bilangan ini tidak nol, rumus invers 2 × 2 adalah
Rumus ini memiliki dua pemeriksaan bawaan: tukar entri diagonal, negasikan entri di luar diagonal, lalu bagi dengan determinan. Determinan yang tidak nol membuat pembagian itu sah.
Kita juga dapat menguji invers dengan mentransformasikan satu vektor fitur. Misalkan
Peta maju menghasilkan
Invers mengembalikannya:
Pemeriksaan hasil kali matriks lebih kuat daripada pemeriksaan satu vektor ini. Banyak matriks yang keliru dapat kebetulan membalik satu vektor tertentu; hanya persamaan identitas yang menunjukkan bahwa transformasi telah dibalik untuk setiap vektor dalam ruang tersebut.
Invers bukan transpose
Transpose menukar baris dan kolom:
Itu adalah reorientasi sumbu. Invers menyelesaikan persyaratan yang berbeda, yaitu . Keduanya dapat sama dalam kasus khusus, tetapi secara umum satu operasi tidak dapat menggantikan operasi lainnya.
Untuk matriks contoh, kebetulan simetris, sehingga . Namun inversnya adalah
yang jelas bukan . Simetri saja tidak membuat matriks menjadi ortogonal atau membuat transposenya menjadi invers.
Berikut contoh tandingan yang nonsimetris:
Transpose mempertahankan entri, tetapi mengubah orientasinya. Invers mengubah tanda dan menggabungkan koordinat sehingga kedua hasil kali matriks menjadi identitas. Hanya ketika —misalnya untuk rotasi atau refleksi murni—berlaku .
Penerapan AI: membalik perubahan koordinat fitur yang dipelajari
Banyak pipeline bekerja dengan vektor fitur yang dipusatkan, bukan nilai fitur mentah. Misalkan adalah vektor dua fitur mentah dan adalah vektor rata-rata tetap. Langkah prapemrosesan linear dapat ditulis sebagai
Matriks mencampurkan dan menskalakan ulang koordinat yang sudah dipusatkan. Ini dapat berguna ketika model berikutnya bekerja lebih baik dalam sistem fitur yang diputar atau dinyatakan ulang dengan cara lain. Jika invertibel dan yang sama tetap disimpan, vektor mentah dapat dipulihkan dengan
Invers bukan tombol ajaib untuk membatalkan seluruh pipeline prapemrosesan. Invers hanya membalik peta linear tertentu ini. Pipeline yang kemudian melakukan clipping nilai, membuang fitur, membulatkan ke bilangan bulat, atau menerapkan operasi non-injektif telah membuang informasi yang tidak dapat direkonstruksi oleh invers matriks apa pun.
Sebagai contoh, ambil
Pertama, pusatkan vektor fitur:
Koordinat hasil transformasinya adalah , seperti pada contoh kerja. Membaliknya menghasilkan
Kebiasaan debugging yang praktis adalah mencatat makna sumbu, rata-rata yang digunakan untuk pemusatan, dan versi matriks yang tepat secara bersamaan. Invers dari fit prapemrosesan yang lebih baru mungkin valid secara matematis, tetapi tetap merupakan invers yang salah untuk batch lama.
Transformasi singular kehilangan pembedaan
Pertimbangkan
Determinan-nya adalah
Baris kedua adalah dua kali baris pertama, sehingga hanya memiliki satu arah independen. Matriks itu juga memetakan masukan yang berbeda ke keluaran yang sama:
Setelah kedua masukan itu bertabrakan, pengamat yang hanya melihat keluaran tidak dapat mengetahui masukan mana yang digunakan. Invers harus mengirim satu keluaran ke dua vektor yang berbeda, dan hal itu mustahil bagi sebuah fungsi. NumPy melaporkan kegagalan ini sebagai LinAlgError ketika numpy.linalg.inv atau numpy.linalg.solve diminta bekerja dengan matriks persegi singular; lihat dokumentasi invers dan dokumentasi solve.
Singularitas bukan hanya kesalahan perangkat lunak. Ini dapat berarti peta fitur telah meruntuhkan sebuah arah, dua kolom bersifat redundan, atau representasi model tidak memuat informasi yang cukup untuk rekonstruksi yang diminta. Pseudoinvers atau estimasi kuadrat terkecil mungkin tetap berguna untuk pertanyaan yang berbeda, tetapi itu bukan invers dua sisi yang eksak dari .
Hampir singular adalah peringatan numerik, bukan keberhasilan
Sekarang ubah satu entri dengan jumlah yang sangat kecil:
Determinan-nya kira-kira , sehingga secara teknis matriks ini invertibel. Namun baris-barisnya hampir sejajar. Perubahan kecil dalam pengukuran atau pembulatan dapat menghasilkan perubahan besar pada vektor yang dipulihkan. Bilangan kondisi merangkum sensitivitas ini; dalam norma-2 yang umum, nilai mendekati berarti banyak digit akurasi masukan dapat habis selama penyelesaian. NumPy menyediakan diagnosis ini sebagai numpy.linalg.cond.
Perbedaannya penting:
| Status matriks | Uji determinan | Interpretasi praktis |
|---|---|---|
| Nonsingular dan terkondisi baik | tidak nol, tidak sangat kecil relatif terhadap skala | Invers atau penyelesaian dapat diandalkan untuk presisi data yang tersedia. |
| Singular | tepat nol dalam aritmetika eksak | Masukan yang berbeda mungkin telah runtuh menjadi satu keluaran; tidak ada invers biasa. |
| Hampir singular | tidak nol tetapi kecil relatif terhadap skala | Invers ada di atas kertas, tetapi noise masukan dapat diperkuat dengan kuat. |
Determinan saja bukan ambang keamanan yang universal dan bebas skala. Mengalikan matriks dengan skalar besar juga mengubah determinannya, jadi periksa bilangan kondisi, nilai singular, residual, dan skala aplikasi. Determinan floating-point yang tidak nol adalah bukti bahwa representasi tersebut invertibel, bukan jaminan bahwa rekonstruksinya dapat dipercaya.
Mengapa solve lebih disukai daripada membangun invers eksplisit
Persamaan
memiliki solusi matematis ketika invertibel. Namun dalam kode, jika yang Anda perlukan hanya , membentuk lengkap terlebih dahulu tidak diperlukan. numpy.linalg.solve menerima dan secara langsung dan menghitung solusi sistem; numpy.linalg.inv membangun matriks invers itu sendiri dan memperingatkan bahwa hasil yang terkondisi buruk mungkin tidak akurat.
Karena itu, pola implementasi yang disarankan adalah:
import numpy as np
A = np.array([[2.0, 1.0],
[1.0, 1.0]])
b = np.array([2.0, 1.0])
x_from_solve = np.linalg.solve(A, b)
x_from_inverse = np.linalg.inv(A) @ b
np.testing.assert_allclose(x_from_solve, [1.0, 0.0])
np.testing.assert_allclose(x_from_inverse, x_from_solve)
np.testing.assert_allclose(A @ x_from_solve, b)
Kedua jalur sepakat untuk contoh kecil yang terkondisi baik ini. Perbedaan rekayasanya adalah solve menghitung solusi yang diminta tanpa mematerialisasi matriks yang mungkin tidak pernah Anda gunakan. Ini juga membuat algoritme penyelesaian sistem tetap eksplisit, sehingga kode menyampaikan tugas sebenarnya: menyelesaikan .
Jika beberapa ruas kanan berbagi yang sama, berikan semuanya sebagai kolom dalam matriks dan selesaikan dalam satu panggilan. Jika singular, solve adalah alat yang salah untuk solusi eksak; pilih metode seperti kuadrat terkecil hanya ketika tujuannya yang berbeda sesuai dengan aplikasi. Selalu periksa residual:
Residual kecil dalam satuan masalah merupakan bukti bahwa vektor yang dihitung menyelesaikan sistem yang diberikan. Namun, residual itu sendiri tidak membuktikan bahwa sistem terkondisi baik atau matriksnya mewakili langkah prapemrosesan yang tepat.
Pelajaran berikutnya akan membuat langkah penyelesaian itu eksplisit dengan operasi baris. Untuk saat ini, identitas adalah target, invers adalah peta yang dapat dibalik, transpose adalah pertukaran sumbu, dan pengondisian memberi tahu kita apakah pembalikan yang sah secara matematis masuk akal secara numerik.
Periksa pemahaman Anda
Pertanyaan 1
Apa yang dilakukan I₂ terhadap vektor [4, −3]ᵀ, dan mengapa?
Tampilkan solusi langkah demi langkah
Langkah 1: tulis identitasnya.
Langkah 2: kalikan baris dengan kolom.
Langkah 3: tafsirkan. Angka 1 pada diagonal mempertahankan setiap koordinat dan angka 0 mencegah pencampuran antarkoordinat, sehingga identitas membiarkan vektor tetap tidak berubah.
Pertanyaan 2
Temukan invers A = [[1, 2], [3, 7]] menggunakan rumus 2 × 2.
Tampilkan solusi langkah demi langkah
Langkah 1: identifikasi entrinya. Di sini , , , dan .
Langkah 2: hitung determinan.
Determinan tidak nol, jadi inversnya ada.
Langkah 3: tukar dan negasikan.
Pembagian dengan determinan tidak mengubah entri dalam contoh khusus ini karena determinannya sama dengan 1.
Pertanyaan 3
Verifikasi invers dari Pertanyaan 2 dengan menghitung A A⁻¹.
Tampilkan solusi langkah demi langkah
Gunakan
Langkah 1: hitung setiap entri.
Langkah 2: bandingkan dengan target. Hasilnya adalah , jadi matriks yang diusulkan lolos pemeriksaan hasil kali kiri. Karena ini invers matriks persegi dan rumusnya menghasilkan invers dua sisi yang sesuai, matriks itu juga membalik dari sisi lain; menghitung adalah pemeriksaan kode tambahan yang berguna.
Pertanyaan 4
Untuk B = [[1, 2], [0, 1]], apakah Bᵀ merupakan invers yang valid? Tunjukkan perkalian yang cukup untuk menentukannya.
Tampilkan solusi langkah demi langkah
Langkah 1: tulis transposenya.
Langkah 2: kalikan B dengan transposenya.
Langkah 3: bandingkan dengan identitas. Hasil ini bukan , jadi bukan inversnya. Sebenarnya, ; transpose dan invers menjawab pertanyaan yang berbeda.
Pertanyaan 5
Sebuah langkah prapemrosesan menggunakan z = A(x − μ), dengan μ = [10, 4]ᵀ, A = [[2, 1], [1, 1]], dan z = [8, 5]ᵀ. Pulihkan x.
Tampilkan solusi langkah demi langkah
Langkah 1: gunakan bentuk invers dari persamaan prapemrosesan.
Langkah 2: gunakan invers yang sudah diverifikasi.
Langkah 3: kembalikan rata-ratanya.
Melupakan akan memulihkan koordinat yang dipusatkan, bukan nilai fitur asli.
Pertanyaan 6
Mengapa S = [[1, 2], [2, 4]] tidak memiliki invers biasa? Berikan penjelasan geometris atau berbasis informasi.
Tampilkan solusi langkah demi langkah
Langkah 1: periksa determinannya.
Determinan nol berarti baris dan kolomnya tidak memuat dua arah yang independen.
Langkah 2: tunjukkan hilangnya informasi.
Dua masukan yang berbeda menghasilkan satu keluaran. Fungsi yang hanya menerima keluaran itu tidak dapat memutuskan masukan mana yang harus dikembalikan, sehingga tidak ada invers dua sisi.
Pertanyaan 7
Sebuah matriks memiliki determinan tidak nol tetapi bilangan kondisi sekitar 4 × 10⁸. Apakah aman menyatakan bahwa inversi tidak berbahaya? Jelaskan.
Tampilkan solusi langkah demi langkah
Langkah 1: pisahkan keberadaan dari sensitivitas. Determinan tidak nol menyatakan bahwa matriks invertibel dalam aritmetika eksak. Itu tidak berarti inversnya stabil terhadap masukan yang dibulatkan atau berisik.
Langkah 2: tafsirkan bilangan kondisi. Bilangan kondisi mendekati menunjukkan bahwa matriks hampir singular: perubahan relatif kecil pada masukan dapat diperkuat hingga banyak orde besaran dalam solusi yang dipulihkan.
Langkah 3: pilih kesimpulan. Jangan menyebut inversi tidak berbahaya. Periksa presisi data, residual, nilai singular atau bilangan kondisi, serta toleransi aplikasi. Invers yang valid secara matematis tetap dapat menjadi rekonstruksi numerik yang buruk.
Pertanyaan 8
Tulis ulang x = A⁻¹b sebagai kode NumPy ketika Anda hanya memerlukan x, dan sebutkan satu verifikasi yang perlu dilakukan setelahnya.
Tampilkan solusi langkah demi langkah
Langkah 1: ungkapkan tugas langsungnya. Persamaannya adalah , jadi minta NumPy menyelesaikan sistem tersebut:
x = np.linalg.solve(A, b)Langkah 2: jelaskan pilihannya. Ini menghindari pembuatan np.linalg.inv(A) ketika matriks inversnya sendiri tidak diperlukan. Kode itu juga menyatakan operasi yang dimaksud secara langsung.
Langkah 3: verifikasi hasilnya. Hitung residual dan bandingkan dengan ruas kanannya:
np.testing.assert_allclose(A @ x, b)Ini memeriksa bahwa vektor yang dikembalikan menyelesaikan sistem yang diberikan dalam batas toleransi. Periksa juga pengondisian ketika masukan mungkin hampir singular.