Kursus Matematika untuk AI · Pelajaran 34 dari 180
Pemetaan Linear Mempertahankan Kombinasi yang Dibutuhkan Model AI
Uji apakah transformasi mempertahankan penjumlahan dan penskalaan, sebutkan ruang masukan dan keluarannya, serta bedakan lapisan neural dari fungsi aktivasinya.
Jaringan saraf berulang kali mengubah satu representasi menjadi representasi lain. Untuk memahami apa yang dilakukan sebuah lapisan, kita dapat mengajukan dua pertanyaan: jenis vektor apa yang boleh masuk, dan jenis vektor apa yang dapat keluar? Pemetaan linear menjawab keduanya sambil mempertahankan cara vektor digabungkan. Dengan begitu, kita dapat memandang bobot matriks sebagai transformasi antarruang dan mengenali dengan tepat bagian tempat jaringan memperkenalkan perilaku nonlinear.
Setelah menyelesaikan pelajaran ini, Anda dapat menguji apakah suatu pemetaan linear, menyebutkan ruang masukan dan keluarannya, serta membedakan transformasi matriks dalam lapisan neural dari fungsi aktivasinya.
Capaian belajar: Menguji linearitas dan menjelaskan ruang masukan serta keluaran suatu pemetaan.
Pelajaran ini melanjutkan aturan ruang vektor dari Pelajaran 027. Bagian 2.7 dari Mathematics for Machine Learning memperkenalkan pemetaan linear ketika kombinasi vektor mulai menghubungkan koordinat dan matriks. Perhitungan, contoh lapisan neural, visual, dan penilaian di sini merupakan materi orisinal.
Transformasi seharusnya menghormati cara masukannya digabungkan
Vektor dapat dijumlahkan dan diskalakan. Untuk dua ruang vektor real dan , pemetaan disebut linear jika mempertahankan kedua operasi tersebut:
Di sini dan . Hasilnya berada di , sedangkan koefisien di ruas kanan menskalakan keluaran yang bersesuaian.
Kita dapat menguji aturan gabungan ini sekaligus atau memisahkannya menjadi dua pemeriksaan:
Pernyataan pertama berarti menjumlahkan dua masukan sebelum transformasi menghasilkan hal yang sama dengan mentransformasikan masing-masing masukan lalu menjumlahkannya. Pernyataan kedua berarti menskalakan masukan sebelum transformasi sama dengan menskalakan keluarannya menggunakan faktor yang sama. Keduanya harus berlaku untuk setiap masukan yang valid dan setiap skalar real, termasuk yang negatif.
Ruang masukan ℝ²
- e₁ = (1, 0)
- e₂ = (0, 1)
- e₁ + e₂ = (1, 1)
Ruang keluaran ℝ²
- T(e₁) = (2, −1)
- T(e₂) = (1, 1)
- T(e₁ + e₂) = (3, 0)
Uji kombinasi: T(e₁ + e₂) = T(e₁) + T(e₂)
Ketiga panah tersebut memperlihatkan satu pemeriksaan penjumlahan yang konkret. Di sini, , sedangkan . Visual memberi interpretasi geometris; rumusnya menjanjikan aturan umum yang harus berlaku untuk semua vektor dan skalar, bukan hanya untuk dua vektor basis ini.
Matriks memberi tahu ruang yang dihubungkan oleh pemetaan
Misalkan adalah matriks berukuran , artinya memiliki baris dan kolom. Matriks ini mengalikan vektor kolom dengan koordinat dan menghasilkan vektor kolom dengan koordinat:
Domain adalah himpunan masukan yang diizinkan oleh pemetaan; kodomain adalah ruang keluaran yang menjadi tujuan pemetaan. Untuk aturan matriks ini, masukan berada di dan keluaran berada di . Dimensinya tidak harus sama: pemetaan dapat memperluas vektor menjadi lebih banyak koordinat atau memampatkannya menjadi lebih sedikit.
Perkalian matriks bersifat linear karena distributif terhadap penjumlahan dan perkalian skalar. Untuk sembarang vektor sepanjang serta skalar ,
Sebagai contoh numerik kecil, gunakan
Bias menggeser titik asal; aktivasi mengubah aturannya
Dalam kode machine learning, “lapisan linear” merupakan istilah praktis yang umum. Dalam matematika, rinciannya menentukan apakah operasinya linear. Untuk batch yang disusun per baris, PyTorch torch.nn.Linear menghitung dan menyertakan bias secara default. Jika biasnya tidak nol, aturannya affine: kombinasi dengan jumlah koefisien satu tetap terjaga, tetapi penskalaan atau penjumlahan sembarang umumnya tidak. Dokumentasi PyTorch menyebutnya transformasi affine dan memungkinkan bias dinonaktifkan dengan bias=False (dokumentasi torch.nn.Linear). Jika bobotnya berjumlah satu, pasangan berbobot tetap dipertahankan:
Kesetaraan terakhir berlaku karena . Penjumlahan vektor biasa menggunakan koefisien dan , yang jumlahnya bukan satu, sehingga bias tidak saling menghapus pada .
Vektor nol merupakan pemeriksaan cepat. Setiap pemetaan linear harus mengirim nol ke nol, karena . Untuk aturan affine ,
Jika , maka bukan linear. Bias tidak membuat lapisan ini keliru; bias memberi model keleluasaan menggeser keluarannya bahkan ketika masukannya nol.
Jaringan neural menambahkan operasi lain setelah transformasi bobot. Pola yang umum ialah , dengan ReLU mengganti setiap koordinat negatif menjadi nol. Operasi ini nonlinear. Misalnya, tetapkan . Maka , sedangkan . Uji penjumlahannya gagal. Dokumentasi PyTorch menjelaskan torch.nn.ReLU sebagai operasi maksimum per elemen ini (dokumentasi ReLU).
Perbedaan ini menjelaskan mengapa jaringan menggabungkan langkah-langkah tersebut. Jika dua lapisan hanya berupa pemetaan linear, komposisinya tetap menjadi satu pemetaan linear: . Lapisan tambahan mengubah matriksnya, tetapi tidak menciptakan aturan masukan-keluaran nonlinear. Aktivasi mencegah penyederhanaan tersebut dan memungkinkan jaringan merepresentasikan hubungan yang lebih beragam. Matriks bobot mencampur fitur masukan; aktivasi mengubah aturan yang diterapkan pada koordinat hasilnya.
Periksa transformasi dengan kode
Perhitungan yang sama dapat diperiksa menggunakan NumPy. Vektor kolom membuat konvensi matriks di sebelah kiri sesuai dengan penurunan di atas:
import numpy as np
A = np.array([[2, 1],
[-1, 1]])
u = np.array([1, 0])
v = np.array([0, 1])
def T(x):
return A @ x
print(T(u + v)) # [3 0]
print(T(u) + T(v)) # [3 0]
print(T(-2 * u)) # [-4 2]
print(-2 * T(u)) # [-4 2]
Untuk batch di PyTorch, vektor biasanya disimpan sebagai baris, sehingga matriks bobot pustaka ditransposisikan dalam rumus yang ditampilkan. Dimensi batch tetap sama, sedangkan dimensi fitur terakhir berubah dari in_features menjadi out_features:
import torch
from torch import nn
x = torch.tensor([[1.0, 0.0], [0.0, 1.0]]) # shape: (2 examples, 2 features)
linear_part = nn.Linear(2, 3, bias=False)
activation = nn.ReLU()
pre_activation = linear_part(x) # shape: (2, 3); a linear map
hidden = activation(pre_activation) # shape: (2, 3); nonlinear elementwise step
Pemetaan linear di sini mengubah setiap vektor fitur dari menjadi vektor di . Contoh ini menghilangkan bias sehingga operasi pertamanya benar-benar linear. Dengan bias default, PyTorch menyebut operasi itu affine. Aktivasi mempertahankan bentuk keluaran, tetapi gagal dalam uji kombinasi vektor. Kesamaan bentuk saja tidak dapat memberi tahu apakah suatu operasi linear; aturan aljabarnyalah yang menentukan.
Pemetaan linear tetap dapat kehilangan informasi
Linearitas tidak berarti bahwa pemetaan dapat dibalik, mempertahankan panjang, atau bahkan berguna untuk setiap tugas lanjutan. Matriks nol memetakan setiap masukan ke vektor nol dan tetap memenuhi kedua aturan linearitas. Pemetaan linear dari ke tidak mungkin bersifat satu-ke-satu: setidaknya satu arah informasi masukan harus hilang. Untuk menentukan apakah informasi terpelihara, kita memerlukan konsep lain seperti kemandirian linear, rank, dan inversibilitas.
Saat memeriksa blok neural, tuliskan ruang sebelum dan sesudah setiap operasi, lalu uji aturan yang diterapkannya. Perkalian matriks mentransformasikan kombinasi secara terprediksi; bias menggeser titik asal; aktivasi mengubah perilaku kombinasi. Perbedaan inilah yang perlu dibawa ke pelajaran berikutnya, yang membahas representasi matriks konkret dari pemetaan linear.
Periksa pemahaman
Pertanyaan 1
Sebutkan dua sifat yang harus dipenuhi pemetaan agar linear. Apa yang belum diuji oleh pemeriksaan penjumlahan vektor?
Tampilkan solusi langkah demi langkah
Pemetaan linear harus mempertahankan penjumlahan dan perkalian skalar: dan untuk setiap yang valid dan setiap skalar real . Aturan gabungan mengikuti dengan menerapkan kedua sifat tersebut: . Uji penjumlahan hanya mencakup jumlah masukan; untuk menetapkan definisinya secara langsung, periksa juga penskalaan oleh setiap bilangan real.
Pertanyaan 2
Untuk T(x₁, x₂) = (2x₁ + x₂, −x₁ + x₂), hitung T(3, 2). Tunjukkan kedua koordinat keluaran dan sebutkan ruang masukan serta keluarannya.
Tampilkan solusi langkah demi langkah
Matriks memiliki dua kolom, sehingga menerima vektor dari . Matriks itu memiliki dua baris, sehingga keluarannya berada di . Kalikan setiap baris dengan masukannya:
Jadi, pemetaannya adalah dan keluarannya .
Pertanyaan 3
Dengan matriks dalam pelajaran ini, verifikasi T((1, 0) + (0, 1)) = T(1, 0) + T(0, 1).
Tampilkan solusi langkah demi langkah
Misalkan dan . Contoh kerja memberikan dan , sehingga jumlah keduanya . Jumlah masukannya adalah , dan perkalian matriks menghasilkan . Kedua ruas cocok, sehingga contoh penjumlahan khusus ini terverifikasi. Contoh ini mendukung aturannya, tetapi tidak membuktikannya untuk setiap vektor; sifat distributif perkalian matriks memberikan pembuktian umum.
Pertanyaan 4
Untuk matriks yang sama dan u = (1, 0), hitung T(−2u), lalu bandingkan dengan −2T(u). Apa yang diuji pemeriksaan ini?
Tampilkan solusi langkah demi langkah
Pertama, , jadi . Selain itu, dan
Hasilnya cocok. Ini menguji bahwa penskalaan dipertahankan untuk skalar negatif, yang penting karena linearitas mensyaratkan aturan itu untuk setiap skalar real.
Pertanyaan 5
Sebuah lapisan yang diusulkan adalah F(x) = Ax + (0, 2). Bisakah F linear? Gunakan uji vektor nol dan jelaskan efek vektor tambahan itu.
Tampilkan solusi langkah demi langkah
Untuk pemetaan linear, harus sama dengan nol: masukan apa pun yang dikalikan harus membuat keluarannya juga dikalikan . Di sini, . Jadi, bukan linear. Vektor tambahan tersebut menggeser setiap keluaran sebesar , sehingga pemetaannya affine.
Pertanyaan 6
Sebuah blok PyTorch menjalankan <code>nn.Linear(4, 8)</code> lalu <code>nn.ReLU()</code>. Sebutkan ruang fitur masukan dan keluaran, serta klasifikasikan setiap operasi.
Tampilkan solusi langkah demi langkah
Setiap contoh masukan memiliki empat fitur, jadi merupakan vektor di . Lapisan linear menghasilkan delapan koordinat, yaitu elemen . PyTorch mengaktifkan bias secara default, sehingga nn.Linear(4, 8) umumnya affine, bukan linear secara matematis. nn.ReLU() mempertahankan bentuk delapan koordinat, tetapi menerapkan pada setiap koordinat, yaitu operasi nonlinear. Dengan bias=False, operasi pertama merupakan pemetaan linear .
Pertanyaan 7
Tunjukkan bahwa ReLU tidak mempertahankan penjumlahan dengan masukan −1 dan 1. Apakah kegagalannya mengubah dimensi keluaran?
Tampilkan solusi langkah demi langkah
ReLU memetakan menjadi . Jika penjumlahan dipertahankan, menerapkannya pada jumlah masukan harus sama dengan menjumlahkan nilai yang ditransformasikan secara terpisah. Namun , sedangkan . Karena kedua nilainya berbeda, ReLU nonlinear. ReLU tetap menghasilkan satu angka untuk setiap angka masukan, sehingga bentuk keluarannya sama dengan bentuk masukan meski aturannya nonlinear.
Pertanyaan 8
Apakah setiap pemetaan linear dapat dibalik atau mempertahankan panjang? Berikan contoh tandingan linear untuk salah satu klaim tersebut.
Tampilkan solusi langkah demi langkah
Tidak. Pemetaan nol bersifat linear karena dan , tetapi semua masukan dipetakan ke keluaran yang sama sehingga tidak dapat dibalik. Pemeliharaan panjang juga tidak dijamin: linear, tetapi memiliki panjang , bukan . Linearitas menjelaskan perilaku kombinasi, bukan apakah panjang atau informasi tetap utuh.