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.

Bagikan artikel ini

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 VV dan WW, pemetaan T:V→WT:V\to W disebut linear jika mempertahankan kedua operasi tersebut:

Di sini u,v∈Vu,v\in V dan a,b∈Ra,b\in\mathbb{R}. Hasilnya berada di WW, sedangkan koefisien di ruas kanan menskalakan keluaran yang bersesuaian.

Kita dapat menguji aturan gabungan ini sekaligus atau memisahkannya menjadi dua pemeriksaan:

T(u+v)=T(u)+T(v),T(au)=aT(u).T(u+v)=T(u)+T(v), \qquad T(au)=aT(u).

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.

Pemetaan linear membawa jumlah menjadi jumlah bayangannyaUntuk T(x₁, x₂) = (2x₁ + x₂, −x₁ + x₂), bayangan e₁ + e₂ sama dengan jumlah bayangan e₁ dan e₂.

Ruang masukan ℝ²

Ruang masukan ℝ²Tiga panah berawal di titik asal: e₁ = (1, 0), e₂ = (0, 1), dan e₁ + e₂ = (1, 1).e₁e₂e₁ + e₂x₁x₂
  • e₁ = (1, 0)
  • e₂ = (0, 1)
  • e₁ + e₂ = (1, 1)

Ruang keluaran ℝ²

Ruang keluaran ℝ²Panah yang bersesuaian adalah T(e₁) = (2, −1), T(e₂) = (1, 1), dan T(e₁ + e₂) = (3, 0). Keluaran ketiga sama dengan jumlah dua keluaran pertama.T(e₁)T(e₂)T(e₁ + e₂)y₁y₂
  • 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, T(e1+e2)=(3,0)T(e_1+e_2)=(3,0), sedangkan T(e1)+T(e2)=(2,−1)+(1,1)=(3,0)T(e_1)+T(e_2)=(2,-1)+(1,1)=(3,0). 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 AA adalah matriks berukuran m×nm\times n, artinya memiliki mm baris dan nn kolom. Matriks ini mengalikan vektor kolom dengan nn koordinat dan menghasilkan vektor kolom dengan mm koordinat:

T:Rn→Rm,T(x)=Ax.T: \mathbb{R}^n\to\mathbb{R}^m, \qquad T(x)=Ax.

Domain adalah himpunan masukan yang diizinkan oleh pemetaan; kodomain adalah ruang keluaran yang menjadi tujuan pemetaan. Untuk aturan matriks ini, masukan berada di Rn\mathbb{R}^n dan keluaran berada di Rm\mathbb{R}^m. 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 u,vu,v sepanjang nn serta skalar a,ba,b,

T(au+bv)=A(au+bv)=aAu+bAv=aT(u)+bT(v).T(au+bv)=A(au+bv)=aAu+bAv=aT(u)+bT(v).

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 xAT+bxA^\mathsf{T}+b dan menyertakan bias bb 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:

F(λu+(1−λ)v)=λAu+(1−λ)Av+b=λ(Au+b)+(1−λ)(Av+b).F(\lambda u+(1-\lambda)v) =\lambda Au+(1-\lambda)Av+b =\lambda(Au+b)+(1-\lambda)(Av+b).

Kesetaraan terakhir berlaku karena λb+(1−λ)b=b\lambda b+(1-\lambda)b=b. Penjumlahan vektor biasa menggunakan koefisien 11 dan 11, yang jumlahnya bukan satu, sehingga bias tidak saling menghapus pada F(u+v)F(u+v).

Vektor nol merupakan pemeriksaan cepat. Setiap pemetaan linear harus mengirim nol ke nol, karena T(0)=T(0⋅x)=0⋅T(x)=0T(0)=T(0\cdot x)=0\cdot T(x)=0. Untuk aturan affine F(x)=Ax+bF(x)=Ax+b,

F(0)=A0+b=b.F(0)=A0+b=b.

Jika b≠0b\ne0, maka FF 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 h=ReLU⁡(Ax+b)h=\operatorname{ReLU}(Ax+b), dengan ReLU mengganti setiap koordinat negatif menjadi nol. Operasi ini nonlinear. Misalnya, tetapkan r(t)=max⁡(0,t)r(t)=\max(0,t). Maka r(−1+1)=r(0)=0r(-1+1)=r(0)=0, sedangkan r(−1)+r(1)=0+1=1r(-1)+r(1)=0+1=1. 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: B(Ax)=(BA)xB(Ax)=(BA)x. 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 R2\mathbb{R}^2 menjadi vektor di R3\mathbb{R}^3. 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 R3\mathbb{R}^3 ke R2\mathbb{R}^2 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: T(u+v)=T(u)+T(v)T(u+v)=T(u)+T(v) dan T(cu)=cT(u)T(cu)=cT(u) untuk setiap u,vu,v yang valid dan setiap skalar real cc. Aturan gabungan mengikuti dengan menerapkan kedua sifat tersebut: T(au+bv)=T(au)+T(bv)=aT(u)+bT(v)T(au+bv)=T(au)+T(bv)=aT(u)+bT(v). 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 R2\mathbb{R}^2. Matriks itu memiliki dua baris, sehingga keluarannya berada di R2\mathbb{R}^2. Kalikan setiap baris dengan masukannya:

T(32)=(2⋅3+1⋅2−1⋅3+1⋅2)=(8−1).T\begin{pmatrix}3\\2\end{pmatrix} =\begin{pmatrix}2\cdot3+1\cdot2\\-1\cdot3+1\cdot2\end{pmatrix} =\begin{pmatrix}8\\-1\end{pmatrix}.

Jadi, pemetaannya adalah T:R2→R2T:\mathbb{R}^2\to\mathbb{R}^2 dan keluarannya (8,−1)(8,-1).

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 u=(1,0)u=(1,0) dan v=(0,1)v=(0,1). Contoh kerja memberikan T(u)=(2,−1)T(u)=(2,-1) dan T(v)=(1,1)T(v)=(1,1), sehingga jumlah keduanya (3,0)(3,0). Jumlah masukannya adalah u+v=(1,1)u+v=(1,1), dan perkalian matriks menghasilkan T(1,1)=(3,0)T(1,1)=(3,0). 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, T(u)=(2,−1)T(u)=(2,-1), jadi −2T(u)=(−4,2)-2T(u)=(-4,2). Selain itu, −2u=(−2,0)-2u=(-2,0) dan

T(−2u)=(21−11)(−20)=(−42).T(-2u)=\begin{pmatrix}2&1\\-1&1\end{pmatrix} \begin{pmatrix}-2\\0\end{pmatrix} =\begin{pmatrix}-4\\2\end{pmatrix}.

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, T(0)T(0) harus sama dengan nol: masukan apa pun yang dikalikan 00 harus membuat keluarannya juga dikalikan 00. Di sini, F(0)=A0+(0,2)=(0,2)≠(0,0)F(0)=A0+(0,2)=(0,2)\ne(0,0). Jadi, FF bukan linear. Vektor tambahan tersebut menggeser setiap keluaran sebesar (0,2)(0,2), 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 R4\mathbb{R}^4. Lapisan linear menghasilkan delapan koordinat, yaitu elemen R8\mathbb{R}^8. PyTorch mengaktifkan bias secara default, sehingga nn.Linear(4, 8) umumnya affine, bukan linear secara matematis. nn.ReLU() mempertahankan bentuk delapan koordinat, tetapi menerapkan t↦max⁡(0,t)t\mapsto\max(0,t) pada setiap koordinat, yaitu operasi nonlinear. Dengan bias=False, operasi pertama merupakan pemetaan linear R4→R8\mathbb{R}^4\to\mathbb{R}^8.

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 tt menjadi max⁡(0,t)\max(0,t). Jika penjumlahan dipertahankan, menerapkannya pada jumlah masukan harus sama dengan menjumlahkan nilai yang ditransformasikan secara terpisah. Namun ReLU⁡(−1+1)=ReLU⁡(0)=0\operatorname{ReLU}(-1+1)=\operatorname{ReLU}(0)=0, sedangkan ReLU⁡(−1)+ReLU⁡(1)=0+1=1\operatorname{ReLU}(-1)+\operatorname{ReLU}(1)=0+1=1. 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 T(x)=0T(x)=0 bersifat linear karena T(u+v)=0=0+0T(u+v)=0=0+0 dan T(cu)=0=cT(u)T(cu)=0=cT(u), tetapi semua masukan dipetakan ke keluaran yang sama sehingga tidak dapat dibalik. Pemeliharaan panjang juga tidak dijamin: S(x1,x2)=(2x1,x2)S(x_1,x_2)=(2x_1,x_2) linear, tetapi S(1,0)=(2,0)S(1,0)=(2,0) memiliki panjang 22, bukan 11. Linearitas menjelaskan perilaku kombinasi, bukan apakah panjang atau informasi tetap utuh.

Sumber

  1. Mathematics for Machine Learning book PDF, Section 2.7
  2. PyTorch documentation: torch.nn.Linear
  3. PyTorch documentation: torch.nn.ReLU